EffectiveEngineer-博客中文翻译-一-

EffectiveEngineer 博客中文翻译(一)

原文:EffectiveEngineer Blog

协议:CC BY-NC-SA 4.0

当心一个人的团队

原文:http://www.effectiveengineer.com/blog/beware-the-one-person-team

“软件开发是一项团队运动,”Brian Fitzpatrick 和 Ben Collins-Sussman 在他们的书 Team Geek 中写道。^(这两位谷歌人一起创建了公司的芝加哥工程办公室,他们的口号中包含了一个有价值但往往被忽视的观点:作为团队的一部分而不是单独工作,可以有效地提高产品质量和士气。)

许多工程师和经理都熟悉大型团队的风险,这个问题在弗雷德里克·布鲁克斯(Frederick Brooks)的《神话中的人月 》中有很好的描述。“人-月”或“人-月”是指一个人在一个月内可以完成的工作量。这是一个神话,因为一个需要一个人一年完成的软件项目(12 个人月)不可能简单地通过给项目配备 12 个工程师而将其时间线缩短到一个月。项目中每增加一名工程师都会导致与团队中其他人的沟通和协调开销。因此,完成一个项目的时间实际上不会随着人员的增加而线性减少。它甚至可能会增加,并且“给一个后期软件项目增加人力会使它变得更晚”的概念已经成为众所周知的布鲁克斯定律。

不幸的是,管理人员和技术领导有时会矫枉过正。他们试图通过为单人项目配备人员来最大化效率,因为这可能会将团队成员之间的通信开销降低到零。一些公司甚至在晋升过程中强调工程师必须是项目的第一所有者,这可以激励工程师独自完成项目,以增加他们的晋升机会。

现实是,就像在大型团队中工作会有成本一样,独自工作也会有许多风险和不利之处:

  • **单独工作会使早期和持续的设计反馈变得更加困难。**你越早得到反馈,你就越不会在错误的道路上浪费时间,你也就越早知道要纠正你的路线。这在软件开发中的一个地方是,如果有人实际上与你在同一个团队工作,并且与你共享相同的项目环境,那么他们就更容易审查你的代码并给出好的反馈。其他项目的人很难给你深思熟虑的代码评审。

  • 独自工作会减少学习。与第一点相关,有共同语境的人较少挑战你的想法。此外,因为一个项目需要更长的时间来完成,所以一个单独工作的人在相同的时间内,与一个团队中的其他人相比,有更少的机会从事不同的项目。

  • 在团队中工作会增加动力。同伴的压力是一种强大的力量。特别是如果你和你尊敬的、不想让你失望的人一起工作,帮助你的团队成功的动力可以压倒你在不在最佳状态时遇到的动力下降。

  • **在团队中工作增加了项目的总线因子。**一个项目的公车因素是指可以被公车撞上(或生病、离职、休产假等)的团队成员人数。)在项目完全停止之前。^(较高的总线系数可降低项目风险。它还有助于防止个人走晦涩难懂和没有记录的捷径,并迫使团队成员以更容易理解的方式传播知识和做事。)

  • 单独项目增加了项目的感知时间要求,这可能会令人沮丧。人们倾向于从过去的时间而不是投入的时间来考虑花在一个项目上的时间。即使你只是在一个项目上做了两个月的兼职,持续了半年,你和组织中的其他人也很难不认为整个项目进展缓慢。

  • 单独工作导致的项目进展缓慢会降低士气。 项目估算很难,项目往往会落后于进度。在单人项目中,一个摊位就可以让项目暂停,就像在只有一条收银线的杂货店中,一个有问题的客户或一件需要核对价格的商品可以让所有销售暂时停止一样。至少有一个额外的人在项目中,仍然有一些前进的动力。

  • 独自工作时,项目的低谷更令人沮丧。当有其他人一起分担痛苦时,你努力摆脱的沙坑、你需要努力完成的单调工作以及似乎无法理解的错误变得不那么令人疲惫,也更容易忍受。

  • 团队合作时,项目的高潮更能激励人。与队友一起庆祝成就是鼓舞士气的好方法。如果你独自工作,当你得到一些工作时,你会和谁击掌?

如果你不小心,一个人的项目会导致工程质量下降和士气低落。较低的士气也意味着较低的员工满意度,因此会影响员工的忠诚度。因此,确保两个人的最小团队规模是非常有益的。在任何项目中,都可能有单人任务,但是将这些任务按主题分组,以便团队成员共享相同的上下文,并且仍然为共同的目标而一起工作,可以减轻上述许多风险。

总会有比时间更多的事情要做,并且在正交项目中安排一些一个人的团队来在每件事情上取得一些进展是很有诱惑力的。但是考虑到一个人团队的风险,让你的优先事项序列化,以便工程师可以在项目上合作,可以让每个人都更好。

这篇博文改编自我在福布斯T3 上发表的一篇文章。

高效的工程师

原文:http://www.effectiveengineer.com/blog/

"一个全面的旅游,我们行业的集体智慧写得很清楚."

— Jack Heart,Asana 的工程经理

"埃德蒙成功地将他十年的工程经验提炼为清晰明了的最佳实践。"

——丹尼尔·彭,谷歌高级工程师

"一个全面的旅游,我们行业的集体智慧写得很清楚."

— Jack Heart,Asana 的工程经理

"埃德蒙成功地将他十年的工程经验提炼为清晰明了的最佳实践。"

——丹尼尔·彭,谷歌高级工程师

增长书本之外的技能

听顶级软件工程师的播客采访,观看大师级的视频,这些视频讲述的是以前只在研讨会上教授的技术。

书籍推荐

原文:http://www.effectiveengineer.com/blog/book-recommendations/

我教授工程师和技术领导者有效创造有意义的影响所需的工具。

我是 Quip 的早期工程师,在 Quora、Google 和 Ooyala 都领导过团队。

原文:http://www.effectiveengineer.com/blog/book/

我教授工程师和技术领导者有效创造有意义的影响所需的工具。

我是 Quip 的早期工程师,在 Quora、Google 和 Ooyala 都领导过团队。

为什么我停止了疯狂的工作时间,现在战略性地拖延以获得更好的结果

原文:http://www.effectiveengineer.com/blog/boost-creativity-by-procrastinating

在他 2016 年的书 原件 中,亚当·格兰特分享了一项关于拖延科学的新的违反直觉的研究。

大学校园里的一家便利店刚刚倒闭,格兰特和他的研究生让参与者写商业计划书,说明如何最好地利用新腾出的地方。在一组中,参与者立即开始任务,最后提出相当传统的想法——例如,开一家新的便利店。

在另一组中,参与者被要求稍微拖延一下。他们玩电脑游戏,如扫雷、接龙或纸牌游戏。当第二组最终开始这项任务时,他们实际上提出了更大胆、更有创意的想法,比如一个存储设施,甚至是一个辅导中心。在不知道提议属于哪一组的情况下,给想法的创造性打分的独立评分者认为拖延者的想法更有创造性 28%。

此外,研究人员还让一组参与者在之前玩游戏*,告诉他们商业提案任务,但游戏本身的精神刺激没有影响。这个小组提出的想法并不比那些不拖延的人更有创造性。*

事实证明,通过有策略地拖延,让一项任务在你的脑海中酝酿,你实际上可以产生更多创造性的想法。一项类似的发现在后续的行业研究中也得到了验证。这种违反直觉的学习给了我们一个强大的洞察力,让我们知道如何在更短的时间内更有效地工作。

为什么我们在洗澡时有最好的想法

你可能有过这样的经历:一整天都在埋头解决一个难题。但是你被难住了——有些事情你就是想不明白,这让你抓狂。那天晚上晚些时候,当你洗澡的时候——我发现了!一个创意的火花突然闪现在你的脑海里,你奇怪为什么自己没有早点想到。

这种经历在我身上发生过很多次。在 Ooyala 和 Quora 的早期创业时期,我每周工作 60-80 个小时,我记得“啊哈!”在漫长的散步或清新的淋浴中,工程问题奇迹般地得到解决的时刻。我甚至在整个工程团队中也看到过这种情况——每个人都如此专注于努力在截止日期前完成项目,以至于一名工程师花了圣诞节假期才找到喘息的机会来设计一个替代解决方案,使整个项目变得没有必要。

为什么会这样?大卫·洛克的 你的大脑在工作 提供了一个很好的解释。大脑就像一个舞台,演员在不同的时间进进出出,而大脑工作舞台上的空间是有限的。当我们全神贯注于一个问题时,我们所见所闻的一切和我们所有活跃的想法都涌上了舞台——几乎没有空间留给新的见解进入。

只有通过减少所有的精神活动——当你淋浴或长途散步时,以及当研究参与者用游戏拖延时,我们的潜意识才能有所帮助。已经有了这个问题,它可以利用大脑的工作阶段来寻找更有创造性的替代方案。^(这个过程类似于,对于一个视错觉,我们经常需要后退一步,理清思绪,重新设定我们的视角。)

关键见解:为自己安排停机时间

许多文化强调强烈的职业道德的重要性。过去 30 年来,我的移民父母一直在旧金山的唐人街每周工作 6 天,并一直推崇“成功的代价是努力工作”的心态。没有他们的努力,我肯定不会有今天。

但是随着我们的社会越来越倾向于知识工作(比如工程)——我们的影响越来越取决于我们是否在做正确的事情,而不是我们是否只是投入了时间——我们也有过度工作的风险。Glassdoor 的一项调查显示,在美国,普通员工只使用一半的假期,61%的人承认在休假时还在做一些工作。我们的停工期,我们策略性拖延的机会,以及随之而来的我们的创造力,都受到了打击。

因为你没有给自己足够的时间去真正思考替代方案和想法,在最近的项目上浪费了多少时间?你本可以用什么来代替,可能会产生更大的影响?这些都是很难回答的问题,但有一点是清楚的——如果你不给自己时间去思考它们,你就很难找到答案。

那么我们如何让格兰特在他的研究中描述的创造力和洞察力的火花更加一致呢?因为如果我们能够更系统地为创造力创造条件(或者至少增加它的概率),那么从长远来看,我们实际上可以更有效地结束并浪费更少的时间。

关键的观察是,当你处于巨大的时间压力下时,很难留出时间。当您的团队向您施压要求交付成果时,当您在工作中救火时,或者当您的客户等待更新时,每次都很容易想到,“我会多花一点时间来完成这项工作。”过度工作的成本很难衡量,即使战略性拖延的好处可以被科学地证明。

为自己创造创造力和成功条件的最佳方式是,当你没有面临工作压力时,建立健康的日常生活,这样即使你面临工作压力,这些习惯也会成为你的默认行为。这是违反直觉的——但是通过抽出时间定期从工作中脱离出来,你将避免精疲力尽,同时也提高了你的效率。

例如,您可能:

  • 在工作日期间,定期休息一下,无论是站起来伸展几分钟,出去走走,还是和同事聊天。番茄工作法和相关的应用程序可以很好地提醒你什么时候该休息了。
  • 轮流去不同的工作区——咖啡馆、图书馆、公园等。—给自己一个不同的视角,重新刺激思维。卡尔·纽波特使用这种策略,他称之为 集中回路 ,周期性地提升他的动力和注意力。
  • 冥想。越来越多的科学研究将冥想与减轻压力和积极的神经变化联系起来。我使用一个名为 Headspace 的引导冥想应用程序,并从今年开始每天早上冥想 15 分钟。
  • 工作前或工作后锻炼。我每天下班后都要跑 25 分钟,这是一种奇妙的精力恢复。
  • 睡觉前一小时离开你的电脑。在过去的几个月里,我已经执行了这个程序,除了腾出更多的时间阅读,它还有助于在一天结束时放松和平静我的心灵。

改变你的日常生活可能很难。但是一旦你连续几天开始做一项活动,重复它会变得更容易,因为它会逐渐形成习惯。过了一会儿,你开始想要做这个活动,这让你面临更具挑战性的时刻,因为其他事情也在争夺同样的时间和注意力。

找时间离开工作——不要让过度工作扼杀你的创造力。

以小块构建和部署代码以降低风险

原文:http://www.effectiveengineer.com/blog/build-and-deploy-code-in-small-chunks

2011 年末,该公司上市后不久,LinkedIn 暂停了整整两个月的功能开发。动机呢?工程团队需要重组其整个代码部署过程,以简化开发。在这之前,工程师会通过从主干(主分支)分叉出一个分支来开发一个新功能,在几天或几周的时间内构建和测试该功能,然后将大量代码更改合并回主干。然后,他们不得不修复令人痛苦的合并冲突,并重新测试他们所有的更改,以确保他们不会因为自功能开发开始以来任何新代码签入 trunk 而引入任何不兼容。

旧的基于分支的工作流速度慢且容易出错。为了在某一天发布代码,工程师会在发布前三周将他们的代码合并到主干中,以留出缓冲空间来消除任何缺陷和错误。即使有三周的时间,实际部署需要 7 个小时以上才能完成的情况并不少见,因为疯狂的合并会导致不稳定,并且经常需要最后一刻的补丁。

因此,LinkedIn 投资了将整个公司迁移到基于主干的开发所需的工具和流程,在那里所有工程师都致力于一个共享分支(主干)。这是一个谷歌和脸书等其他公司成功扩展的过程。^(工程师们不是在几天或几周内孤立地构建整个特性,而是致力于直接提交到主干中的更小的变化。)

这种增量方法的好处是巨大的:

  • 您被鼓励在更小的逻辑块上工作,这样您可以更快更容易地将代码提交到主分支中,而不会有痛苦的合并冲突。
  • “合并地狱”通常发生在一个版本消失之前,因为代码变更不再是建立在许多天或几周前的分叉之上。
  • 工程师的上下文切换显著下降——工程师在提交之前开发和测试他们的代码,并且在几天或几周后的未来合并点不必经历相同的过程。
  • 代码变更,因为它们更小,变得更容易审查——导致更高的代码质量。
  • 更多的工程师可以更早地提供有价值的反馈,因为代码被检入主分支。
  • 总体风险降低了,因为提交但未部署的代码更少了。

LinkedIn 的高级工程副总裁凯文·斯科特告诉《连线》杂志,“如果我们没有完成所有这些工作来改变我们构建软件的方式,我们就不可能建立代言,新的影响者产品,新版本的个人资料和移动领域正在发生的事情,我们对招聘人员产品的升级,以及正在推出的所有这些重大变化。”[1]增量的、基于主干的方法使他们能够将更多的时间集中在实际的功能工作上,而不是协调合并。

当我在 Quora 工作时,我们将这种增量方法发挥到了极致——我们使用连续部署,通过一系列测试的每个提交都会立即自动部署到产品中。对于我们的团队来说,一天部署 50 次以上的代码是很正常的。^(甚至在 Quip ,我现在工作的初创公司,我们一天要部署好几次软件。关注更小的和增量的变更不仅不会增加风险,还会使代码质量更高,并显著减少任何协调开销。以更小的块构建和部署代码意味着我们可以在用户面前快速轻松地验证更改。这反过来意味着我们更有可能成功。)

如何避免软件工程中代价最大的错误之一

原文:http://www.effectiveengineer.com/blog/cardinal-sin-of-software-engineering

几周前,一位年轻的创业工程师向我寻求建议。她的首席执行官给了她的团队 4 周的时间来重新编写网页产品。那是三个多月前的事了。该项目现在已经落后了 2 个月,团队每周加班 80 多个小时,还有一长串的错误。压力很大,没有发货的每一天都意味着他们羽翼未丰的创业公司的商业机会可能会落空。她该怎么办?

被一个落后于计划的重写项目夹在中间感觉糟透了。这是无法忽视的。我自己也经历过,在我职业生涯的早期。我参与的一个重写项目原定了 4 个月,但直到 9 个月后才发布。另一个持续了 9 个月,直到最终被放弃。非常有才华的工程师两次都工作了很长时间,有些人甚至累垮了。关于长时间重写最糟糕的部分之一是,当一个关键的新市场机会出现时,需要在被重写的代码之上构建,您必须做出艰难的选择:您是通过在新代码基础之上构建并等待新代码基础发布来推迟(并可能失去)机会,还是在旧代码基础之上构建,然后在新代码基础上再次重写?这两个选择都没有吸引力。

我参与的重写项目是痛苦的,但却是成长的经历。从那以后,我学会了每当有人提出一个雄心勃勃的重写项目时都要非常小心。我不是唯一有这种感觉的人。

谷歌文档的故事

今年早些时候,为了我即将出版的新书《有效的工程师,我采访了 Box 的工程副总裁、前谷歌应用程序主管萨姆·席莱斯。我问他的一个问题是,“你见过的工程团队犯的代价最大的错误是什么?”

他的回答是:“试图从头重写一些东西。这是最大的罪过。”

Schillace 于 2006 年加入谷歌,是初创公司收购的一部分。他的 4 人团队开发了 Writely,这个产品最终形成了 Google Docs 的基础。该团队已经用 C#构建并发布了一个原型,本打算作为一个实验,结果却发现它像病毒一样传播开来,拥有 50 万用户。当谷歌收购他们的初创公司时,他们的第一件事就是迁移到谷歌的基础设施,以利用其容量和扩展能力。每天都有成千上万的用户继续注册,团队正在花费精力修补他们知道无法扩展的代码库。

从我在谷歌的时候起,我就知道谷歌的软件栈不支持 C#。^(所以当 Schillace 告诉我这个大错误时,我自然不得不继续问,“当你们把 Writely 转换成 Google Docs 时,你们是不是必须从头开始重写所有的东西?”)

他看着我说,“我们确实做到了——尽管这里面有一个有趣的教训。”当他们开始重写时,他的一个联合创始人实际上在翻译代码的时候已经推动重写了部分代码。他们不喜欢用许多不同的方式构建的代码库。因此,在将应用程序翻译成 Java 的同时,为什么不同时重写它呢?为什么不花时间做一些改进呢?进行重大重写的诱惑非常大。谁想把代码库重写到一个中间状态,然后又不得不扔掉呢?

席勒不得不努力反对这种逻辑。最后,他说服团队为他们的重写设置一个非常有限的范围,并推迟其他改进。他们设定了一个明确的目标,即在谷歌的数据中心建立并运行网站,并且他们采取了最短的路径来实现这个目标。他们将该产品与 12 种不同的谷歌内部技术相结合。他们花了一周时间通过一系列正则表达式运行代码库,然后修复了数万到数十万个文件错误,以使代码能够编译。Java 和 C#的语义有时会有所不同——例如,C#中的字符串比较使用双等号(==)的逻辑比较,而 Java 检查引用是否相等——他们必须费力地访问每个实例并消除所有差异。

“那真的非常非常痛苦,”席勒告诉我。这是痛苦的缩影。12 周后,他们最终得到了他所描述的“古怪、怪异、残缺不全、看起来不对劲的代码库。”但这是一个在谷歌数据中心成功运行的代码库。他的团队创下了有史以来最快的将谷歌收购移植到谷歌基础设施的记录。如果他们将改进与重写捆绑在一起,他们肯定不会这么快地完成,并且项目可以很容易地扩大范围。如果像许多工程师一样,他们专注于“做正确的事情”并保持高质量的代码,他们可能会避免通过一堆正则表达式来破坏代码库。相反,他们做了必要的事情来尽快让 Writely 运行起来。

经验教训

这并不是说我们不应该重写或丢弃代码。我们总是在不完全了解软件将如何被使用或者最终需求是什么的情况下开发软件。MongoDB 的创始人 Eliot Horowitz 在一次会议上说,你应该认为代码的半衰期是 3-5 年,因此需要定期刷新。Google 技术如 MapReduce、Bigtable 等背后的架构师 Jeff Dean 说要将你的软件设计成 10 倍的规模,之后最好的设计看起来可能会大不相同。

当我们从头开始一次性重写整个代码库时,问题就出现了。我们往往严重低估成本,高估收益。

当我们没有经验时,我们会低估,因为我们不知道事情要花多长时间。我们没有足够的影响力或知识对激进的时间表说不。我们缺乏有效减少时间表差异的优先级和技术技能。我们对自己说,一个好的工程团队能够做到这一点。我们只需要足够努力,证明我们是优秀的。

当我们有经验时,我们会低估,部分原因是评估仍然很难,部分原因是我们对自己的能力过于自信。这是一种虚幻的优越感。问 100 个司机他们的驾驶能力,80%的人会认为自己在平均水平以上。(询问 100 名教师,68%的人认为自己的教学能力在前 25%。(同样的不平衡也出现在对智商、考试分数、记忆力、工作表现等的评估中。因此,难怪许多软件工程师认为截止日期失误只发生在平均水平或低于平均水平的团队中,并且他们自己不会受到困扰软件重写几十年的截止日期失误的影响。))

当重写的最后期限到来时,我们经常用乐观的信念欺骗自己,也许我们会更加努力地工作,找到弥补失去的时间的方法。我们说服自己别无选择。它可能会工作一两次,但作为一个长期战略,它是不可持续的。你不能冲刺到马拉松的终点。

那么最好的策略就是怀疑从头重写整个代码库的价值。当你不得不这样做的时候,就像 Schillace 所做的那样,你用一组有限的目标来处理它,以尽可能快地达到一种状态,在这种状态下你又一次取得了增量改进。如果你发现自己加入了其他软件工程师的行列,成为一个失败的重写项目的牺牲品,你需要进行一次诚实但困难的对话,讨论如何弥合你期望的业务目标和你低估的目标之间的差距——无论是通过削减功能,将项目重新设置为更现实的时间表,还是将项目视为沉没成本并完全放弃。这些策略都存在,但是没有一个像你最初设计重写项目那样有影响力。

职业建议

原文:http://www.effectiveengineer.com/blog/career-advice/

我教授工程师和技术领导者有效创造有意义的影响所需的工具。

我是 Quip 的早期工程师,在 Quora、Google 和 Ooyala 都领导过团队。

职业成长

原文:http://www.effectiveengineer.com/blog/career-growth/

我教授工程师和技术领导者有效创造有意义的影响所需的工具。

我是 Quip 的早期工程师,在 Quora、Google 和 Ooyala 都领导过团队。

沟通:团队成长的第一个牺牲品

原文:http://www.effectiveengineer.com/blog/communication-first-casualty-of-teams-growth

“随着团队和公司的成长,哪些流程和系统出现了故障,却没有得到足够快速的解决?”

这是我在最近一次关于高增长工程的专题讨论会上向 Dropbox、脸书、Stripe 和 Lyft 的领导们提出的问题。一个接一个,小组成员都以相同主题的不同形式做出回应:沟通通常是增长的第一受害者。随着团队的成长,分享想法和确保每个人都在同一页上变得越来越难。曾经有效的交流模式和惯例开始被打破。

当我与工程师一起工作以帮助他们更有效时,沟通失败的故事经常浮现。一个产品团队可能已经准备好向客户交付一个高优先级的特性,并决定向基础设施团队征求意见,结果却被某个人发现了阻碍发布的最后一分钟的延迟问题。或者一个平台团队可能会升级服务背后的代码,结果只会破坏那些依赖于旧 API 行为中未记录的假设的客户。或者,一个团队可能更新了一个配置文件,却不知道某个设置是由于历史原因而指定的,从而导致他们的产品出现大量错误或寻呼机工作警报。

这些事件看起来可能是孤立的,但它们都遵循一个共同的模式:沟通失误导致的知识差距损害了团队的执行能力。像小组中那些经历高速增长的公司——员工基数每年持续增长 2-3 倍——看到这种崩溃发生得更快。但同样的崩溃仍在其他公司以更缓慢的速度发生。结果从浪费的工程努力和增加的压力到降低的软件质量和不满意的客户。

为什么交流会中断

当我刚开始在 Quora、Ooyala 和 Quip 工作时,这些初创公司只有一二十名员工。我可以走到某人的办公桌前,有时甚至只是坐在椅子上转身,与队友讨论设计或做出决定。我知道团队中谁是产品或代码库的专家。此外,每个工程师都可以在头脑中掌握产品和代码的合理部分,这些知识提供了一个共享的环境,使得提问和讨论变得容易。在早期,通讯费用很低。

随着公司的成长,这种奢侈会逐渐消失,原因有二。

首先,你需要交流的总人数增加了。Frederick Brooks 在 神话中的人月、 中讨论了这种效应,他指出,人与人之间成对互动的数量与团队规模成二次方增长。^((这就是为什么在一个项目中增加更多的人员通常无助于项目更快完成的主要原因。)分享信息可能不再意味着只是在休息时给别人提个醒;实际上,这可能需要与一大群人进行正式的会面。)

第二,与给定的人交流的成本也增加了。随着团队的成长,对产品和代码库的平均熟悉程度会降低。新员工对过去的决策没有相同的历史背景,即使是更资深的团队成员也必须花费更多的精力来了解正在发生的一切。你与团队中其他人的融洽程度会降低,因此当问题出现时,你可能会犹豫是否非正式地提问。相反,你可以批量处理它们,只在预定的会议上问它们。

问题也变得更加难以表述:我需要知道这个项目的什么历史?这可能会影响哪些相关项目?谁真正了解这些事情?谁是对未来变化有强烈意见的利益相关者?

这些小小的不便累积起来。对话和讨论变得更加昂贵。因此,个人需要投入更多的时间进行沟通,这就减少了完成工作的时间。

人均效率的下降反过来又增加了扩大团队和雇佣更多人来实现业务目标的压力。雇佣更多的人意味着花更多的时间招聘、面试、听取候选人的汇报以及招募新的工程师——所有这些活动都非常重要,但它们也代表了不生产产品的时间。当然,一旦这些新员工加入,沟通成本的上升压力会进一步增加。

当我离开 Quora 和 Ooyala 时,它们都已经发展到 70 多名员工。像大多数其他公司一样,他们的规模,责任被分配给更多的人和更多的团队。虽然一些地方决策仍然可以很快做出,但较大的决策通常需要与多个利益相关方开会协调。

在较大的公司,沟通成本甚至会进一步上升。您可能需要协调多个团队的可用时间,以便在一个项目上取得进展。你可能不得不走到不同的办公楼去开会。或者你甚至可能不得不飞到不同的城市或与远程队友进行视频会议。

沟通摩擦的增加意味着,有时,本应发生的沟通——在公司规模较小时本应发生的沟通——没有发生。Pinterest 的工程主管迈克尔·洛普(Michael Lopp)在他的书《管理人类中做出了类似的观察,“在每个团队都不相同的组织规模中,过去有机发生的自然交叉授粉和沟通活动,允许完成文化和战略工作,允许做出重大决策,再也不会发生了。”

降低沟通成本

随着一家公司的雄心和机会的增长,它的团队也在成长,以迎接挑战。谷歌和脸书能够在一定范围和规模上解决小型创业公司无法解决的问题,部分原因是它们的规模和资源。

但是考虑到沟通的高成本,我们能做的任何降低这些成本的事情都是非常有效的。那么,我们该如何降低沟通成本呢?以下是一些策略:

  • 雇佣高绩效员工。如果你可以雇佣更少的工程师,而且每个人都是高绩效的,那么协调项目所需的沟通总量就会更低。每个人都可以花更多的时间来完成工作。你越能留住你的团队,同时仍有足够的资源来面对你的关键问题,每个工程师就越有效率。

  • ***投资入职。*就你发展团队而言,入职代表着一个强大的杠杆点,为新员工提供完成工作和做出正确决策所需的环境。确保每个新工程师都接触到核心抽象、开发工具、操作流程和业务目标,以便您可以在以后的决策和对话中重用这些内容。

  • ***投资工装,减少沟通摩擦。*谈到工具,速度和易用性很重要——交流越容易,使用它的人就越多。确保您有好的工具来共享状态更新、交换代码评审的反馈、跟踪 bug 和客户问题,以及交流其他信息。我个人现在很高兴能在 Quip 工作,因为我们正在开发一种新的生产力工具,它能让团队更容易(也更令人愉快)地交流和分享信息。我们为数千家公司提供服务,包括脸书、Pinterest、Stripe、Quora、New Relic、Instacart 和其他公司——如果你正在寻找好的通信工具,去看看吧。

  • 尽可能用异步交流代替面对面的会议。在一对一和面对面的会议中,一定时间的面对面交流是必要的,但会议日程经常安排得不明确。或者它们每周重复出现,交换的信息可以很容易地被与团队共享的协作文档所取代。异步讨论破坏性更小,开销更少,并且允许团队成员更长时间地专注于心流。将您的会议预留给高带宽讨论,在这种情况下,同步、面对面的对话非常重要。

  • ***利用轻量级和非正式的设计文档来共享信息。*写一份简短的设计文档是传达信息和征求反馈的好方法。它通常比召开信息会议花费更少的时间和精力,而且它是一条比在你完成某件事情后请求反馈更短的反馈途径。设计文档也最终成为未来团队成员的宝贵知识库。如果交流一个想法或计划可以是轻量级的,并且不涉及多人会议,人们就更有可能将分享信息作为他们工作流程的一个正常部分。

  • ***建立高度一致、松散耦合的团队文化。*雷德·哈斯汀斯认为这种哲学是网飞文化成功的关键因素之一。当策略和目标被很好地定义和理解时,你可以减少跨职能会议,并相信团队仍然保持一致。一种方法是确定每个人都应该关注的核心业务指标。当团队合作停止时,人们最终会花费精力与其他团队协商优先事项,试图让其他人解除对他们项目的阻碍,并跟踪进度。

在团队成长的每个阶段,更低的沟通成本意味着你在协调工作上花费的时间和精力更少,而实际完成工作的时间更多。不要让这些成本失控。

沟通

原文:http://www.effectiveengineer.com/blog/communication/

我教授工程师和技术领导者有效创造有意义的影响所需的工具。

我是 Quip 的早期工程师,在 Quora、Google 和 Ooyala 都领导过团队。

一个小团队如何通过每周运行多达 12 个用户测试来快速迭代

原文:http://www.effectiveengineer.com/blog/continuous-user-testing-at-quip

“电影时间!”

我和我的团队挤在沙发上观看最新一批用户测试我们产品的电影——实际上是视频。在 Quip 最近的产品重新设计的几个星期里,我们在 UserTesting 上进行测试,这是一个虚拟用户测试实验室,可以让你获得真实的人在测试你的产品时分享他们想法的视频。观看这些用户视频成了我们工作流程的核心部分,并迅速演变成我们最具影响力的活动之一。

我们的项目团队开发了一个健康的节奏,我们将基于一些假设迭代用户体验的一部分,将更改部署到生产中,然后在新版本上运行用户测试。在一个小时内,我们将收到来自真实人物的详细反馈,并观看 30 分钟长的视频,视频中人们理解了——或者没有理解——我们的变化。基于我们的学习,我们会头脑风暴解决方案,以消除摩擦和混乱的来源,并重复这个循环。在高峰期,我们在一周内运行了多达 12 次用户测试。

这种持续用户测试的技术,我们将积极地、迭代地运行用户测试来验证假设,在指导我们的重新设计中发挥了关键作用。我们会问自己,“下一个功能是什么,我们会从对用户的测试中学到最多?”然后我们会专注于这些领域。测试证实了有前景的设计选择,并暴露了人们感到困惑的领域——有时是令人惊讶的领域。最终,这项技术帮助我们自信地发布了一个重新设计的版本,以简化 Quip 的 live 文档的核心方面,并且该版本在很大程度上得到了积极的反馈。^(这种技术也能让其他团队受益。)

持续用户测试的力量

用户测试绝不是一个新概念。当我在谷歌研究搜索质量时,我们的团队会定期在可用性实验室进行测试。在一个典型的测试中,研究人员将指导一名有偿志愿者完成一系列任务,团队可以通过双向镜进行观察,也可以在事后观看录制的视频。当参与者的目光在页面上跳跃时,眼球跟踪激光会跟随参与者的目光,稍后将这些光学数据叠加在记录的屏幕上,可以提供关于人们将注意力集中在哪里的宝贵见解。有一次,我们没有进行实验室测试,而是开车去志愿者家里观察人们在自然环境中如何使用谷歌。

这些用户测试经常让我们吃惊。谁会想到网上做调研的时候有人把搜索结果复制粘贴到 Word 文档里打印出来?这是任何团队讨论都无法揭示的洞察力。虽然有用,但是计划和运行测试的开销通常意味着用户测试很少成为团队开发工作流程的一个组成部分。许多团队在已经投入了大量的工程和设计工作之后,才进行测试。

在谷歌之外,实际上持续运行用户测试作为其工作流程一部分的团队往往是一些杂乱无章、用户数量少的团队——这是你在早期创业团队中会发现的特征。例如,当阿克谢·科塔里和安基特·古普塔最初开发 Pulse News reader 应用程序(2013 年被 LinkedIn 以 9000 万美元收购)时,他们会在帕洛阿尔托的一家咖啡馆扎营,邀请访客在 iPad 上测试新的原型。基于人们遇到的可用性问题,他们会每天进行数百次小的迭代——从修正交互模式到调整按钮大小。几周内,人们从称它为“垃圾”到询问它是否预装在 iPad 上。

虚拟可用性实验室的出现和获得结果的速度改变了这种动态,使更多的团队可以访问这些类型的工作流。紧密的反馈循环使团队能够比更传统的构建和启动方法更增量地迭代,并且在适用的情况下,比运行 A/B 测试更快。

持续的用户测试还有另外两个重要的好处。首先,它提供了一个强大的渠道来快速验证和建立信心,相信你正朝着正确的方向前进。基于视觉和直觉推动产品前进是很重要的,但是我们经常沉浸在自己的思维模式中,以至于我们可能会与不太熟悉产品的人失去联系。从真实用户那里收集反馈有助于我们的现实。

第二,来自真实用户的数据的说服力有助于解决讨论。我们有多少次花了几个小时对各种方法的假设优势进行激烈的设计讨论,结果只是基于一些不一定得到每个人认可的论点而前进?我们经常花费精力争论,因为我们没有足够的数据,持续的用户测试给了我们另一个收集数据的工具。这意味着我们可以专注于结果,发布实际有效的内容,而不是假设有效的内容。

何时利用持续的用户测试

持续的用户测试不是免费的——花在进行用户测试和从用户测试中学习的时间并不是花在编写软件上的时间。但是,当我们考虑到我们花费在调整和完善那些从未得到我们想要的采用的功能上的所有时间时,很明显,我们越早进行过程修正,我们浪费的努力就越少,我们创造的影响就越大。那么什么时候使用这种技术有意义呢?

一个好的起点是 A/B 测试的不足之处。Etsy 的前首席工程师 Dan McKinley 分享了一些团队如何成功地利用持续实验来推动产品开发。^(他们将大的产品变化分解成一系列假设(例如,“临时用户不明白他们可以使用搜索框旁边的下拉菜单来搜索不同的市场”),然后他们用小的、可测量的变化的 A/B 测试来验证(例如,“在下拉菜单之外出现手工和复古物品会增加可发现性吗?”).)

我们在 Quip 也用持续的实验来改变产品,我以前在 Quora 用它来指导发展项目。当期望的影响可以量化且易于衡量时,这种策略非常有效。但有时我们试图理解的相互作用过于复杂,无法提炼成一个单一的数字。或者测量它可能会花费大量的时间和流量来检测任何有意义的差异。新用户在短暂参观后对核心产品了解多少?完成一项共同任务所需的交互有多明显?用 A/B 测试很难得到这些问题的深层答案。

在这些情况下,持续的用户测试会有所帮助。通过观察用户在完成一系列任务时成功和失败的地方,我们可以更深入地了解用户行为,而这是无法通过高级指标捕捉到的。这种理解可以验证你的直觉和你的假设,以及表面意想不到的摩擦来源。

用户不需要大量的上下文来理解发生了什么的交互通常更适合快速用户测试。对于 Quip 更复杂的高级用户功能,我们更依赖于内部的 dogfooding 或与客户的 beta 测试——我们正在建立一种新的生产力工具,因此我们将迭代地向员工或客户部署更改,以便我们可以收集更多关于什么可行什么不可行的数据。

我们花了很多时间观察用户理解和使用 Quip,这给我们的重新设计带来了一定程度的信心。我们尝试的许多想法都没有成功,但是持续的用户测试让我们关注并发布那些成功的想法。

特别感谢我的队友和观影伙伴内特·博特威克和贝琳达·顾。

你为什么这么做?!?调试用户行为的工程师指南

原文:http://www.effectiveengineer.com/blog/debugging-user-behavior

“为什么我的代码没有按照我的预期运行?”

作为软件工程师,这是我们每天问自己的问题,我们已经建立了一套技术来帮助我们在出现问题时调试代码。像断点跟踪这样的工具可以让我们检查运行系统的状态。断言打印语句使我们能够验证我们对程序行为的假设。最小的可重复测试用例排除干扰,这样我们就可以将注意力集中到错误系统的相关部分。如果没有这些技术,日常开发将会显著变慢。

然而,当要回答一个类似的问题时——“为什么我的用户没有做我期望的事情?”—我们中的许多人经常把我们所知道的调试代码行为的最佳实践扔到窗外。

我们可能会获得在第一次使用后就放弃产品的新用户——并努力像检查我们的代码一样检查他们的心态。我们可能会无休止地争论如何设计一个新功能,而不会验证我们提出的设计背后的基本假设。或者,我们可能会花费数周或数月的时间在功能层上添加新的功能,却从未在实际用户身上测试过最小版本,以查看他们发现哪些部分是相关的。

幸运的是,不一定非要这样。我们用来调试代码的心态和工具可以帮助我们揭开用户行为的神秘面纱,更有效地构建产品。

像调试代码一样调试用户的行为

很多年前,我参加了一个由 Joshua Bloch 在 Google 举办的关于 API 设计的技术讲座,他是 Java collections API 的首席架构师,也是《有效的 Java》的作者。当你为成千上万的开发人员设计界面时,错误的 API 可能会付出很高的代价。这意味着更多的上升时间和更多的错误使用。另一方面,一个好的设计是容易理解和难以误用的。

在编写任何代码之前,Bloch 解释说,他会用一两页纸写好接口,然后实际调查其他工程师(亲自或在线)如何使用 API。这是他的最小可行产品,或 MVP——一个让他不用写任何代码就能调试 API 设计中任何问题的工具。

我们为用户构建的最小可行产品类似于我们为代码构建的最小可重复测试用例。对于一个最小的可重复测试用例,我们问这样一个问题:展示我们所关心的错误行为的最小代码段是什么?有了 MVP,我们会问:我们可以构建什么样的最小功能单元来验证用户的行为是否符合我们的预期?这两种技术实现了相似的目标:它们帮助我们将精力和努力集中在真正重要的事情上。

学会读懂用户的想法

此外,正如检查程序状态对调试代码至关重要一样,在我们调试用户行为时,理解用户脑子里在想什么也很重要。

当产品有大量可用流量时,分析 web 和点击日志可能足以调试用户的行为。例如,Etsy 使用连续实验的过程来设计他们的产品。^(例如,当重新设计产品页面时,他们会制定一个假设,比如“如果用户在产品页面上看到相关产品的图片,他们会购买更多的产品。”他们将通过运行 A/B 测试来验证这一假设,例如向一部分用户展示相关产品的横幅。他们将利用从测试中学习到的行为来塑造下一次的设计。)

当一个清晰的指标——比如点击率、注册率或购买率——定义成功时,以这种方式运行 A/B 测试是一种强大的技术。当我们没有足够大的样本量来进行统计显著性测试时,或者当我们想要探索用户行为的更深层次模式时,另一个强大的方法是研究会话日志。通过在日志中组合来自单个用户的所有行为数据,我们可以为用户会话构建一个按时间排序的事件副本。研究用户如何浏览产品,以及她采取了什么行动,可以描绘出用户意图的详细画像,而从 A/B 测试中得出的汇总数字通常无法做到这一点。例如,谷歌使用像会话查看器这样的工具来研究和可视化用户如何完成搜索相关的任务。

有时,甚至会话日志也不能提供我们需要的深度洞察力。在这些情况下,用户测试会很有用。例如,在 Quip,即使我们正在迭代一个新产品或新功能,我们也会积极地测试我们计划在实际用户身上做出的新变化。我们可能会让参与的客户或早期采用者测试一个功能,然后在文档中收集他们的反馈或亲自与他们交谈。或者,我们可以使用像 usertesting.com 这样的服务向在线用户分发任务脚本,以及他们使用产品和解释他们思维过程的详细视频,通常在一个小时之内。通过使用户测试成为产品开发过程的一个常规部分,我们建立了关于哪些设计可行,哪些设计失败,以及我们应该在哪些方面投入精力的信心。

调试用户行为的工具往往就在我们面前。如果不测试更小的代码以确保它们能够独立工作,我们永远不会编写成千上万行代码,那么我们为什么要使用这种低效的方法来构建产品呢?积极地寻找方法,将调试代码时使用的心态应用于调试用户行为。

部署

原文:http://www.effectiveengineer.com/blog/deployment/

我教授工程师和技术领导者有效创造有意义的影响所需的工具。

我是 Quip 的早期工程师,在 Quora、Google 和 Ooyala 都领导过团队。

不要成为瓶颈

原文:http://www.effectiveengineer.com/blog/dont-be-the-bottleneck

在你的团队中,有没有一个工程师,人们总是向他咨询某些类别的问题?也许他是编写大量代码的团队中的高级工程师。或者,她可能是技术主管或经理,参与过大多数设计讨论,知道许多项目的历史原理。或者,他可能是负责特定系统的唯一工程师,拥有多年的操作经验。

很多时候,我们渴望成为关键工程师,人们带着疑问和问题去找他。我们将角色作为我们为团队提供价值的指标。在谷歌这样的公司,这种心态的一部分甚至被写入了晋升程序:证明自己能够成为负责关键项目领域的唯一工程师的初级工程师,通常更有可能获得晋升。

乍一看,这种渴望是有道理的。根据供求关系,工程师的相关技能和知识越少,他或她对团队就越有价值。因此,瞄准成为大量项目的关键人物似乎是明智的,对吗?

不幸的是,这种稀缺心态只能带我们走这么远。

你对时间的控制推动了你的影响力

当你进入太多项目的关键路径时,这种心态的问题就出现了,你成为人们为越来越多的问题咨询的唯一的人。如果一个高优先级的 bug 被归档,你可能是第一个得到通知的人。如果产品经理有一个关于特性如何工作的问题,你可能是唯一能够回答的人。如果另一个工程师需要关于某个特定系统的建议,你可能是他或她唯一可以咨询的人。当你成为这种情况下的第一道或唯一一道防线时,你就失去了利用时间的灵活性。你的时间表受到外部因素的支配,这限制了你能够创造的价值和影响。

这个问题并不罕见,而且随着年龄的增长,这个问题会变得更加尖锐。一位硅谷初创公司的早期工程师告诉我,他多年的经验让他非常熟悉公司的大部分网络堆栈。许多人认为他的知识和经验会让他选择公司的高影响力项目。相反,他不断被其他团队咨询,并被要求帮助扑灭紧急火灾的请求轰炸。因此,尽管他热爱这家公司和他的工作,但他觉得自己有精疲力竭的风险。他在公司的经历已经成为一种诅咒,他已经成为许多项目的限制因素。

另一位工程师是谷歌的技术主管,她就如何最好地帮助团队中给她发送代码评审的初级成员寻求建议。她知道,尽早快速地提供反馈可能会产生很大的影响——更快地解决糟糕的设计选择意味着她的队友将会在错误的道路上浪费更少的时间。鉴于她的经验,她也知道自己最适合提供有价值的反馈。但与此同时,她作为主要代码审查者的角色使她无法将时间花在领导团队的其他方面:确保她的项目按计划进行,检查她的队友是否在正确的优先事项上工作,以及消除他们路上的任何障碍。她的资历使她成了瓶颈。

任何时候,如果你是唯一一个了解某个系统如何运行的工程师,或者是唯一一个负责某个项目领域的工程师,你就会产生隐性税收。你在线帮助解决未来的问题,这些问题依赖于你的专业技能或知识。这种责任通常是软件开发的必要部分——每次,你自己构建新的东西时,你将开始成为唯一一个了解该项目的工程师。有时你可能会从这种经历中学习或享受,以至于你想要承担责任。这很好。

但是随着时间的推移,如果你头脑中的知识没有与团队分享,它就会变成一种负担。如果一个令人兴奋的新项目开始了,而你认为它具有很高的影响力,该怎么办?如果你想从事不同的工作,学习新的东西,该怎么办?如果您所有的时间都花在应对各种项目中不断增加的错误、客户请求和其他紧急问题上,您将没有任何时间专注于其他高杠杆任务。你所能创造的价值和影响将开始趋于平稳。

那么,我们如何防止自己陷入这样的困境呢?

将自己从关键路径上移开

与我交谈过的两位工程师,如果他们把一些责任委派给他们的队友,他们会过得更好。最终,这也是我建议他们去做的。

选择如何利用时间的能力对于提高你的长期影响力至关重要。您可以通过主动采取措施来减少您是唯一一个对某个软件有操作知识的工程师的情况,从而增加您的灵活性。减少以你为中心的辐射式互动模式的安排,在这种模式下,每个人都必须通过你来做决定。

如果你遇到的瓶颈是技术性的,尽可能自动化。例如,您可能:

  • 为客户支持团队构建一个内部工具,以便他们可以解决最常见的问题,而无需您或工程团队其他成员的任何干预。
  • 编写工具来自动修复常见的操作问题,这样您和其他人都不需要花费时间来解决这些问题。例如,如果您每周都花时间进行相同的动作来维护您的服务器,您可能会从自动化一些机制中受益。此外,将流程显式编码到签入存储库的脚本中,使您离拥有能够加速和操作系统的其他人更近了一步。

另一方面,如果你成为瓶颈的主要原因是你和团队其他成员之间的知识差距,那就花时间弥补这个差距。使用以下策略与更多人分享所有权:

  • 学会授权并信任你的队友。这可能是一个第 22 条军规——如果你以前没有把工作委派给某个特定的队友,你可能不信任他们能完成工作。如果你不相信他们能完成工作,你就不会把工作委派给他们。从小处着手,树立信心。
  • 评审代码的目标是教会其他工程师正确的思维方式和原则,让他们自己把事情做好。
  • 撰写设计文档,进行技术交流,分享知识。在我目前的初创公司 Quip,我们为几乎每个新功能或实质性变化编写简短的设计文档,并记录如何使用我们已经建立的各种系统的运营花絮。这些知识让任何人都更容易投入到他们不熟悉的项目和系统中。
  • 避免单人团队。通过和其他人一起做一个项目,你可以确保有另外一个人可以帮助分担解决未来问题的负担。
  • 指导和训练你周围的人。例如,在 Quora,我们投入了大量的工程资源来建立一个入职和指导计划,以便新的工程师可以快速提升核心工程构建模块。

当工程师进入大量项目的关键路径时,负债变成了太多的负担,他们有时会筋疲力尽。或者他们觉得唯一能赢回时间的方法就是换团队甚至换公司。

不要让这种事发生在你身上。赢回你时间的所有权。

**该你了:**你今天遇到瓶颈的情况是什么,你可以采取什么步骤来开始将自己从关键路径中移除?请在下面的评论中分享你的答案。

感谢陈晓阅读本文初稿。

不要让优柔寡断为你做选择

原文:http://www.effectiveengineer.com/blog/dont-let-indecision-make-choices-for-you

任何有理智的人都不会羡慕德怀特·艾森豪威尔将军在 1944 年 6 月 4 日晚上的处境。160,000 名士兵等待他的命令,向诺曼底海滩进发,这将是历史上最大规模的两栖攻击。经过几个月的精心策划,军事战略家们已经确定了一个三天的窗口,这将最大限度地提高 D 日成功的机会,但他们没有计划到晚上的暴风雨天气和汹涌的海浪。唯一的希望是预报说雨可能会在几个小时后停止,并带来 36 小时的好天气。

他的顾问们在如何进行的问题上意见不一,这取决于艾森豪威尔。在恶劣的天气条件下发动入侵可能会导致灾难。但是,虽然等待更确定的天气可能很诱人,但犹豫不决和拖延也有其代价:敌人防御更强,伤亡增加,赢得战斗的可能性降低。最终,艾森豪威尔在天气转好之前开了绿灯。1944 年 6 月至 8 月的诺曼底战役最终导致盟军将西欧从纳粹德国手中解放出来,并标志着第二次世界大战结束的开始。

关键时刻的犹豫不决,甚至是等待太久,都可能让盟军输掉这场战争。

犹豫不决的代价

我们都熟悉优柔寡断。我们盯着菜单看了几分钟,在牛肉里脊和烤比目鱼之间争论了太长时间,在网上搜索了几个小时的航班,为如果我们明天再次搜索航班价格是否会下降而苦恼,或者在我们的工作上逗留了太长时间,想知道是否是时候尝试新的东西了。我们害怕承诺,害怕做出可能会后悔的糟糕决定,所以我们更愿意尽可能长时间地保留选择权。

然而,优柔寡断可能比糟糕的决定更糟糕。至少有了一个糟糕的决定,我们可以从错误中吸取教训,取得进步。犹豫不决会让我们陷入困境,既不能前进也不能后退。

有时候,我们会理性地等待一个收集更多数据的决定。我们有一个心理框架来决定如何做决定,并采取积极的步骤来告知这个决定。但是在很多犹豫不决的情况下,额外的时间流逝并不能提供更多的信息来帮助我们做出决定。时间会消耗我们的精神能量,分散我们对其他重要活动的注意力,如果我们征求他人的意见,也会消耗他们的时间和精力。而且,如果在所有的精神投入和拖延之后,我们没有比以前更好的立场来做决定,那么我们只是在没有好的理由的情况下耗尽了自己。

在这种情况下,我们真的只是希望问题会自己解决并消失。我们希望我们与同事之间的冲突能够以某种方式解决,因为他可能会被调到另一个团队,或者因为他神奇地开始理解我们的方式。我们希望有人能告诉我们正确的答案,这样我们就不用处理它了。我们希望希望我们做决定的人忘记它,让我们免于做出可能会后悔的选择。

希望不是一种策略

早在 2008 年,当时的参议员巴拉克·奥巴马(Barack Obama)参加了一场名为“希望与变革”的总统竞选,在美国人中间引起了强烈共鸣。然而,经济学家兼院长本杰明·奥拉·阿坎德(Benjamin Ola Akande)在给奥巴马总统的一封公开信中提出了一项批评,即复兴我们的国家和经济所需的领导力需要建立在比希望更强大、更具体的东西之上:

“事实仍然是,希望不会减少房屋止赎。希望并不能阻止衰退。希望不能创造就业。希望不会阻止银行灾难性的倒闭。希望不是策略。”

希望既不是有效也不是可靠的策略。事实上,这有时是一种逃避。我们害怕会做出让自己后悔的糟糕决定,所以我们一直等到选择权到期,没有选择余地,或者等到有人替我们做出选择。我们被束缚住手脚,然后我们对自己合理化,任何负面后果都不是我们的错,我们不应该受到责备,因为我们没有打电话。

现在的情况是,我们已经屈从于扮演一个受害者的角色,一个无权无势的人,一个受制于她无法控制的环境力量的人。在这个角色中,我们保护自己免受责备,但我们也丧失了选择的自由和抱怨的权利。弗雷德·考夫曼在《有意识的商业》中认为,为了真正掌握自己的命运,我们需要摆脱受害者的角色,转而扮演玩家的角色:

“在任何情况下,玩家都尽力按照自己的价值观做出回应。玩家感到安全,但不是出于天真地相信一切都会好起来。她内心的平静来自于她知道,无论面临怎样的挑战,她都有无条件的能力去应对。”

对我们的决定负责是解决优柔寡断的第一步。我们不太可能总是做出正确的决定,但只要我们承担责任,我们就可以纠正我们遇到的许多错误,并学会下次做出更好的选择。决策,像其他技能一样,是我们通过练习变得更好的东西,而不是让别人替我们做决定。

曾执教 49 人队三次夺得超级碗的比尔·沃尔什在 中认为,比分会自己决定 强有力的领导者需要“投入、爆发、恢复”这种领导哲学意味着承诺一个攻击计划,执行它,然后对结果做出明智的反应。这一理念不仅适用于 NFL 教练,也适用于初创公司创始人、经理和团队领导。这是一种哲学,可以帮助我们作为个人面对我们必须做出的日常选择。

脸书技术讲座:如何有效地将你的工程成果转化为影响力

原文:http://www.effectiveengineer.com/blog/effective-engineer-talk-at-facebook

脸书最近月活跃用户达到 20 亿。(这是一个完全令人兴奋的里程碑,我将他们如此快速增长的能力归功于他们不到五年前达到 10 亿用户大关(——归功于他们建立的强大的工程文化。))

我非常欣赏他们工程文化的一部分,那就是他们对影响的不懈关注。关注影响力是如此重要,以至于它实际上是该公司的五个核心价值观之一。^(这种价值观与高效工程师使用的杠杆框架紧密相连,我在我的博客和我的书《高效工程师中广泛讨论了这一点。)

我很高兴最近被脸书的工程团队邀请到他们的门洛帕克总部做一次内部技术演讲,作为他们“有效工程”系列演讲的一部分。他们通常不对外分享这些演讲的视频,所以我更高兴能与你们分享我的演讲视频。

在这次演讲中,我把杠杆比作思考如何以最有效的方式关注影响力的一面镜子。你会听到谷歌、脸书、Twitter、Square、Box、Airbnb 和 Instagram 等顶级公司的工程领导者讲述他们学到的见解和犯下的代价高昂的错误。您将感受到杠杆作用的统一框架如何让您识别产生不成比例的高影响的活动。

我不能分享演讲的问答部分,因为它触及了脸书内部的话题,但幸运的是我们可以坚持自己的观点!请在下面的评论中提出你的问题。

享受谈话!

*https://www.youtube.com/embed/xmoqS2Jw3h0

视频*

提升您的工程影响力

如果你想更深入地了解演讲中讨论的概念,今天就去拿一本你自己的 【高效工程师 】。这是脸书、Twitter、Google、Dropbox、box 等公司的工程副总裁、经理和高级工程师推荐的一本手册。

另外,现在您还可以获得:

  • 顶级科技公司工程领导者的深度播客访谈;
  • 战略、清单和问题的战术工具包,帮助您在最常见的工程活动中脱颖而出;
  • 我只在谷歌、Pinterest 和其他公司的研讨会上教授过的强大技术的高级掌握视频;
  • 还有更多。

你还在等什么?掌握伟大的工程师用来扩大影响力的策略和技术

Google Tech Talk:提高工程影响力的成熟技术

原文:http://www.effectiveengineer.com/blog/effective-engineer-talk-at-google

到目前为止,我在谷歌工作最喜欢的部分之一是有机会参加行业资深人士的技术讲座。像约书亚·布洛赫(数百万软件开发人员使用的 Java collections API 背后的首席架构师)和吉多·范·罗苏姆(Python 的发明者)这样的人会与其他谷歌人分享他们多年来关于如何设计和构建优秀软件的见解和专业知识。这些讲座教会了我许多关于如何有效地扩展工程团队的课程,这些课程也影响了我对在我工作过的公司中打造优秀产品和团队的想法。

所以,当我最近被谷歌作者项目邀请回到谷歌校园,分享我多年来学到的一些故事和教训时,我非常高兴有机会回馈这个社区。谷歌很有礼貌地录下了这个演讲,所以我也很高兴能和你们分享这个视频。

在这个演讲中,你会学到一个框架,高效的工程师用这个框架来评估如何以及在哪里花费他们的时间,这个框架是我花了每周工作 70-80 小时才弄明白的。您还可以在脸书、Twitter、Dropbox、Square 等网站深入了解工程领导者的故事和经验。是什么将他们共事过的最有效率的工程师与其他人区分开来?在过去的一年里,他们学到的最有价值的一课是什么?哪些投资为他们带来了最高的回报?

观看演讲找出答案,并在评论中分享哪些教训最能引起你的共鸣。

https://www.youtube.com/embed/BnIz7H5ruy0

视频

让您的工程更上一层楼

如果你想更深入地了解演讲中讨论的概念,今天就去买一本《高效工程师 》吧。这是脸书、Twitter、Google、Dropbox、box 等公司的工程副总裁、经理和高级工程师推荐的一本手册。

另外,现在你还可以获得顶级科技公司工程领导者的深度播客采访;战略、清单和问题的战术工具包,帮助您在最常见的工程活动中脱颖而出;个人指导;还有更多。

你还在等什么?掌握伟大的工程师用来扩大影响力的策略和技术。

斯坦福技术讲座杠杆的力量:Quip 的小型工程团队如何在 8 种不同平台上构建产品

原文:http://www.effectiveengineer.com/blog/effective-engineer-talk-at-stanford-acm

工程领导者在谷歌、脸书、Dropbox、Airbnb、Stripe 和 Instagram 等顶级科技公司进行了哪些投资,为他们的团队提供了最高的回报?

是什么让 Quip 的工程团队在只有 13 名工程师的情况下将生产力工具运送到 8 个不同的平台?

最有效的工程师如何使他们的努力、团队和职业生涯更加成功?

最近,我有机会在斯坦福校园的一次演讲中分享了这些问题背后的一些故事和见解。斯坦福 ACM 组织邀请我与该地区的大学生和工程师交谈。尽管现场活动被超额预定,陈俊澎还是很有礼貌地录下了这个演讲,所以我很高兴能和你们分享这个视频。

在这个演讲中,你会学到有效的工程师用来最大化他们的影响的关键框架——这个框架花了我通过反复试验来学习。你会听到 Quip 的早期冒险,该公司的文档、电子表格、任务列表和团队聊天产品为数千家公司提供支持,包括脸书、Pinterest、Quora、Stripe、Salesforce、Instagram 等。这是一个很好的案例研究,展示了您也可以在团队中使用的强大技术。

在我两年写作高效工程师的过程中,你会听到我采访的副总裁、董事、经理和其他领导的故事。

享受这次演讲,并让我知道哪些教训最能引起你自身经历的共鸣。

https://www.youtube.com/embed/SclqaNqqAV0

视频

提升您的工程影响力

如果你想更深入地了解演讲中讨论的概念,今天就去拿一本你自己的《高效工程师》吧。这是脸书、Twitter、Google、Dropbox、box 等公司的工程副总裁、经理和高级工程师推荐的一本手册。

另外,现在您还可以获得:

  • 顶级科技公司工程领导者的深度播客访谈;
  • 战略、清单和问题的战术工具包,帮助您在最常见的工程活动中脱颖而出;
  • 我只在谷歌、Pinterest 和其他公司的研讨会上教授过的强大技术的高级掌握视频;
  • 还有更多。

你还在等什么?掌握伟大的工程师用来扩大影响力的策略和技术

有效性

原文:http://www.effectiveengineer.com/blog/effectiveness/

我教授工程师和技术领导者有效创造有意义的影响所需的工具。

我是 Quip 的早期工程师,在 Quora、Google 和 Ooyala 都领导过团队。

工程最佳实践

原文:http://www.effectiveengineer.com/blog/engineering-best-practices/

我教授工程师和技术领导者有效创造有意义的影响所需的工具。

我是 Quip 的早期工程师,在 Quora、Google 和 Ooyala 都领导过团队。

工程文化

原文:http://www.effectiveengineer.com/blog/engineering-culture/

我教授工程师和技术领导者有效创造有意义的影响所需的工具。

我是 Quip 的早期工程师,在 Quora、Google 和 Ooyala 都领导过团队。

工程

原文:http://www.effectiveengineer.com/blog/engineering/

我教授工程师和技术领导者有效创造有意义的影响所需的工具。

我是 Quip 的早期工程师,在 Quora、Google 和 Ooyala 都领导过团队。

决定在哪里工作时要考虑的一件重要事情是

原文:http://www.effectiveengineer.com/blog/established-company-vs-promising-startup

最近,一位年轻的工程师就他正在考虑的几份工作向他寻求建议。他应该接受谷歌或脸书这样的老牌科技公司的软件工程师职位吗?还是在一家快速发展的中型公司?或者甚至是在一个小而有前途的创业公司?更一般地说——人们在选择工作机会时应该考虑什么?

虽然金钱和位置可能并经常发挥作用,但我向我指导的人推荐的一件重要事情是通过选择他们能学到最多东西的工作环境来优化学习(无论是学习如何编写更好的代码、如何构建产品、如何领导团队还是其他)。这句话对新毕业的大学生来说尤其正确。你可能会工作一段时间,为自己建立正确的基础会在未来打开更多的职业机会。

然而,即使是学习,也有许多维度,你学习的最佳地点部分取决于地点,部分取决于你自己的偏好和舒适程度。在这篇文章中,我们讨论了学习的十个关键方面。

1.公司和团队成长

当雪莉·桑德伯格正在决定是否加入谷歌时,首席执行官埃里克·施米特给了她一条宝贵的建议:“如果你被提供了一个火箭飞船的座位,不要问是什么座位。就上吧。”^(将增长作为职业生涯北极星的建议对她大有裨益,并为她日后成为脸书的首席运营官创造了机会。)

更多的增长意味着更多的挑战和更多的责任。在快速发展的公司,需要解决的问题往往比可用的资源要多,这意味着你有足够的机会去学习和产生重大影响。这种增长也意味着更容易吸引人才,从而更容易建立一支强大的团队来实现更大的增长。另一方面,缺乏增长会导致停滞和政治,员工可能会因为机会有限而无法分享而争吵。寻找和留住人才变得更加困难。

牢记桑德伯格的建议意味着,根据你能找到的任何增长指标——每周活跃用户增长率、年度经常性收入增长率、员工总数增长率或一些核心业务指标——跟踪正在增长的公司。公司通常会保护这些数字,所以你可能要努力找到它们。即使在一个更成熟的公司中,不同的团队和计划也会根据他们在公司中的优先级以不同的速度增长。找那些正在成长的来提高你的学习速度。

2.培训和指导

一些老牌公司已经投入了大量资源来为新工程师编写培训材料。例如,谷歌已经编写了名为 codelabs 的文档,解释核心抽象如何使用以及它们为什么存在,为不同的编程语言编写最佳实践的指南,以及解释基础设施主要部分背后的原理和细节的设计文档。硕士毕业后,我就加入了谷歌的搜索质量团队,在最初的六个月里,我吸收了大量的资料。如果你有好奇心和学习的动力,在更成熟的科技公司里,通常会有一个巨大的知识宝库向你开放。

较小的公司不会有相同数量的资源,但即使是知道尽快增加新员工的价值的初创公司也会投资创造类似的资源。例如,当我在 Quora 工作时,我们编写了自己的代码实验室来帮助新员工学习关键的抽象概念,我们为新员工指派了导师来确保他们有效地提升。在我现在工作的 Quip,我们已经编写了大量的产品规格、设计文档、最佳实践指南和有用的花絮,并在公司内部分享(当然是使用 Quip)。记录知识的质量和数量都可以与比我们 26 人团队大很多倍的公司的内部资源相媲美。

3.组

美国企业家吉米·罗恩曾经说过:“你是和你相处时间最长的五个人中的普通人。”。你每天共事的人对你自己的学习速度有着难以置信的巨大影响。当你决定在哪里工作时,重要的是要了解将和你一起工作的人,并确保他们是你可以学习的人。

有时候,在大公司了解你的团队会很困难。例如,当我在 2005 年申请到谷歌工作时,该公司直到大多数新员工已经接受了他们的工作邀请才给他们分配工作。当时有近万名员工,工程师的技术能力和经理的领导能力的差异实际上相当大。因此,除非你事先安排好为某个特定的团队工作,否则你可能会被分配到一个强队或一个次强队,这取决于抽签的运气。此外,在更成熟的公司里,更换团队时会产生巨大的摩擦——通常的预期是你会在一个团队里呆至少六个月到一年——这使得最初的团队任务对你的职业发展和工作幸福感变得更加重要。

相比之下,在一个较小的初创公司和一个中等规模的公司,你通常已经在面试中遇到了团队中的很大一部分人。你甚至可以在谷歌和 LinkedIn 上查找他们的工作历史,并做自己的证明人调查,以确保他们是很好的合作伙伴(没有理由认为公司应该是唯一这样做的人)。因此,你可以对你的团队有一个更好的认识。

4.节奏

初创公司的工作速度通常比老牌公司快得多,中型公司的工作速度往往介于两者之间。提交前代码审查;每周、每两周、甚至每月的发布周期;启动清单;和正式的产品批准会议都创建了结构,并有助于最大限度地减少大公司的破坏。但是这种结构通常是以牺牲开发速度为代价的。在初创公司,持续部署(每次提交都可以进入生产)、提交后代码审查和轻量级批准流程旨在允许快速迭代,同时提供基本的质量控制。

在早期创业公司工作通常意味着工作时间更长(我以前在之前的创业公司每周工作 60-80 小时),但这并不是必须的。树屋的团队一周工作 4 天 32 小时。在 Quip,我的许多队友都有家庭和孩子,我们有一个平衡的工作时间表,许多人每周工作 40 小时。

5.项目结构

在一家大公司,你可能会和同一批人长时间专注于特定领域。例如,在谷歌,我第一年致力于查询优化,第二年致力于搜索 UI 实验。如果你有特定的兴趣并被该领域聘用,或者如果你想深入关注特定领域,这可能会很好。老牌公司的项目也往往更加结构化,你的技术主管、产品经理或经理会给你更多关于日常工作的指导。

你是否会在小公司找到同样的关注深度取决于那里特定的团队结构。我在 Ooyala 时,该公司的员工从 30 人增加到 70 人,我在那里担任了一年的分析技术主管,那一年几乎完全专注于分析。另一方面,在 Quora 和 now Quip,团队结构变得更加灵活——在一个项目上工作几个星期后再去做其他事情的情况并不少见。在过去的几年里,我有机会从事用户增长、实验框架、移动、运营、推荐、垃圾邮件检测、审核、分析以及许多其他领域的工作。项目的多样性加速了我的学习曲线。

6.自主性和影响力

假设在一家初创公司,有一个小得多的团队在更高的产品功能表面上工作,你最终会比在一家大公司拥有更大的自主权和影响力。当我在谷歌做用户界面实验时,任何可见的变化(即使是实验性的)都必须经过时任搜索产品副总裁玛丽莎·梅耶尔的每周用户界面审查。在初创公司,你可能会独自或与你的直属团队一起做出许多决定。

这种影响既适用于产品层面(构建什么或不构建什么,以及如何构建),也适用于团队层面(如何进行招聘和面试,我们希望鼓励什么样的编程实践,如何组织团队优先级,等等)。).这种影响意味着你将有更大的机会对产品和团队产生个人影响,这反过来会推动你在工作中学习的动力。在像谷歌这样更成熟的公司,要施加几乎同样的影响力要困难得多,因为许多做法已经根深蒂固。

7.规模

虽然在更成熟的公司施加影响可能更困难,但你可以通过它们更大的规模对世界产生重大影响。谷歌每天处理数十亿次查询和数十亿字节的数据。(脸书每月吸引超过 13 亿活跃用户。(网飞占美国互联网流量的三分之一以上。^(如果涉及大量数据和流量的问题让你兴奋,在更成熟的公司找到解决这些问题的机会当然更容易。)))

在规模较小的公司,您可能会找到在 Amazon Web Services 上启动机器或使用 Elastic Map Reduce 运行数据分析的机会,但规模会小几个数量级。也就是说,你通常不需要在数十亿的规模上运作,就能感觉到你正在做出巨大的改变。数字尺度对你的学习有多重要取决于它对你的激励价值,以及你想解决的问题类型是否需要那么多数据。例如,对于像机器学习这样的领域,你需要一定的规模来建立有效的模型。

8.自力更生

深入并修改你不知道的代码库的能力,以及构建工具来帮助自己更快迭代的远见,将会让你在创业中走得更远。在较大的公司,你可以依靠专家团队来配置数据库以运行更快,修复编译器错误,创建构建工具,并监控生产服务。在初创公司,你可能要自己负责解决这些任务。当需要帮助时,你仍然可以咨询合适的第三方专家,但是责任最终还是落在你身上。

这种独立水平会加速还是伤害你的学习曲线?这最终取决于你是哪种类型的学习者——你是更喜欢自我指导还是更喜欢更多的指导?

9.失败的风险

在一家初创公司,你可能会减薪以换取更多的股权,但如果你加入的是一家后 A 轮公司,你通常不会有住在办公室公寓或去吃拉面的风险。此外,如果你在硅谷,并且你是一名优秀的工程师,对工程人员的需求非常高,如果有必要的话,找到另一份工作并不太难。更大的风险是,初创公司不会成长,最终会一事无成,而你没有足够的影响力来实质性地影响结果。然而,这种风险并不仅限于初创公司。在一家成熟的公司,如果你正在开发一个新项目(甚至是一个新功能),你正在开发的项目也有可能被淘汰。我在谷歌工作期间看到的许多项目在工作数月或数年后从未启动。

失败可以是学习的机会,只要你在带来结果的过程中发挥了作用,因此可以改变你的行为来影响下一次的结果。然而,当失败来自你影响范围之外的情况时,学习就更加有限了。当你对结果有更大的自主权时,你会学到更多。

10.建立工作关系网

与新的人接触是一种很好的方式,可以打开你的思维方式,也可以了解更多关于你周围发生的令人兴奋的事情。加强你的人际网络和人际关系也有助于你在未来找到新的和意外的机会。

在初创公司或中型公司工作会让你倾向于做更多的人际交往,主要是因为小公司解决的问题通常很难,他们愿意投入时间帮助彼此成功。也就是说,即使你在一家更成熟的公司工作,也没有什么能阻止你与其他人建立关系网。尤其是如果你在硅谷这样的技术中心工作,那里有大量的社交活动(创业派对、烧烤、晚宴、黑客马拉松、技术讲座等)。)在那里你可以遇到和你有相同兴趣的人。你甚至可能仅仅因为在受欢迎的咖啡馆工作而偶遇其他从事技术工作的人。


这些维度都不是二元的,你会发现每个维度在每个公司都有不同程度的不同。然而,它们都有助于你的学习。如果你为学习而优化,那么不管事情结果如何,你至少会为下一个机会做好准备。

关于在 Quip 工作对我意味着什么的告别信

原文:http://www.effectiveengineer.com/blog/farewell-letter-to-quip

上周五是我在 Quip 工作的最后一天。

三年半前,我作为第 13 名员工加入了 Quip,如今该团队已经发展到 100 多名员工。在任何其他公司工作,我都从未感受到更多的成长和支持。

在我离开之前,我给公司写了一封私人信件,并在下面公开分享。它抓住了 Quip 的幕后品质,使它成为人们工作的特别和有益的地方,我希望在世界各地的团队中看到这一点。这封信也抓住了我在下一次冒险中兴奋关注的事情。

在我的最后一天,团队与我分享了一叠小的个性化卡片,关于我对他们的影响。那天我带着一种感觉离开了,“如果这就是我所受到的影响,我知道我在做一些正确的事情。”

这是信。


2017 年 12 月 19 日星期二

亲爱的妙语:

我既难过又兴奋地告诉大家,新年过后不久,我就要离开了。我的最后一天是 1 月 12 日星期五。

妙语在我心中占有特殊的地位。三年半前,我以第 13 名员工的身份加入了这家公司,在这里的这段时间里,我从未感受到任何其他公司给予我的支持。我离开并不是因为我不开心,而是因为我觉得有更大的事情需要去做——用我在这里学到的东西,为工程师创造最好的领导力发展品牌。

我仍然记得我和凯文在旧办公室的屋顶上进行的决定性的一对一谈话。我一直觉得工作没有动力,要求花 20%的时间进行领导力培训。我和妻子排练了多次对话,但我真的很担心凯文会有什么反应。因此,当他毫不犹豫地全力支持我做我想做的事情时,我感到非常震惊。

我离开那次谈话时,感觉自己完全重新受到了鼓舞,重新充满了活力。

我经常回想起那次谈话。很长一段时间,我都在想是什么让凯文的决定如此容易。没有任何犹豫。在不到一个小时的时间里,是什么让我从没有动力转变为重新受到鼓舞?

这花了我一段时间,但我已经意识到,对凯文来说,使这个决定显而易见的是对员工作为人的深切关怀。当这是真的时,许多艰难的决定就变得容易了。

对我来说,那次谈话真正定义了在这里工作的特别之处:以人为本的领导方式。

在过去的一年里,我花了很长时间才真正学会如何体现这种方法。

在教练培训学院经历了一年的教练培训和领导力发展项目——这是一个机会,我非常感谢 Kevin 的支持和 Diana 的全程合作。

一年来,我与凯文、乔恩、帕特里克、洛根、戴安娜、索菲娅以及其他许多挑战和成长为领导者的人进行了有力但有时艰难的对话。

一年的时间对抗我自己的局限信念,直面它们,这样我就可以从脆弱中走出来,在工作中表现得更真实。

这种学习的影响不仅仅是在工作中建立了更令人满意的关系,而且与我的妻子、朋友和我生命中所有其他重要的人建立了更牢固的关系。

在 2017 年到来之际,很明显,这种学习既不明显,也是科技行业其他领域非常需要的。对于世界上每一个关于员工如何被虐待的故事,都有更多不为人知的故事,人们感觉与他们的团队、工作或他们想要创造的影响脱节。

从我在 Quip 的经历来看,我现在知道这是可能的,在科技行业,断开连接仍然是默认的,这是不可接受的。

这一点尤其正确,因为作为当今的技术领导者,我们都有那么对世界的巨大影响力——我们制造的产品呈指数级增长,从根本上改变了人们的生活。如果我们甚至不能与周围的人联系,我们怎么能意识到我们的影响并对我们接触的生活负责呢?

因此,明年及以后,我将和我的好朋友Jean Hsu——一位从工程经理转行的教练,分享对以人为本的领导方法的热情——开始一项探索,以提高技术行业工程领导的标准。

这并不是我和 Quip 关系的终结。

我正在和 Kevin 和 Alon 一起明确地设计,我将如何继续在共同领导研讨会、工程圈和在 Quip 指导人们方面发挥作用。我也很想把我做的很多工作带回来——因为我为什么不与对我重要的人分享对我重要的东西呢?

我也需要你的帮助,因为这是一个我无法独自完成的大任务。

我们都知道,把我们自己的产品推向世界,文化转型是艰难的。但正如我在 Quip 看到的,当它发生时,它是神奇的,这使它值得为之奋斗。

永远感激,
爱德蒙

附注:继续关注我对 coleadership.com 的探索——我们将与你分享我们所了解的一切。

关于快乐和动机的研究能告诉我们什么是在工作中寻找意义

原文:http://www.effectiveengineer.com/blog/finding-meaning-in-your-work

在《非理性的好处》一书中,行为经济学家丹·艾瑞里描述了他进行的一项实验,该实验旨在衡量工作的意义如何影响工作动机。在实验中,他招募了喜爱乐高的哈佛学生来建造乐高 Bionicle 机器人,并且每多造一个机器人就付给他们递减的报酬;第一个完成的机器人赚了 2 美元,第二个少了 0.11 美元(1.89 美元),第三个少了 0.11 美元(1.78 美元),以此类推。研究助理告诉这位参与者,在某个时候,下一位参与者将不得不拆除乐高积木。在一个小组中,实验室有许多可用的乐高套件。助手会将学生完成的每个机器人放在他面前的桌子上,乐高机器人会在整个过程中积累在桌子上。在第二组中,只有两个工具包可用,因此当参与者开始使用下一个机器人时,助手会立即拆除前一个机器人,以防参与者想继续建造。第一组没有看到自己的作品立即被拆除的参与者建造的机器人数量(平均 10.6 个)明显多于第二组的参与者(平均 7.2 个)。^(有意义的工作会让参与者更快乐,产生更多的产出,并补偿较低的薪酬。)

这个实验告诉我们有意义工作的重要性:人们对他们认为毫无意义的工作失去了动力。对于一个公司的员工来说,最强大和最持久的动力是工作的意义感。意义来自于在一家你认为其使命和长期愿景会产生影响的公司工作。它来自于与你一起工作并建立一个团队,这个团队的成员是你尊敬的,他们不断地挑战你去学习并变得更好,并且你不能让他们失望。它来自于你从构建和发布用户喜爱的产品和服务中获得的多巴胺热潮。然而,没有意义的是金钱回报的承诺。

金钱只能买到如此多的幸福

与流行的陈词滥调相反,金钱可以买到幸福。债务、医疗账单、房租、食物或其他账单带来的财务问题会一点点侵蚀你的日常情绪,增加你的担忧、悲伤和压力,而额外的钱可以缓解这些基本问题。此外,除了基本必需品之外,额外的可支配收入提供了与朋友外出的机会,以及享受其他能带来快乐的悠闲经历的机会。

但是金钱只能在一定程度上买到幸福。诺贝尔经济学奖得主丹尼尔·卡内曼在 2010 年的一项研究中发现,年收入 7.5 万美元是额外收入不再与额外幸福相关的门槛。卡尼曼分析了美国人在 2008 年和 2009 年对盖洛普和 Healthways 民意调查的 45 万多份电话调查反馈。被调查者被问及他们的人口统计数据以及一系列“你昨天感到压力很大吗?”的是/否问题或者“你昨天微笑或大笑了吗?”评估他们前一天的情绪状态。

数据显示,对于收入低于 7.5 万美元的个人,收入的对数增长(即收入翻倍)与幸福、快乐和微笑的分数正相关,与悲伤、担忧和压力的分数负相关。但收入对情感指标的影响在 7.5 万美元时饱和,因为金钱不再成为获得更多幸福的限制性资源。“然而,在当代美国,超过 7.5 万美元,更高的收入既不是体验幸福的途径,也不是缓解不幸福或压力的途径,”卡尼曼写道。

比如说,7.5 万美元与软件工程的平均工资相比如何?根据 Glassdoor 的数据,2012 年,美国软件基本工资的全国平均水平徘徊在 92,648 美元,中位数为 73,100 美元。在谷歌、脸书和 Palantir 等顶级科技公司,大学毕业生的起薪通常超过 10 万美元。 ((^(股票期权、健康福利、免费食物、401(k)匹配和其他福利很容易就让总薪酬远远超过卡尼曼的门槛。)))

卡尼曼的研究得出的结论是,超过 7.5 万美元,仅仅为了赚更多的钱而努力工作,特别是当工作没有意义时,相对于其他获得快乐的活动来说,最终是对时间的无效利用。特别是对于那些每周工作超过 40 个小时来获得高收入的人来说,时间成为了一种有限的资源。直觉上,金钱对幸福的回报是递减的,因为没有足够的闲暇时间来有意义地花钱。

对于那些可能考虑创业的人,以及那些可能利用潜在的财务优势来替代有意义工作的人来说,这一点尤为重要。早期员工有时会加入初创公司,寻求退休的捷径,但有财务动机的员工往往最容易受到初创公司业绩波动的影响,如果形势开始变得黯淡,他们会第一个离开。赚取改变生活的钱的希望太抽象,太遥远,无法激励和推动日常工作。随着时间的推移,银行账户中一个向上攀升的数字会成为一种不可持续的、脆弱的长期动力。

从增加幸福感的角度来看,对于典型的工程师来说,更有效的方法是:

  • 减少工作时间,在与工作无关的活动中找到更多的意义和快乐,或者
  • 寻求更有意义的工作,即使以减少收入为代价。

当然,如果能找到有意义的工作,收入高,那就太好了。许多软件工程师相对于其他职业的个人来说是幸运的,因为他们有做出这种权衡的灵活性和奢侈性。那么,怎样才能找到更有意义的工作呢?

实现工作流程

积极心理学的首席研究员米哈里·契克森米哈发现,获得快乐和最佳体验需要一种“心流”状态。心流是一种深度享受和完全投入的状态,当你在一项活动中找到挑战、创造力和技能的完美结合时就会发生。它描述了一种活动,在这种活动中,你全神贯注于自己正在做的事情,以至于完全忘记了时间。鉴于每个人醒着工作的时间,在工作中找到流动和意义对获得幸福至关重要。

在工作中增加流动产生条件的关键是花更多的时间在自动 T2 活动上,这些活动是对自己的奖励,个人有动力去完成而不需要外部奖励。Csikszentmihalyi 采访了数百名不同的人,从小提琴手到棋手,从登山者到外科医生,从青少年到老年人,跨越了不同的文化,他发现了人们在描述心流体验时的感受时的一系列共性:

“[有]一种感觉,即一个人的技能足以应对手边的挑战,在一个目标导向、规则约束的行动系统中,该系统提供了一个人表现如何的明确线索。注意力是如此的集中,以至于没有注意力去想任何不相关的事情,或者去担心问题……时间感变得扭曲。产生这种体验的活动是如此令人满意,以至于人们愿意为了它自己而去做,很少关心他们会从中获得什么,即使它是困难的或危险的。”

激发你的创造潜能,挑战你的注意力和学习能力,提供明确的目标和简短的反馈循环的工作会促进流动。丹尼尔·平克在《驱动力:激励我们的惊人真相》一书中呼应了这一观点,他认为激励包括三大要素:自主性、掌控力和目标。自主性——能够选择和控制你做什么,何时何地做,如何做,和谁一起做——提供了选择工作活动的自由,这些活动让你的大脑参与。这些活动,尤其是当它们是掌握技能和从事有意义有目的的项目的机会时,会提高生产力和工作满意度。

人类不是唯一偏爱有意义工作的人。动物心理学研究表明,鹦鹉、老鼠和其他动物也可能寻找意义,实际上它们更喜欢压在一根棍子上寻找食物,而不是吃免费的食物。^(这种现象被称为“反负荷”,与动物努力最大化产出同时最小化努力的传统观念相矛盾,并表明额外的努力实际上可能使食物更有价值。)

员工能否在工作中找到意义决定了他们愿意投入的时间和精力,而工作的意义从长远来看会影响工作时间的可持续性。因此,有意义的工作在小公司尤为重要,在小公司,员工需要工作更长时间,比如在每周工作 60 小时的初创公司。找不到意义会很快粉碎任何快乐或工作的动力。

在工作中寻找意义的策略

无论你是在一家更成熟的公司工作,还是在一家快速发展的初创公司工作,有意义的工作都存在障碍。当我在 2006 年至 2008 年间在谷歌工作时,其受保护的品牌使得在没有得到包括玛丽莎、拉里和谢尔盖在内的人的批准的情况下,除了对搜索结果进行最微小的用户界面更改之外,很难做出任何其他事情。很明显,工程师很容易在一个项目上花上几个月或一年的时间,结果却因为没有合理的启动路径而被搁置。就像乐高作品被拆除的参与者一样,许多前谷歌员工在他们的项目被取消后失去了动力,并离开去了更小的创业公司。

渴望找到有意义的工作,而不是成为大型机器中的一个齿轮,是人们决定离开大公司去创业的关键原因之一。但是尽管他们有着刻板的灵活性,创业公司也能创造出剥夺工作意义的情况。我在 Ooyala 工作期间,我们的团队花了一个多月的时间来构建定制的代码转换基础设施、定制的门户和定制的分析模块,以支持被过度宣传的 Joost^(;几个月后,Joost 进行了重组,失去了首席执行官,并停止使用 Ooyala。^(他们为定制工作付费,但这并不能缓解因目睹超过一年的工作和兴奋消失而导致的工程士气的损失,这种情况和类似事件很可能导致一些成员筋疲力尽并最终离开团队。))

那么我们可以采取什么策略在工作中找到心流呢?以下是一些我认为对保持我的软件工程工作有意义很重要的心态和策略,我也看到其他人成功地使用了它们:

  • **尽早验证新想法,并且经常用简单的概念证明。**在一个项目被废弃之前,花在这个项目上的时间越多,参与这个项目的人的士气就越低落。低保真度的模拟和不一定以正确方式构建的被破坏的原型都可以在向项目投入更多资源之前对想法进行快速的健全性检查。

  • 快速而频繁地重复。将构建原型或迭代的时间从数月减少到数周、数天甚至数小时至关重要。很多时候,这需要在基础设施和抽象方面进行投资,以加快原型开发。例如,必须编写 C++代码来原型化对 UI 的更改,这几乎肯定会导致项目失败;虽然看起来显而易见,但这是我 2006-2008 年在谷歌工作期间,许多从事谷歌搜索 UI 工作的人不得不做的事情。我花了 20%的项目时间为原型制作更快的演示工具。

  • 在果断的领导下工作。尽早消除官僚障碍(如果有的话),并确保关键决策者的支持,这些决策者能够致力于他们的选择,这大大降低了指挥链中有人在最后一刻拒绝批准,并在几周或几个月后放弃项目的可能性。其中一部分包括在强有力的领导下工作;另一种是在需要达成共识时主动寻求他们的意见。

  • 参与多个不同风险和规模的正在进行的项目。这是我在谷歌的一位经理与我分享的一条宝贵建议。分散你单独工作的项目可以增加至少一些项目成功的可能性,这对于在其他项目失败或比预期时间长时保持成就感是至关重要的。

  • **自动化无意义的工作。**没有什么工作比在凌晨 3 点被传呼机值班警报吵醒更糟糕的了,这本来可以由机器来解决。通过脚本化和自动化服务器重启、web 层的动态扩展和代码部署,您可以降低服务的手动维护成本,并增加花在真正有意义的事情上的时间比例。

在 Ariely 的乐高实验中,他描述了无意义的工作条件,即乐高组装后立即被拆除的“西西弗斯条件”。在希腊神话中,国王西西弗斯被诸神惩罚,做着永无休止的劳动,将一块巨石滚上陡峭的山坡,却只能看着它每次都滚下来。为了确保你的工作不会成为西西弗斯状态,努力推动实现心流,并确保你每周花费的工作时间是有意义的。

每一位卓有成效的工程师都应该阅读的五本书以及他们教授的课程

原文:http://www.effectiveengineer.com/blog/five-books-every-effective-engineer-should-read

我爱读书,每周大概看 1-2 本书。一些世界上最快的读者能够吸收书籍的数量远远不够——据说西奥多·罗斯福总统在白宫的两个任期内每天早餐前都会读一本书——但这是一个健康的速度,我一直在努力保持并希望随着时间的推移而增加。

不仅仅是娱乐,书中的故事有助于缩短你自己的学习曲线,让你可以更快地学习和成长。“从别人的错误中吸取教训,”埃莉诺·罗斯福曾经说过。“你不可能活得足够长,让它们都是你自己做的。”书籍,无论是小说还是非小说,都为读者提供了一种从他人的教训和错误中学习的方式,这样你就可以重新应用这些知识,而不必从头开始。

我读过许多关于编程和工程技术的经典文本,毫无疑问,它们为我每天在工程上使用的一套原则做出了贡献。但有几本书确实影响了我对如何成为一名更有效的工程师的思考,令人惊讶的是,其中大多数实际上都不是工程书籍。在本帖中,我与你分享这些书籍推荐以及我从中学到的东西。

Peopleware

这本书由两位软件顾问的研究支持,讨论了项目和团队中的许多动态,并让我走上了思考诸如如何建立有效的工程团队和什么是良好的工程文化等主题的道路。它涵盖的主题包括强制加班如何破坏团队的凝聚力,编程时听音乐如何干扰我们的思考能力,估计任务所需时间的行为如何实际上导致实际任务需要更长时间(尽管它可能有其他好处),以及许多其他智慧。

首次出版于 1987 年,这本书的一些章节确实揭示了它们的年代——其中一章讨论了有家具的办公室,警察在工作场所实施装饰。但令我惊讶的是,我在谷歌、Ooyala 和 Quora 工作期间,看到了许多其他永恒的课程。最近由 Brian W. Fitzpatrick 和 Ben Collins-Sussman 撰写的《团队极客:软件开发人员与他人良好合作指南》 的风格类似,但更依赖于作者自己在谷歌和 Subversion 的工作经验,而不是实证研究。

High Output Management

当我寻求书籍来帮助我成长为一名工程领导者时,Quora 的联合创始人兼首席执行官 Adam D'Angelo 向我推荐了这本书。在高产出管理中,格罗夫提炼了他在运行和管理英特尔时使用的一些原则。如果你对管理不感兴趣,不要对标题中的“管理”一词感到厌烦。这条建议既适用于人事经理,也适用于那些他称之为“技术经理”的人——比如高级工程师,他们已经积累并分享了组织内的大部分知识。从这本书里,我学到了我职业生涯中最有价值的一课,那就是根据我的活动和任务的杠杆——单位时间内产出的数量或产生的影响——来确定它们的优先级。

Getting Things Done

这本书的价值在于,它彻底描述了如何管理待办事项和任务列表的具体实现。虽然我并不赞同艾伦描述的一切,但读到一种可能的做事方式还是令人大开眼界。如果你没有一个好的工作流程来安排事情的优先次序和完成事情,这本书提供了一个基线,你可以从它开始。

这本书的一个关键要点是,把你所有的待办事项写在一个单一的、容易获取的列表中,并从你的大脑中移除记忆任务的负担。这极大地帮助了我跟踪我需要完成的事情,并释放了我的精神能量来关注其他事情。随后阅读的书籍,如大卫·洛克的、乔纳·莱勒的 我们如何决定 ^(以及约书亚·福尔的 与爱因斯坦一起漫步 只是强化了我们的大脑没有被很好地设计来记住大量的事情,试图记住事情只会干扰我们的其他认知能力。)

The 7 Habits of Highly Effective People

实际上,我并不喜欢柯维的写作风格——大部分都有点过于抽象和松散——但书中观点的持久影响弥补了这一点。从柯维的第三个习惯“把重要的事情放在第一位”中,我了解到人们往往会忽略重要但不紧急的活动,花很多时间处理邮件、电话等任务。这可能很紧急,但最终并不重要。这种对当务之急的关注抑制了我们在个人和职业上学习和成长的能力。从这个习惯中得到的一个关键是明确地安排时间投资自己,无论是通过学习新技能、维持关系、阅读等等。自从读了这本书,我养成了明确安排时间的习惯,把我认为重要的事情按优先顺序排列。

The 4-Hour Workweek: Escape 9-5, Live Anywhere, and Join the New Rich

不管你是否真的选择订阅费里斯提倡的那种极端生活方式,这本书教会了我两件事。首先,它强调了如果你坚持不懈地对工作进行优先排序,会有什么样的可能性。帕累托原则,也称为 80-20 法则,关注的是 20%的努力可以产生 80%的胜利;Ferriss 专注于确定 10%的努力(每周 4 小时),这些努力能为你带来最大的成功。不管你工作了多长时间,根据影响对你的工作进行优先排序,减少非生产性的活动都是重要的经验。

第二,它让人们认识到创建低维护的可持续系统的重要性,因为这是一个人每周工作 4 小时就能可靠地创造财富的唯一途径。这是一个在工程中经常被忽视的教训,在工程中,我们用新的和性感的技术来构建新功能的设计选择不一定考虑未来维护的成本。


当然,关于有效性的书只是可以从中吸取教训和故事的一种类型的书。除了 Peopleware 之外,这些书都是为普通读者写的,并不是专门针对工程师的。这就是为什么我很兴奋正在写我自己的书,在这本书中,我将展示我们如何将这些经验直接应用到我们作为工程师遇到的情况中。

作为一名工程师,哪些书籍对你的思维影响最大?请在评论中分享你的想法。

如果你想成为一名成功的程序员,需要掌握的五个关键心态

原文:http://www.effectiveengineer.com/blog/five-key-skills-of-successful-programmers

戴夫·卡特勒,74 岁了,仍然每天去他在微软的办公室写代码。

我第一次听说卡特勒是在他被授予计算机历史博物馆研究员的荣誉时。)从事计算机行业的工作。^(仅仅基于他对工程的毕生奉献,许多人会认为他是一个“铁杆”程序员。)

然而,比他的长期任期更令人敬畏的是,他的工作影响了超过 20 亿人的计算体验。在他的众多贡献中,Cutler 构建了 Windows NT 的关键部分——过去 20 年中所有主要 Windows 版本的基础——并通过使操作系统向后兼容早期软件,在早期给了微软巨大的市场优势。他被称为“微软视窗操作系统背后的关键技术大脑”

那么是什么让像卡特勒这样的人成为成功的程序员呢?我们怎么可能期望达到他的影响力的一小部分呢?是什么把最强的程序员——以及那些用他们的软件给人们的生活带来最大积极影响的人——和其他人区分开来?

这最后一个问题是我在为我的书做研究时特别想知道的。虽然编程不是工程师做的唯一活动,但它是主要活动之一。通过采访硅谷顶级科技公司的成功工程领导者,我发现最有效的工程师——那些完成工作并产生巨大影响的人——至少拥有以下五种编程思维:

1.无畏地钻研你不知道的代码。

跳入一个不熟悉的代码库可能会不舒服和可怕——许多人甚至没有尝试就放弃了。随着你越来越频繁地使用这一关键技能,你会变得越来越容易,在这个过程中,你会成为一名优秀得多的程序员。如果一个开源库或另一个团队的库不能像你期望的那样工作,它给了你进入源代码调试原因的灵活性。

对陌生事物的恐惧超越了代码。每次你换工作的时候,都会有一种挥之不去的担忧,那就是你可能无法复制你在之前工作中的出色表现。很少有人公开谈论冒名顶替综合征,但我甚至有首席技术官告诉我,他们觉得自己是骗子。

现实是我们都从某个地方开始。卡特勒就读于一所小型文理学院,甚至没有接受过正式的计算机科学教育。所以在很多方面,他起步落后于同龄人,不得不通过试错来学习很多东西。

随着时间的推移,为了变得更好,我们必须采取一种成长的心态为学习而优化。任何技能,无论是编程、交流、网络、闲聊还是其他,只要你投入时间,都是可以学习的。阅读这方面的书籍。求助。要知道,随着时间的推移,处理不熟悉的事情会变得更容易。

2.主调试。

“为什么我的代码没有按照我的预期运行?”作为软件工程师,我们每天都在问自己这个问题。有效调试的能力对工程师完成工作的能力有着不成比例的巨大影响,然而这种能力在大学里很少被教授,在技术面试中也不被重视。

你如何有效地调试?它的核心是提炼出科学的方法:

  • 猜猜发生了什么事。
  • 假设猜测是真的,确定猜测的结果会是什么。
  • 尝试做出与这些结果相矛盾的观察。
  • 如果发现矛盾,说明你的猜测不正确,那就再做一个。如果不是,你有一个可能的解释。

为了更快地调试,你必须学会做出更好的猜测,你必须精通帮助你做出更好的观察的工具和技术。

随着你解决更多的问题,随着练习,你会做出更好的猜测。

做出更好的观察取决于建立你的技术技能。从假设一切都是可观察的开始,找出工具或机制,让你做出一个给定的观察或让它更快。不要假设你只能根据你熟悉的有限工具来观察事物。很可能有人已经开发了一种工具来理解你想知道的东西。

当计算机第一次出现时,计算资源有限且昂贵,因此程序员必须非常机智地使用它们。今天,亚马逊云上一小时的计算成本不到一便士。

另一方面,我们仍然受到同样的每周 7 天、每天 24 小时的限制。这意味着我们可以卸载到计算机上的任何手工工作都是非常高效的。我们通过投资省时工具和自动化工作流程来实现这一目标。工具让我们用花费的时间放大我们创造的产出。自动化使我们能够在睡觉时或者在专注于其他问题时完成工作。

当我在写《高效工程师》的时候,我采访了 Bobby Johnson,他是脸书的前工程总监,他将基础设施团队从 6 人发展到了 100 多人。他的一个观察让我印象深刻,那就是“在成功的人中,几乎所有人都编写了很多工具。”

对于一些工程师来说,工具是一项巨大的投资,这似乎是显而易见的,但当我们实际分解我们的工作日并考虑我们的时间有多少部分花在构建工具上时,我们可能会发现它并没有那么高。但约翰逊团队中许多最优秀的工程师实际上把三分之一的时间花在了工具上——用于部署代码、监控系统的工具,以及其他任何能让他们在更短时间内完成更多工作的工具。

不要一直做机器能为你做的事情。

4.优化你的迭代速度。

假设你花了 12 秒从一个函数调用开始搜索并导航到定义它的地方。假设你每天要做 60 次类似的导航。每天花在浏览文件上的时间是 12 分钟。如果你在文本编辑器中学会了足够多的快捷键,可以在 2 秒内而不是 12 秒内导航到一个文件,那么一天下来,你可以节省 10 分钟。每年,你都会节省整整 40 小时的工作时间。

再找到 3 个类似的优化,你就可以节省一个月的时间。想象一下,如果每年多一个月,你可以做些什么。

或者假设你正在修复一个 bug,需要你启动应用程序,然后浏览五个屏幕来设置触发 bug 的正确条件。你能花 10 分钟把它连接起来,让它在启动时进入错误的屏幕吗?您将能够以较小的初始投资,在该 bug 上迭代得更快。

系统地问自己,“我怎样才能迭代得更快?”回报将是巨大的,而且随着时间的推移,回报会越来越多。

5.培养系统级思维。

当你在编程时,一旦你根据一些规范实现了代码,你就很容易认为你的工作“完成”了。但这只是冰山一角。任何闲置在代码库中而没有在生产中运行的工作都是不会产生任何价值的工作。

要构建和发布真正重要的代码,您需要将您的思维从代码提升到整个系统的层面:

  • 您的代码如何与他人构建的代码库和功能的其他部分相适应?
  • 你对你的代码进行了充分的测试吗?质量保证团队(如果有的话)能够执行你构建的功能吗?
  • 要部署您的代码,需要对生产环境进行哪些更改?
  • 这个新代码会对其他正在运行的系统的行为或性能产生负面影响吗?
  • 与您的代码进行交互的客户和用户的行为是否符合预期?
  • 您的代码会产生预期的业务影响吗?

这些都是很难的问题,回答好它们需要付出努力。但是你需要一个清晰的心智模型来确定你的代码在全局中的位置,从而知道如何将你的时间和精力投入到具有最大积极影响的工作中。

这五种编程心态将帮助你开始,但请记住,要成为一名成功的程序员或工程师,除了你写的代码之外,还有更多。如果你想从谷歌、脸书、Twitter、LinkedIn、Airbnb、Reddit 和其他顶级科技公司的一些最优秀的工程师那里获得更多建议,当你注册时事通讯查阅书籍时,就可以获得为期两周的免费电子邮件课程,学习如何最大化你的影响力。

编程快乐!

这篇博文基于我最初在 Quora 上写的一个回答

为你的软件工程团队编译飞行规则

原文:http://www.effectiveengineer.com/blog/flight-rules-for-software-engineering

在他的书《宇航员在地球上的生活指南 中,克里斯·哈德菲尔德分享了他从成为第一个在太空行走的加拿大人的看似不可能的旅程中学到的感悟。他讲述了他为太空做准备而进行的现实模拟的故事,讲述了他在国际空间站 6 个月任务中的日常生活,甚至讲述了宇航员如何在太空刷牙的机械原理。

给我留下特别深刻印象的是哈德菲尔德描述的一部惊人的知识巨著,一部人类花了几十年才完成的巨著。“自 20 世纪 60 年代初以来,美国国家航空航天局一直在记录我们的失误、灾难和解决方案,”他写道,“当时水星时代的地面团队首次开始将‘经验教训’收集到一份简编中,现在列出了成千上万个有问题的情况,从引擎故障、舱门把手破裂到计算机故障,以及他们的解决方案。”

这个概要被称为飞行规则。令人惊讶的是,你可以在网上找到这些规则 A 卷 2200 多页的副本。给定一组特定的环境,手册一步一步地列举,做什么和为什么。冷却系统出现故障?飞行规则一步一步告诉你怎么修,以及每一步的基本原理。燃料电池问题?飞行规则告诉你发射是否需要延期。“它们是非常详细的,特定场景的标准操作程序,”哈德菲尔德继续说道,包含了从过去的任务中吸取的所有经验教训。

这么多有价值的知识可以塞进一本手册,这让我不禁想知道:在一家软件工程公司,类似的手册会是什么样的?拥有一本手册会让我们做些什么?当然,它会为我们的系统制定一步一步的操作规则。MySQL 数据库故障?飞行规则会告诉你如何从主设备故障转移到从设备。服务器因流量超载而超载?规则会告诉您运行哪些脚本来增加额外的容量。

但是它也可以有更多如何运行项目的通用模式。项目进度落后?飞行规则可以告诉你过去不同的项目团队加班时发生了什么,那些团队认为他们最终成功或失败的主要贡献者是什么,以及团队成员是否精疲力竭。有新的排名算法的想法吗?你可以在飞行规则中找到过去所有 A/B 测试的汇编,假设是什么,以及实验是确认还是拒绝这些假设。

这样的资源看起来非常有价值,尤其是对于新加入团队或公司的人来说。那么,怎样才能到达那里呢?

NASA 的“文化主食”是任务汇报。任务后的汇报提供了回顾任务的机会,以找出哪里出了问题,哪些地方可以做得更好。它们也非常强烈。专家们连珠炮似的提问,每一个动作都被标记出来,并分析出哪里出了问题。4 小时的模拟之后可能会有 1 小时的汇报。太空飞行之后会有一个月或更长时间的全天汇报。你必须稳住自己,等待反馈,记住目标不是让你的错误蒙羞,而是最大化集体智慧。

鉴于发射一架航天飞机的每项任务成本为 4 . 5 亿美元,不难理解为什么美国宇航局认为全面的任务汇报是必要的——无论是从纳税人的钱还是宇航员的生命来看,每个错误都是昂贵的。

大多数工程公司不从事像太空飞行这样的关键任务。许多公司对灵活性的要求和较低的失败成本使得 NASA 的严格程度不可行,就像使用 精益创业 方法对 NASA 来说不是最好的方法。

但是专注于将集体智慧构建成一套飞行规则仍然是一种我们可以在软件工程中更广泛采用的模式。

进行工程事后分析——类似于美国宇航局的任务汇报——是一种相当著名的做法。在站点停机、高优先级错误或基础架构问题之后,工程团队会跟进详细的书面记录,解释发生了什么、如何发生以及为什么会发生,以及我们可以采取什么措施来防止它发生。如果这种情况是不可避免的,建立一个工具来使恢复更容易,或者写一个分步文档来解释下次如何处理这种情况是一个合理的替代方案。许多团队已经倾向于这样做,只是严格程度不同。一些公司如 Asana 和 Amazon 采用类似丰田的“五个为什么”的方法来理解运营问题的根源。

不太常见的是对项目和发布引入相同级别的回顾,并为未来的产品任务汇编经验教训,在整个组织中共享。随着 TechCrunch 的报道,一个功能启动了,香槟杯被碰杯,每个人都为出色的工作而庆祝。但是,这种努力对于实现团队目标的效果如何呢?或者一个团队重写基础设施代码,并在几个月的工作后使其速度提高 5%。这真的是对团队时间的最佳利用吗?如果没有停下来听取汇报和查看数据,很难知道答案。

当然,做得更好会有一些摩擦。团队可能没有为发布定义一个明确的目标或衡量标准,从而很难评估它是否成功。他们可能已经结束了任务汇报,并犹豫是否与组织的其他人分享经验,因为他们不想宣布他们几个月的工作是失败的。或者他们可能只是觉得有太多的事情要做,以至于没有时间思考——这是初创公司常见的情况。我知道我自己也因为加入这些不同的团体而感到内疚。

结果是失去了积累集体智慧的机会。吸取的教训没有被汇编成像*飞行规则这样的概要,*被孤立在少数人的头脑中。代价高昂的错误不断重复。而人走了,集体智慧就减少了。

弥补这种损失需要努力。你必须采取一种开放和接受反馈的心态。你必须专注于增加集体智慧,而不是推卸责任。如果你周围的人也这样做,它可以成为工程文化的一部分,并减少摩擦,否则这可能是一个可怕的练习。你必须养成回顾自己使命的习惯。

一个小小的改变如何提升你的动力和表现

原文:http://www.effectiveengineer.com/blog/frame-your-goal-to-increase-motivation

2009 年,海蒂·格兰特·哈尔沃森博士在动机科学领域有了惊人的发现。她进行了一系列研究,要求参与者解决一系列难题和问题。在一组——“做好人”组,参与者被告知他们的分数反映了他们的“概念和分析能力”他们应该尝试解决尽可能多的问题,并以高分为目标来证明他们有多优秀。在另一组——“变得更好”组,参与者被告知每个问题都是一个“训练工具”,他们应该“利用这个宝贵的学习机会”来提高他们解决问题的技能。

对于每组中的一些参与者,哈尔沃森还通过引入一些挑战来增加难度。她打断了参与者,以用完他们的一些分配时间。她抛出额外的、无法解决的问题来挫败他们,而没有告诉参与者这些问题是无法解决的。

让哈尔沃森感到惊讶的是这两个小组是如何应对挑战的。“变得更好”组的人保持镇定,在具有挑战性的条件下解决的问题和容易解决的问题一样多。他们保持动力,不断努力学习。然而,“做好人”组的人在面对挑战和障碍时意志消沉,他们解决的问题比那些不必面对挑战和障碍的人少得多。

这些差异的产生仅仅是因为最初的目标是如何制定的。

为难题定义掌握目标,而不是表现目标

哈尔沃森的实验说明了掌握目标和表现目标之间的区别,前者的目标是学习并在某项技能上做得更好,后者的目标是做得更好,要么展示你的才华,要么超越他人。

你对某个问题的目标通常可以用两种方式来表达:

  • 你是为了考试而学习、成长还是为了展示你的智力?
  • 你花数年时间攻读博士学位是为了在你的研究领域进行创新,还是因为你认为这将是你职业生涯的一个很好的垫脚石?
  • 你是在为 10K 比赛训练,以提高你自己的时间还是击败竞争对手?
  • 你是在做副业,温习你的编码技能,以成为一名更好的软件工程师,还是仅仅为了得到一份薪水更高的工作?

你为实现精通目标或绩效目标而采取的行动可能是相同的,但你的动机和心态会大不相同。当你专注于提高自己的技能,而不是展示技能时,你就不太可能因障碍、时间压力或其他意想不到的挑战而气馁。你会相信你仍然可以提高,下次会做得更好。你会有一个 的成长心态

这并不是说绩效目标没有它们的位置。丹·艾瑞里教授在麻省理工学院、芝加哥大学和印度马杜赖农村进行了一系列实验。受试者被要求参与一些游戏,并为在每个特定游戏中表现良好的人提供小、中或大的经济激励——这是表现目标在行动中的一个明显例子。对于记忆游戏、创造力游戏或运动技能游戏,那些提供大量金钱奖励的游戏实际上比那些提供较少金钱奖励的游戏表现得更差。当参与者被给予大量金钱奖励时,他们唯一表现得更好的任务是当他们尽可能快地在键盘上交替按键的机械任务时。

丹尼尔·平克在他的《驱动力一书中强调了这一观点,他解释说,当有一个明确的目标并且问题可以通过强力解决时,基于绩效的目标——尤其是那些由奖励激励的目标——会非常有效。当问题需要一些独创性或一些脑力劳动时,基于绩效的目标和奖励开始适得其反,降低绩效。

让这项研究变得有用

为手头的任务设定正确的目标,以获得更好的结果。

当你可以强力解决问题时,你最好设定一个绩效目标,尤其是在有回报的情况下。例如,绩效目标适用于以下情况:

  • 在一长串 bug 或特性列表中进行筛选。
  • 回复大量积压的个人邮件或客户支持邮件。
  • 完成一系列公寓周围的杂务。
  • 机械地完成许多不用动脑的任务。

对于这些短期任务来说,没有太多机会掌握一项新技能,而是将奖励与任务的完成挂钩,这可能是有帮助的。如果你把所有事情都做完了,然后你会给自己(或你的团队)一些好东西。绩效激励可以帮助你更快地完成工作。

但对于我们的长期目标来说,如果我们采取一种旨在掌握技能而不是实现绩效目标的心态,我们将会更有动力。举个例子,

  • 不要把重点放在晋升到公司的工程职位上,而要集中在提高你的工程技能和创造有意义的影响的能力上。
  • 而不是为了在某项运动中获胜而训练——无论是跑步、网球比赛、极限飞盘等等。—训练成为更好的运动员或运动员。
  • 与其加入一家创业公司来致富,不如加入,因为你对问题空间充满热情,并乐于从旅程中学习。

你会注意到,以绩效为框架的长期目标往往依赖于你无法控制的外部因素(你的经理是否提拔你,你是否比你的对手更优秀,或者你的创业是否成功)。当你让环境在你的成功中扮演如此重要的角色时,当你遇到障碍时,就很难保持动力,就像哈尔沃森实验中的解谜参与者一样。相反,如果你专注于自己的学习和变得更好,你就更有可能克服痛点并真正取得成功。

如何为自己想做的事创造时间和空间

原文:http://www.effectiveengineer.com/blog/give-yourself-permission

我躺在沙发上。我的身体在热浪和汗水中不舒服地交替着。我的下背部经常疼痛。我吞下了今天的第六片止痛药,希望我剧烈的头痛会停止。

我染上了一些正在传播的病菌。几乎没有精力做任何事情,我最终在一天之内看完了《西部世界》的整个赛季——整整 10 个小时。顺便说一下,我喜欢这部剧——它感觉像是一个混合了侏罗纪公园和人形机器人的角色扮演游戏,都注入了令人敬畏的故事情节,伟大的角色发展和不可预测的情节转折。

我通常不爱看电视节目。事后,我觉得有点内疚。

我生长在一个移民家庭,父母总是一周工作六天,努力工作一直是我身份的一部分。每当我浪费时间或效率低下时,我经常感到内疚。我会问自己,“这真的是对我所拥有的机会的最好利用吗?”

需要像生病这样的时刻——意识到我没有能力做更多的事情——允许自己去做那些让自己感到不负责任的事情。这让我想知道:我们有多少次发现自己如此专注于做我们觉得有责任做的事情,以至于没有时间做我们真正想做的事情?

平衡我们觉得应该负责的和我们想要的

我们许多人都感受到了责任的重量——无论是对我们的工作,对我们的家庭,还是对我们生活中的其他人。

责任有办法填满我们的时间表。常设会议、新的会议请求、电子邮件积压、任务列表、帮助解决问题的中断、消防、紧急客户需求——它们都可以很容易地填满我们的可用时间。

随着我们在角色中的成长,我们承担了更多的责任。随着时间的推移,我们成为“最适合这份工作的人”的领域越来越多。对所有到来的请求说不变得更加困难。我们有时会觉得花时间在我们应该做的事情上,在我们的时间表中留给我们想要做的事情的空间很少。

前几天,我和谷歌的一位高级工程经理进行了一次对话。她觉得她的日子充满了她不得不做的事情,而不是她想做的事情。

她不是一个人。我一直都在纠结这个问题。

应该审查我团队的代码。我希望投入时间与其他工程领导建立更牢固的关系,为更广泛的工程师提供支持服务。

I 是否应该专注于发展团队和执行产品。我想通过花时间准备并应邀在一千人面前演讲来拓展我的领导能力。

鉴于我们的团队很小,我应该直接为我们的产品做出贡献。我希望花更多的时间来提高技术领导力的标准,并做所有必要的辅导、教学和指导来实现这一目标。

你的奋斗会有所不同,但我们每个人都会有自己的清单,列出应该做的想要做的——我们出于责任感而做的事情,以及因为它们让我们快乐和兴奋而做的事情。

这两者之间的关系非常紧张。

当我们同意做我们觉得有责任做的事情时,我们就含蓄地拒绝了其他我们想做的、让我们开心的或让我们更接近梦想的活动。我们不仅要默认说“是”,还要做出有意识的决定——允许自己在时间表中为自己想做的事情留出时间和空间。

为我们自己创造时间和空间

如果我们允许自己做自己真正想做的事情,我们的日子会是什么样子?我们肯定会给我们的工作带来新的活力和激情。结果会带来什么新的可能性?

为了打开这些新的可能性,我会做的一个练习是写下一个我想做更多或开始做的活动的列表。

我最近的清单之一。

为什么要列清单?实际上列举活动使你想做的所有事情在你的脑海中具体化。

以前你可能会因为你应该做的事情而拒绝一个机会,但你可能会记得这件事在你的清单上,然后实际去做。你甚至可以在我的日历上划出时间来专注于它。

有了你的想要的清单,当实现它们的机会出现时,你也会开始注意到更多。你将开始从新的角度处理问题。如何将你面临的问题重新定义为做你想做的事情的机会?

也许一个你并不期待的项目会成为一个拓展你领导力的机会——在这种情况下,你会如何领导和激励你的团队?

也许一个你不确定如何独自解决的问题会成为你和你一直想一起工作的人合作的机会。

也许你的压迫感会成为一个学习如何更有效地授权的机会。

这些清单也清楚地说明了为什么你应该对某些事情说不。你说不并不是不负责任——即使最初可能会有这种感觉——而是为所有你想说好的事情创造空间。

一位明智的经理曾经告诉我:我们将永远在做我们觉得有责任的事情和让我们快乐的事情之间保持平衡。在任何特定的方向上过度优化,我们最终会陷入困境。如果我们总是出于责任而专注于做事情,我们最终会感到筋疲力尽或怨恨,因为我们没有时间去做那些让我们快乐的事情。如果我们只考虑自己的幸福,我们会把那些依赖我们的人抛在身后。

确保为你想做的事情留出空间和时间——不仅仅是在你生病无法做其他事情的时候。

增长

原文:http://www.effectiveengineer.com/blog/growth/

我教授工程师和技术领导者有效创造有意义的影响所需的工具。

我是 Quip 的早期工程师,在 Quora、Google 和 Ooyala 都领导过团队。

帮我庆祝我的五周年纪念

原文:http://www.effectiveengineer.com/blog/help-me-celebrate-my-five-year-anniversary

“我爱你的书!”那个陌生人带着他的狗从我身边跑过时大声喊道。

我微笑着,对我步行去附近咖啡店时的意外收获感到高兴。大多数时候,人们很容易忘记我花了两年时间将这位卓有成效的工程师创造出来,这个小小的互动是一个令人愉快的提醒:这本书继续在世界上影响着人们的生活。

这种互动就发生在一个月前,令人惊讶的是,从那以后发生了如此大的变化。这个世界感觉像是在和一股看不见的力量作战。全球各地都在实施隔离,以减缓冠状病毒的传播。旧金山本周刚刚下了自己的就地安置订单。

我远离社交,呆在家里,只是为了自然和食品杂货而外出——当然,今天的环境不会支持这种类型的意外收获。

正是在这种全球环境下,我正在庆祝我的书 【有效的工程师 】自助出版五周年——我很自豪地分享这本书自问世以来已售出 12,000 多册。

我对今天的庆祝有些犹豫,有两个原因——一个是个人原因,一个是冠状病毒相关的原因。

努力庆祝成功

犹豫的第一个原因是个人原因。我一生中大部分时间都在努力庆祝和分享成功,直到最近才开始有所突破。

即使是在麻省理工学院,我在学校的成绩也是全 A,而且在学业上取得好成绩时,我总是感到孤立和孤独。我是一个在生物考试中得了 157 分的家伙,满分是 103 分,会因为打破了曲线而被称为令人讨厌。我会因为成功而感到内疚。我妈妈会瞧不起其他亚洲虎妈吹嘘自己孩子的考试成绩或他们进入的学校——这让我觉得庆祝成功是错误的。

这些经历,加上对融入和归属的强烈渴望,让我相信,如果我想成功,就必须悄悄地去做。好像我会成功——但不会太成功。

因此,我没有为我的书举行庆祝活动——尽管我为自己两年来为之付出的精力感到自豪。

我想扩大我的书的覆盖面和影响力——但是每当我把这件事告诉朋友时,我都会感到内疚和羞怯。

受邀在谷歌、脸书和 Pinterest 等科技公司做演讲,我感到很兴奋——但让我的同事知道我会感到不安,有时只是告诉他们我会离开办公室几个小时。

我今年的意图是深入了解我的目标,很明显,这种历史行为不符合我在这个世界上想要成为的人。

有一段时间,我对这个简讯保持沉默。这是因为在花了十年时间学习如何成为一名有效的工程师之后,我在过去几年里一直专注于我们如何在工程领域之外——以及在我们的余生中——变得有效。

其中一个方面仍然与工作有关:在工作中成为一名有效的领导者意味着什么?两年前,我创办了我的公司 Co Leadership 来关注这个问题,我们在为工程师创造最有效的领导力培训的宏伟梦想上取得了巨大的进步。

但是生活中不仅仅只有工作。我们如何有效地沟通我们的情绪?我们如何有效地打破人们对我们的期望,从而创造我们想要的生活,而不是我们应该过的生活?我们如何有效地创造深刻而有意义的关系——无论是在工作中,在家里,与朋友,甚至是浪漫?我们如何有效地发现我们生活的目的?

在过去的几年里,我一直在所有这些方面深入探索——探索和整合各种形式,范围广泛,如教练、舞蹈、化身、真实关联、呼吸法、坦陀罗等等。作为一名工程师,我一直在开发一些框架来提炼它们的精髓——绕过闲聊的框架,在强大时刻创造亲密和信任的框架,打破过去我们对自己的限制信念的框架,在生活中创造更多自由的框架——并与我生活中的人实践和分享它们。

我知道我感到有责任分享我所学到的一切——你很快就会听到其中的一些——这样我们就可以设计我们想要的生活。我知道拥有我的故事和我的成功将是旅程的一部分。

所以今天,我选择庆祝。

在黑暗的时候庆祝

犹豫不决的第二个原因是相信当世界上有重大、糟糕和可怕的事情发生时庆祝是错误的。

世界正在遭受一场我们有生以来从未见过的疫情袭击。

人们在家里被隔离,学校和企业被迫关闭,股票市场崩溃,甚至第一世界国家的医院系统也不堪重负。

我担心我的朋友和家人的健康。我的父母在旧金山唐人街拥有一家家庭草药商店,那里有大量的老年人,虽然他们已经对顾客关闭了实体店,但他们仍然允许顾客通过商店锁着的大门输入处方订单,以便他们可以继续为人们提供他们需要的药物。

我努力在让自己负责任地、健康地获取信息,同时不让消息严重影响我一天的心情之间找到平衡。

我和我爱的人发生了更多的争论,空气中弥漫着集体的紧张气氛。

现在,我知道的是。

关于新冠肺炎的谈话倾向于灌输稀缺而不是富足,恐惧而不是希望,不确定性而不是根植性。

在这些关键时刻,我们有一个选择。

我们可以选择被恐慌和恐惧席卷,让它消耗我们一整天的时间。我们可以选择哀叹我们所处的处境,让坏消息玷污我们用来看待生活中美好事物的镜头。

或者我们可以选择尽我们所能过最充实的生活,考虑到正在发生的现实。我们可以选择悲伤,承认和感受出现的恐惧和痛苦,也可以选择庆祝和欣赏现状。

事实上,在这些时候,在我们力所能及的时刻找到快乐、平静和欣赏更为重要。在过去的三周里,我每天都在做一个晨间仪式,洗冷水澡,通过舞蹈运动来温暖我的身体,并通过积极的呼吸冥想来让自己接地——这让我的身体每天都焕然一新。

所以今天,我选择庆祝。

我选择庆祝,在过去的五年里,我已经卖出了比我梦想的还要多的书,这本书是我自己写的,自己出版的,我甚至学会了自己排版。

我选择庆祝辞去工作,成为一名企业家,他建立了销售和营销系统,将这本书变成了一项财务上成功的业务——这本书在第一年的收入实际上比我当时的创业工资还要多。

我选择庆祝我对这个世界做出了贡献,并在五年后继续影响着人们,并将其视为我想在这个世界上创造一切的起点。

如果你愿意和我一起庆祝,今天你会选择庆祝什么?我很想听听。

工程师忽略的隐性成本

原文:http://www.effectiveengineer.com/blog/hidden-costs-that-engineers-ignore

“我只需要几个小时就能实现这个特性,”我们有时会这样说。但在完成之后,我们发现每隔几周,我们要么用该功能修复一个 bug,向另一个工程师解释它,要么帮助回答客户支持关于它如何工作的问题。维护特性的总时间投入远远超过最初几个小时的开发。

软件工程中最难消化的一课是额外复杂性的隐藏成本。有时候,复杂性是问题空间固有的。在调整价格以平衡供需的同时匹配乘客和司机是一个复杂而艰难的问题。将问题和答案发送给最有可能回答和阅读它们的人,同时扩展社区并保持质量,也是如此。或者开发一个能够在所有设备上良好工作并支持实时协作的富文档编辑器。这是我们需要克服的固有的复杂性,以便产品取得成功。

但其他时候,我们与之搏斗的复杂性是我们自己引入的复杂性。我们用很少有人知道的新编程语言编写代码,现在我们必须维护它。或者,我们添加了额外的基础架构,因为我们想尝试我们在黑客新闻上看到的新的热门技术堆栈,但它以我们最初没有预料到的方式失败了。或者我们引入了一个很少有人使用的特性,但是这个特性通过修复和错误报告消耗了我们大量的时间。

额外的复杂性带来了许多隐性成本。我们在构建软件时所做的决定不仅仅决定了我们当前的开发速度。它们还会影响我们在未来维护它所花费的时间和精力。

复杂性的隐性成本

太多的复杂性会增加认知开销,并给完成工作带来额外的摩擦。它以多种不同的方式渗透到团队中——最直接的是通过代码、系统和产品的复杂性,但间接的是通过组织的复杂性。让我们逐一看看这些不同类型的复杂性的隐藏成本。

代码复杂性

代码复杂度不仅仅是代码行数的线性函数,而是组合增长。在复杂的代码库中,每一行代码都可能与许多其他代码行相互影响。我们很难理解组合增长,这就是为什么我们倾向于严重低估完成大型软件项目所需的时间。这就是为什么重写项目有时会大幅度推迟进度的主要原因。

当代码太复杂时,它变得更难提升,更难推理,更难修复错误。很难理清依赖关系和数据流来追踪错误的来源。工程师可能会主动避开代码库中最复杂的部分,选择绕过它,即使它是进行某种更改的最合理的地方。或者,他们可能会避免在这些领域一起工作,即使工作可能会产生重大影响。

系统复杂性

工程师喜欢摆弄新玩具,无论是因为他们好奇,还是因为他们认为新技术可能会为解决他们的一个紧迫问题提供一颗银弹。当 Pinterest 在 2011 年最初扩展其网站以应对快速增长时,他们在只有 3 名工程师的后端团队中使用了 6 种不同的存储技术(MySQL、Cassandra、Membase、Memcache、Redis、MongoDB)。他们试验的每一项新技术在理论上都承诺解决他们现有系统的一些限制。但是相反,他们发现每个新的解决方案都以其特有的方式失败,并且需要花费更多的时间和精力来管理和维护。最终,该团队认识到,通过添加更多的机器而不是更多的技术来扩展会更简单,因此他们淘汰了 Cassandra 和 MongoDB 等系统,并加强了其架构的剩余组件。

将基础设施分割成太多的系统会带来许多隐性成本。注意力分散在多个系统中。将资源集中起来为每个系统构建可重用的库变得更加困难,为传呼机任务增加新人变得更加困难,理解每个系统的特定故障模式和性能特征变得更加困难。每个系统的抽象最终会变得更弱,因为没有投入太多时间在每个系统上。当工具和抽象太复杂或者太多的时候,团队很难理解和发现它们。

产品复杂性

产品的复杂性可能来自于一个不明确的愿景或者一个无节制的野心,导致缺乏产品焦点。这种想在很多方面都做得很好,而不是只在一个核心领域做得很好的愿望,有时会表现为无法向新用户简明地解释产品的用途。产品的复杂性导致更多的代码和系统复杂性——团队添加更多的代码和更多的基础设施来支持新的特性。当一个产品有一个很宽的表面区域时,增加一个新的功能或者修改一个现有的功能需要花费大量的精力去理解和适应旧的功能。

一个过于复杂的产品意味着有更多的代码分支,更多的问题需要考虑,团队需要解决更多的错误报告。工程师和数据科学家需要分析更多的变量,做更多的一次性报告,而不是专注于理解核心用户行为。工程师需要投入更多的时间来拓展特性空间并提高工作效率。每个人最终都会在更多的项目之间进行上下文切换。花费在维护所有这些特性上的时间并没有花费在代码的再投资、偿还技术债务或加强抽象上。

组织复杂性

代码、系统和产品的复杂性反过来又滋生了组织的复杂性。团队需要雇用更多的人来处理和维护已经建立的一切。更大的团队意味着更多的沟通开销、更多的协调和更低的整体效率。招聘过程本身,包括所有的面试和汇报,会消耗团队很大一部分时间。当然,所有新员工都必须接受培训和入职。

雇用更多人的替代方案是将工程组织分成更小的团队——甚至可能创建一个人的团队——来覆盖大的代码、系统和产品表面区域。这减少了沟通开销,但是单人团队有他们自己的成本。更容易遇到完全阻碍项目中唯一一个人的障碍,因为可以分享这些低谷的人更少,这种经历对士气更不利。与他人合作的机会越来越少,这可能会损害工作场所的幸福感和员工的忠诚度。除非每个人都意识到并积极主动地要求反馈,否则个人可能会收到较少的关于他们工作的反馈,因为很少有人分享相同的项目背景。减少的反馈会导致较低质量的代码或无意中引入代码库或基础结构的复杂性。

如何对抗复杂性

东尼·霍尔在他 1980 年的图灵奖演讲中提出,“有两种方法来构建一个软件设计:一种方法是让它简单到没有明显的缺陷,另一种方法是让它复杂到没有明显的缺陷。”在讨论了复杂性导致的不明显的缺陷如何伤害我们之后,我们如何保护自己免受这些成本的伤害呢?

以下是一些你可以使用的策略:

  • **为了简单而优化。**抵制增加更多复杂性的冲动。通过维护成本进行推理。问问你自己,解决问题的最后 20%所带来的复杂性是否值得,或者 80%的解决方案是否足够。

  • 为你的团队或产品定义一个使命陈述,以协调焦点。在 团队极客 中,Brian W. Fitzpatrick 和 Ben Collins-Sussman 解释了他们如何指导谷歌网络工具包(GWT)团队,并鼓励他们写下一份使命陈述。接下来关于使命陈述的内容和风格的争论揭示了首席工程师实际上并没有在产品方向上达成一致!他们被迫面对并调和他们的分歧,最终得出结论,“GWT 的使命是通过使开发者能够使用现有的 Java 工具为任何现代浏览器构建不折不扣的 AJAX,从根本上改善用户的网络体验。”如果他们没有更快地解决分歧,会导致多少努力的分散?

  • 从简单的构建块组成大型系统。Google 是一个专注于构建强大的核心抽象,然后广泛应用于各种应用的组织的例子。它们有基本的构建模块,如协议缓冲区、Google 文件系统和用于远程过程调用的 Stubby 服务器。在这些构建模块之上,他们构建了其他抽象,如 MapReduce 和 BigTable。除此之外,成千上万的应用程序,包括大规模网络索引、谷歌分析网站跟踪、谷歌新闻聚类、谷歌地球数据处理、谷歌时代精神数据分析等等,都被构建出来。^()

  • **明确定义模块和服务之间的接口。**模块和服务的解耦减少了组合的复杂性,否则这种复杂性会从一堆代码中增长出来。在亚马逊,杰夫·贝索斯在 2002 年宣布,公司将转向面向服务的架构,所有团队只能通过服务级接口相互交流。^(虽然这种转变带来了巨大的开发成本,但它加强了服务背后的代码和逻辑的分离,并促进了现在非常成功的亚马逊网络服务的创建。)

  • 定期还清技术债务。我们总是在不完全信息下构建软件。随着代码库响应不断变化的条件而有机增长,熵也会增加。增加的复杂性成为未来发展的负担。在开发计划中安排时间有助于降低成本。许多工程师和团队会对项目之间的时间进行预算,但举办一次性活动也会有所帮助。在 Quora,我曾经组织过一次代码清理日,工程师们集中精力删除代码库中不用的代码。我们在排行榜上跟踪代码清除的进度,这比自己删除代码有趣得多。

  • **使用数据修剪未使用的特征。**在 Yammer,当工程师或产品经理发现增强一个特性或在代码重构中保留它需要付出大量的努力时,他们会查看使用数据以了解该特性是否被实际使用。如果没有,他们会和团队一起决定是否应该削减功能以减少整体工作量。^(这种策略减少产品债务的方式类似于简化代码减少技术债务的方式。)

  • **围绕主题对正在进行的项目进行分组。**这使得团队成员能够彼此共享相同的上下文,这使得参与设计讨论、审查代码或构建可重用库变得更加容易。所有这些活动都有助于提供检查和平衡,个别工程师可能会引入这些检查和平衡。

当我们为学校课程开发软件时,我们得到了一个过于简单的世界观——维持任何复杂性的成本在一堂课结束时都消失了。但在我们的职业生涯中,糟糕的软件决策可能会在未来几年征收税款。

不要把事情复杂化。

杠杆最高的活动并不总是深度工作

原文:http://www.effectiveengineer.com/blog/high-leverage-work-isnt-always-deep

迈克尔设计了可靠的软件系统,编写了干净的代码。他喜欢处理技术上有趣的问题以及代码库的卫生重构。多年来,迈克尔在一家顶级硅谷科技公司的工程阶梯上一路攀升,成为一名高级工程师。

但他职业道德的一个方面让他很难共事,实际上阻碍了他的职业发展。他避开任何与代码没有直接关系的工作。每当一个项目涉及到与另一个团队协作、共享设计文档以获得反馈,或者确定下一步工作的优先顺序时,他就会更多地回到舒适的代码和程序中。他的项目进展经常停滞不前,需要更长的时间才能交付——因此,他的技术主管无法在不督促他实际完成关键的、阻碍发布的任务的情况下,将影响力更大的项目委托给他。

不幸的是,迈克尔认为他应该只关注深层的技术问题的想法在许多工程师中很普遍。认为成功仅仅依赖于你的技术成就会限制你的职业发展。你在工作中创造有意义影响的能力也依赖于其他不太深入的工作。

专注于深层工作是必要的,但还不够

在他的新书 深度工作 中,卡尔·纽波特引入了术语“深度工作”来描述你所做的挑战你认知能力的专业活动——这些活动需要专注和集中,不受干扰。对于工程师来说,深度工作可能是编码或设计产品或系统。对于一名研究人员来说,这可能是研究出一个理论的细节或者进行一个实验室实验。对于设计师来说,可能需要权衡不同的用户需求或者迭代用户界面。

深度工作与“浅度工作”形成对比,浅度工作是指你每天做的不具有智力挑战性的后勤工作,纽波特认为你应该毫不留情地将时间从浅度工作转移到深度工作。为了让你适应这种转变,他记录了自己开发的最大化产出的技巧,从精心规划一天到放弃社交媒体。

在这个世界上,我们的日子经常被电子邮件、会议、网上冲浪和其他分心的事物所主宰,正如纽波特所建议的那样,为深度工作腾出时间是非常有价值的。我们在 Quip 的 15 名工程师组成的小团队能够非常高效,部分原因是我们内部不使用电子邮件,通常每周召开不超过 1-2 次会议。因此,我们能够腾出更多时间来做更深入的工作。

但是以牺牲其他工作为代价专注于深层工作有其局限性,在迈克尔的案例中,实际上对他的项目造成了巨大的损失。根据深度和浅层工作进行推理并不是最大化影响的最佳框架。

一个更强大的框架是 leverage ,它衡量你每花一次时间所产生的影响。最高杠杆的活动——时间投资回报最高的活动——可能包括深度工作,但也包括后勤式的任务,如规划、优先排序和协调影响最大的项目。这些后勤工作可能不太重要,但它们可以显著扩大你的影响力。

因此,虽然专注于深层工作的能力是一项重要的技能,但实际上还有一项更有价值的相关技能:拥有自己的问题和结果的能力。

拥有你的问题和结果

一个有效的工程师——或任何专业人士——的标志之一是有能力对问题负责,并尽一切努力提供解决方案。这些人是强有力的队友,因为他们可以被委托跟进这个问题:为了这个项目的成功,需要做些什么?

认为所有肤浅的工作都绝对不重要的信念——例如,软件工程师应该只专注于编码和设计工作——削弱了你解决这个问题的能力。通常,成功推进项目所需的关键任务可能是肤浅的、乏味的或者没有智力挑战性的。

这项任务可能是与你的队友协调,以确保每个人都优先考虑最重要的工作。

它可能是收集客户反馈,以确保您构建正确的解决方案。

可能是跟进另一个团队的设计师或工程师,看看她是否有时间完成你需要的依赖项,以及她是否会成为瓶颈。

或者它甚至可能排队等待一个关键决策者的批准。在 玛丽莎·梅耶尔和拯救雅虎的战斗中!作者尼古拉斯·卡尔森讲述了梅耶尔在谷歌工作期间的办公时间。多年来,她是 google.com 用户界面(UI)变化的看门人,从工程师到副总裁,每个人都会在她的办公室外面排队 5 分钟,为即将到来的发布获得她的签字。

这是我非常熟悉的一次经历——当我们在 google.com 上启动查询优化和其他用户实验时,我的团队必须注册她的每周用户界面评论。排队是一个很大的技术挑战吗?没有。决策权被一个人限制是不是很不幸?是的。但是,我们的团队排队是否是高杠杆的时间投资?当然——梅耶尔的认可是运送我们数月工程成果和影响数百万用户的代价。这并不是说我们没有尝试简化流程,但是我们也承认任何流程变更都需要很长时间。

在这些不同的情况下,即使不是特别深入的任务,技术问题对于项目的有效执行也是至关重要的。当你拥有一个问题时,你要确保你或其他人注意到那些杠杆点。

最后,如果你想最大化你的效率,不要只考虑深层工作和浅层工作。相反,把注意力集中在完成工作必须完成的最重要的任务上。最高效的工程师拥有自己的成果——这意味着拥有执行深层工作的技术技能,但也拥有元技能和解决任何浅层任务的意愿,这些任务是将工作转化为影响所必需的。

一种经过科学验证的技术如何提高你的学习和记忆能力

原文:http://www.effectiveengineer.com/blog/how-active-retrieval-improves-your-learning

2006 年,心理学教授亨利·罗迪格和马克·麦克丹尼尔揭示了学习科学中一些令人惊讶的见解。他们在一个社会研究班对六年级学生进行了长达一年半的研究,并将主题材料分成三组。对于三分之一的材料,学生在上课开始时(根据指定的阅读材料)、下课时(根据老师的课)以及每个单元考试前一天进行几分钟的选择题测验。在测验中,另外三分之一的材料只是简单回顾,而不是测试——事实陈述穿插在每个测验中,以提醒学生注意要点。最后三分之一是正常教授的,不包括在测验中。为了避免偏见,每当研究人员进行每个测验时,老师自己都不知道哪些材料属于哪三分之一,并走出教室。

然后,罗迪格和麦克丹尼尔比较了三个不同小组的学生在章节考试中的表现。学生们实际上在测验材料上的分数比没有测验材料上的分数要高。此外,这不仅仅是一种短期影响——这种影响甚至会在几个月后的年终考试中持续存在。

但这还不是令人惊讶的部分。

更令人惊讶的是——也是与我们这些已经不在教室的人相关的部分——学生在测验中简单复习的材料上的表现并不比在测验中没有的材料好。同样的时间投入,主动参加一个小测验和被动地复习资料会导致明显不同的结果。特别是,被动再接触材料对长期记忆没有影响。

这项研究和其他几项研究表明,光有善意和花时间学习是不够的。我们如何学习和我们是否花时间去做一样重要。如果我们不认真对待我们使用的技术,我们可能最终会欺骗自己到底学到了多少。幸运的是,过去十年对学习科学的研究实际上向我们展示了如何更有效地学习。

驱散知识的幻觉

如果你和大多数人一样,你可能已经接受了传统的学习方法。我当然有。我童年的大部分教育都强调死记硬背。甚至当我在麻省理工学院上学时,我会在每次考试前努力学习——经常通过阅读和重读书籍、课堂笔记、问题和解决方案,直到我对材料感到熟悉。但是不管我考试考得多好,我认为我已经学过的东西——特别是计算机科学以外的课程——在几周(有时甚至几天)后几乎总是会再次看起来像是陌生的。

我不禁觉得所有的努力都是在浪费时间。

即使在职业上,我们也经常参与许多活动,在这些活动中,我们把大量的信息塞进我们的大脑,却很快忘记了几乎所有我们学到的东西。我们阅读声称能在 24 小时内教会我们 Ruby on Rails 的书籍。我们通过在线课程在 31 天内在学会 iOS 编程。我们参加周末的研讨会或会议,把几十个讲座挤在几天内。几乎每次,我们都会在几天之内忘记我们所学的大部分内容。

这项研究告诉我们为什么。填鸭式学习——有时在文献中的集中练习中讨论——对长期学习无效。这些知识只是暂时储存在我们的短期记忆中,而不会作为长期记忆的一部分重新编码到我们的大脑中。当我们被动地复习材料时,我们只是创造了一种知识的幻觉——我们对材料的流畅性迅速增加,但我们对通过这种方法获得的任何东西的遗忘也在增加。

然而,有一种学习技巧已经被经验证明可以减少遗忘。我们大多数人只是不知道而已。这种技术被称为主动检索。

主动检索的力量

彼得·布朗、亨利·罗迪格和马克·麦克丹尼尔在他们的书《坚持不懈》中解释说,你花在学习上的精力越多,学得越好,记得越牢。当需要努力回忆某件事时,你是在从长期记忆中重建知识,而不是从短期记忆中检索。虽然我们大多数人认为测试是衡量我们进步的工具,但研究表明,测试,也称为主动检索,实际上也是一种有效的学习工具。

当学习时,如果你给大脑一些时间来遗忘,你会付出更多的努力,这样你就可以在长期记忆中积极巩固和重组你的知识,而不仅仅是依赖短期记忆。这就是为什么死记硬背,即你花很长时间阅读大量材料,但只在每一部分上花很少的努力,无助于长期记忆。临时抱佛脚让人感觉很有成效,但事实并非如此。

这项研究证实了这些理论。在 1978 年的一项研究中,一组死记硬背的人在即时测试中得分更高,但后来忘记了他们之前能回忆起的 50%。另一组使用主动提取技术的人只忘记了 13%。^(在 2010 年的另一项研究中,阅读一篇文章,然后对所读内容进行测试的学生,一周后的记忆比未接受测试的学生多 50%。这项测试,通过强迫积极检索文章中的材料,大大减少了遗忘。)

如何应用这项研究使我们的学习更有效

那么如何才能更有效的学习呢?关键是要认识到被动地消耗或复习材料是一种无效的学习方式,而是要使用那些主动地让我们的大脑参与进来的学习技巧。这里有一些策略,我们可以用来利用主动检索,更持久地将我们学到的东西编码到我们的长期记忆中:

  • 当为了学习而阅读时,定期停下来回忆你读过的内容。如果你的目标是记住你读过的东西,那就将被动的阅读过程转化为主动的阅读过程。在每一章的结尾,对自己进行简短的测验,并对你刚刚读到的内容进行反思。对于好奇的人来说,想要尽可能多地吸收知识是很容易的。但是,除非我们花时间练习主动检索,否则大多数知识实际上都不会被记住。

  • 安排时间反思和写下学到的经验教训。写作迫使你从长期记忆的深处提取显著的细节,并将这些细节加工成文字。写博客——与他人分享你的写作——更进了一步,因为你还必须以他人易于阅读和理解的方式写作。也许并不奇怪,我自己在过去两年里写书的旅程帮助提炼和巩固了我多年来学到的许多关于有效工程的经验。

  • 找到积极使用你所学知识的方法。如果你是一名工程师,正在学习一个新的框架、库或编程语言,编写代码,而不只是通读代码或文档。确保你已经安排了一些项目来积极地使用你所阅读的内容。如果你参加在线数据科学课程或研讨会,确定一些你可以用新技能分析的数据集,这样你就不会忘记它们。如果你正在学习一门外语,安排旅行或参加语言交流,在那里你可以练习你所学的东西。

  • 在寻求帮助之前,试着自己解决问题。与我们简单阅读的东西相比,我们能更有效地学习和记住我们头脑中产生的想法。这也被称为世代效应。因此,首先自己解决问题会产生更持久的影响。但是不要纠结太久——知道何时寻求帮助也是一项有价值的技能。

  • 向他人解释和传授想法。如果你最近了解到一种新的思维模式或框架,把它教给你的朋友和同龄人。如果你想出了一个设计,向你的同事解释一下。这样做需要积极地为他人检索和阐述这些想法,并发展足够的理解来解决任何问题。通常,这个简单的行为也揭示了你对事物如何运作的理解中的明显漏洞。

  • 不要试图一次学太多东西,把自己搞得太分散。处理太多的项目意味着你不会在任何一个特定的项目上取得太大的进展。一次塞进太多的信息意味着不花时间主动检索意味着我们不会记住太多的知识。优先考虑你想学的东西,调整自己的节奏。

你花在学习上的精力越多,学习的时间就越长。诀窍在于找到正确的平衡。努力太少,知识很快就会被遗忘。太多的努力,你会得到越来越少的回报,你本可以把时间和精力花在其他事情上。

但是有了主动检索,至少你现在知道了有效地进行权衡的研究和工具。

如何知道什么时候该辞职

原文:http://www.effectiveengineer.com/blog/how-do-you-know-its-time-to-leave-your-job

一些危险信号会让你重新考虑你在当前公司的位置,包括:

  • 得到不公平的补偿。
  • 被虐待、低估或不被尊重。
  • 不同意公司的基本战略或做法,并且无法改变它们。
  • 无法与你的经理和队友相处。
  • 无法融入公司文化。

这些类型的原因并不难识别。它们为尝试新事物提供了具体的理由。

当你在工作中的学习速度逐渐下降并开始停滞时,也是时候离开了。这是一个更加微妙的离职原因,人们很难识别,但可能会影响到更多的人。转换到另一个团队或公司提供了一个机会,可以切换到不同的学习曲线,并加快你的学习。

一般来说,关注自己的学习速度很重要,但对年轻的专业人士来说尤其重要。学习是对自己未来的投资。它还包括——知识不仅产生知识,而且更多的知识给你一个更快获得知识的基础。这就是为什么大多数人在大学学到的东西比他们在高中学到的多,而且在高中学到的东西比他们早年学到的多。理想的情况是,大学毕业后,你应该让自己比以前学得更多。

Palantir 的联合创始人 Stephen Cohen 抓住了学习的复合效应的重要性,在一个关于为什么大学毕业生应该在创业公司而不是老牌公司工作的论点中:

如果你 22 岁从斯坦福大学毕业,谷歌聘用了你,你将朝九晚五地工作。就努力程度而言,可能更像是 11 比 3。他们会给很多钱。很放松。但他们实际做的是付钱让你接受一个低得多的智力增长率。当你认识到智力是复合的,失去长期复合的代价是巨大的。他们没有给你一生中最好的机会。然后,可怕的事情可能会发生:有一天你可能会意识到你已经失去了竞争优势。你不会再是最好的了。你不会爱上新的东西。你所在的地方很舒适。你变得自满和拖延。

创业可能不适合所有人,但是不要欺骗你的智力增长率的信息仍然适用。

对你正在做的事情的热情呢?对你公司的使命或你正在做的事情有强烈的激情和兴奋对于保持陡峭的学习曲线至关重要。激情和有意义的工作为长期学习提供了动力,让你更经常地处于心流状态。Mihayli Csikszentmihalyi 是世界上积极心理学的主要研究人员之一,他提出了“心流”理论,这是一种你非常享受你正在做的事情以至于你甚至没有注意到时间流逝的状态,他发现更多的心流通常会带来更多的幸福。从长远来看,除非你相信并喜欢你所做的事情,否则很难保持学习的动力或进入心流状态,如果你热爱你所做的事情,也很难不变得更好。

评估你的学习率首先需要确定在一项工作中可以发生的许多不同类型的学习:

  • **专门针对您工作职能的技术学习。**例如,对于软件工程职位,这可能包括学习一门新语言、熟悉新工具、提高设计新系统的能力等。作为个人贡献者,更好地掌握这些技能会让你更加精通。
  • **优先排序技巧。**通常,你可以做几十或几百件可能产生价值的事情。找出在任何给定的时间点以最少的工作量产生最大价值的最有效的活动是困难的,但这可能是你能从专业上学到的最有价值的一课。
  • **执行。**学习如何或如何打造和交付优秀的产品或服务,以及如何坚持不懈地按时完成需要实践。
  • **导师和管理技巧。**一个组织发展得越快,你就能越快成为团队中更资深的成员。资历提供了指导或管理其他队友、塑造公司文化和价值观以及影响团队方向的机会。
  • 团队领导技能。使团队有效运转所需的技能不同于个人高效运转所需的技能。里程碑应该如何组织?你是如何有效协调并最大限度减少沟通开销的?你如何确保一个团队团结一致?

在你职业生涯的不同阶段,你会对这些技能有不同的评价,你应该寻找发展你所重视的技能的机会。所有这些技能在你当前公司的工作之外都是通用的。你把这些技能和经验带到你的下一份工作中。

还有一种学习对职业成功很重要,但不太容易转移到其他公司。这是关于如何在公司定义的特定流程中良好运作的制度学习:如何获得关键把关人对决策的批准,如何在路线图上优先考虑你相信的项目,如何根据公司的资源分配流程为你的团队协商更多资源,等等。为了做好这件事,一定量的这种制度学习是必要的,你所发展的一些谈判和说服技巧将在未来对你有所帮助。但是,在某种程度上,这种学习处理的是你需要处理的特定官僚主义或流程,它的价值明显低于其他类型的学习。

当你第一次加入一家公司时,学习曲线通常会非常陡峭(如果你做了一个好的选择,希望如此)。你沉浸在新技术、新产品和新团队中,有机会从多个方面学习。当我刚从大学毕业就加入谷歌的时候,我在那里的头六个月学到了很多东西。谷歌在 GoogleEDU 培训材料方面做得很好。我沉浸在所有讨论核心抽象为何存在以及它们如何工作的代码实验室中。我研究了编程风格指南,以了解最佳行业实践。我阅读了关于搜索索引和其他正在内部构建的可扩展工程系统的设计文档。我学会了制造和运输一些在 google.com 每天被数千万到数亿人看到的东西。

您的学习速度可能会由于组织问题(可能过程变得过于官僚,限制了您快速迭代和发布的能力)或由于维护问题(团队没有足够快地增长以适应产品的复杂性)而降低。第二个让你很难转换项目,从事新的工作。

当我意识到许多项目要么没有具体的启动路径,要么依赖于不透明的审批流程,而我对这些审批流程几乎没有可见性或控制力时,谷歌开始对我发出警告。能够发布产品对我来说很重要,因为我想学习如何构建伟大的产品,快速、迭代的反馈是学习的必要基础。当我计划再呆一年我能完成什么,并合理地启动时,我并不感到满意,所以我离开了。通过留下来,我肯定可以学到更多东西——我可以深入了解更多主要系统的内部——但我的学习速度不再反映我刚开始时遇到的情况。

当我感觉自己的学习速度开始停滞不前时,我也离开了在线视频初创公司 Ooyala。在那里,我了解了如何构建和销售企业产品、flash 视频和分析的复杂性、项目评估和团队组织等等。当我清楚地认识到,通过加入一个规模更小、发展更快的团队,我可以在工程和产品开发方面学到更多东西时,我离开了。我在 Ooyala 工作了一段时间后才发现的一个促成因素是,我对开发企业产品的热情和动力远不如开发日常使用的消费品。

我离开 Quora 也遵循了同样的模式。在这家以知识为中心的初创公司的三年时间里,我在个人和职业方面学到和成长的东西比在其他任何公司都多。但最终我决定,我将通过休个人假来研究和撰写我一直想做的关于有效工程的书。

如今,我一直记得大学三年级的夏天在微软实习时收到的一条很好的建议:至少每两年要重新审视和反思自己在职业生涯中的位置。即使你对自己的工作非常满意,这项练习也会迫使你去检查你是否真的喜欢你的工作,并在工作中学习,而不仅仅是舒服而已。

这篇文章基于我最初在 Quora 上写的的一个回答。

如何用一个数字来模拟你的时间价值可以简化决策

原文:http://www.effectiveengineer.com/blog/how-much-is-your-time-worth

我的朋友提着一箱她用过的罐子和瓶子进了保险箱,在顾客服务柜台等着。几分钟后,一名客户代表清点了 5 美分和 10 美分的容器,仔细检查了计算结果,并奖励了我的朋友 1 美元和零钱,作为她 10 分钟耐心的回报。我朋友的节俭和节俭——毫无疑问是从她的亚洲移民父母那里遗传下来的,他们辛辛苦苦攒钱进入美国中产阶级——让她很难简单地丢弃她 5 美分和 10 美分的集装箱存款,这些钱她认为是理所当然属于她的。所以她每隔几周就会尽职尽责地去一次。

没有意义的部分?我的朋友在谷歌做工程师,时薪超过 60 美元。但是每一次旅行都把她的时间看得比最低工资高不了多少。她花了一些时间说服自己,才同意改掉这个习惯。

虽然对许多工程师和年轻的专业人士来说,用易拉罐和瓶子换镍币和一角硬币不值得我们浪费时间,但我的朋友并不是唯一犯这种错误的人。许多聪明人低估了自己的时间,下意识地或无意地用自己的时间换取低工资。

对于一个年收入 8.5 万美元(美国软件工程师的工资中位数)的人来说,某些常见的行为在经济上是不合理的,假设我们没有从中获得任何非金融效用:

  • 花 30 分钟在多个网站上比较购物,寻找尽可能低的价格,只为了在我们想要的相机存储卡上节省 5 美元。
  • 剪下 10 分钟的实体或电子优惠券,在购物时节省 2 美元。
  • 等待 30 分钟的公共汽车或班车到达,而不是支付 10 美元招呼优步,Lyft 或出租车到我们的目的地,只有 10 分钟的车程。
  • 花 15 分钟在一个繁忙的地区寻找一个免费的或有咪表的停车位,而不是花 6 美元在一个停车场找一个有保证的停车位。
  • 在“免费”的一天参观博物馆,此时所有展品都排到了最大容量,而不是在休息日花 20 美元去参观。
  • 在塔可钟排队 20 分钟就为了一份免费的塔可钟,因为我们在广播广告上听说了它。
  • 不买我们喜欢的衣服,因为另一家商店可能以更低的价格出售类似的东西,而不考虑每次试穿衣服需要 30 分钟的时间。

这些活动把我们的时间定价得太低了,假设它们不是我们真正喜欢做的活动。如果剪优惠券和排队是你的乐趣所在,那么无论如何不要让我这篇文章分散你的注意力。但是如果你想更有效地利用你的时间,如果这些活动占用了你与家人、朋友、爱好、志愿者工作或者其他你喜欢做的事情的时间,那么继续读下去。那么什么时候用我们的时间来换取金钱是有意义的呢?我们应该什么时候付钱来避免不愉快的、耗时的经历?一个关于如何珍惜时间的好框架可以帮助我们回答这些问题并做出更好的决定。令人惊讶的是,仅仅用一个数字来模拟我们的时间价值是非常有价值的。

为什么要用一个数字来模拟时间的价值

如果我们能计算出一个数字来代表我们时间的货币价值,它可以简化我们做出的许多决定。根据一位经济学家的说法,我们真正的效用函数可能更复杂,但对于某些日常决策来说,一个单一的数字可能是一个有用的近似值。简单地比较一下我们的时间价值和给定的活动每小时能为我们节省或赚取多少。如果我们能获得更多,那就去做;如果没有,就花钱保护我们的时间。

这并不是说我们应该总是把时间等同于金钱。给与家人和朋友共度的时光、我们的幸福、我们的健康或者我们生活中的许多经历和冒险贴上价格标签是很危险的。但是对于某一类决策——无聊的、我们对实际活动漠不关心的日常决策——拥有一个简单的框架来快速评估我们是否应该用时间换取金钱会非常有帮助。

例如,我们可以用它来减少优柔寡断,限制我们在两个选择之间痛苦挣扎的时间。如果一个决定最多能为我们节省 10 美元,并且我们认为我们的时间是每分钟 1 美元,那么我们做决定的时间不应该超过 10 分钟。在那之后,我们浪费的时间比节省的成本还多,还不如抛硬币决定。

我们也可以用我们的时间价值来回答更复杂的问题。我记得很多年前,我花 15 美元从旧金山国际机场(SFO)乘坐一辆超级面包车前往帕洛阿尔托。乘坐汽车通常需要 20 分钟,但因为面包车必须在我之前等待和放下其他 5 名乘客,整个磨难花费了 90 多分钟。那次经历之后,我发誓再也不乘坐超级飞船了。

但是我该怎么办呢?我应该支付优步还是 Lyft?我是否应该花时间(以及多长时间)去寻找一个同方向的陌生人,他可能想要合乘一辆出租车?我是否应该为附近的短期停车场每天支付 36 美元?或者每天为长期停车场支付 18 美元,但警告说可能需要 30 分钟才能等到载着人们往返于长期停车场的停车班车?公共交通有意义吗?当有两个人时,等式是如何变化的?

假设我们将此视为纯粹的财务决策,并且对特定的交通方式没有强烈的偏好,那么使用一个简单的数字来模拟我们的时间价值的好处在于,我们可以将每种交通方式的成本计算为人数和行程长度的函数。例如,为了简单起见,假设我们的时间价值为每分钟 1 美元,长期停车会增加 1 小时的往返穿梭时间,优步或 Lyft 的固定费率为 60 美元。然后,我们可以对各种运输方式的成本建模如下:

基于这些参数,最佳决策是对 3 天以内的行程使用短期停车,对 3 天以上的行程使用优步或 Lyft,并始终避免长期停车。您自己的决策规则将根据您的参数而变化。但是这个模型足够灵活,如果我们知道平均等待时间,我们可以包括其他交通选择;如果我们有更多的人,我们甚至可以增加等待时间的成本。我们不必为我们做出的每一个决定做这样复杂的分析(分析也需要时间),但是这种分析说明了当我们有一个简单的时间价值模型时会发生什么。

同样,我们可以用我们的模型来回答这样的问题:为了避免在飞机上停留 2 小时,我们应该多付多少钱?我们应该付钱给会计师帮我们报税吗?我们应该外包任务还是自己做?我们应该为一本书、一门课程或一个帮助我们完成更多工作的工具付费吗?

一旦我们内化了这个模型,一个直接的推论是,我们在一个纯粹的财务决策上花费的时间应该与它能为我们节省或产生多少钱成比例。如果协商一份工作的薪水可以让我们多获得 3000 美元的税后收入,理论上我们应该愿意在这个决定上多花 1000 倍的时间,而不是一个可以节省 3 美元的小决定。我们大多数人不会这样做,如果我们把更多的时间放在更大的决定上,我们会过得更好。

如何计算你的时间价值

那么,我们如何得出时间价值的数字呢?一个候选者是我们的税后小时收益率,定义为我们的税后收入(工资和福利)除以工作小时数。这是一个可以理解的时间价值模型,我们可以很容易地计算出来。如果有人一年挣 10 万美元,有 15 天假期和 10 个假期,每周工作 40 小时,那就是 53 美元/小时,或者税后大约 32 美元/小时(假设税率为 40%)。如果他改为每周工作 60 小时,税后数字下降到税后 21 美元/小时。确定一项活动在财务上是否有利可图就变成了计算它是否比税后小时收益率节省或赚取更多的钱。然而,这个数字没有考虑一个人实际上有多少空闲时间。直觉上,每周工作 80 小时的初创公司或投资银行员工更珍惜时间,因为他们的空闲时间更少。

解决这一缺点的另一个模型是盈亏平衡支出率,定义为税后总收入除以空闲时间。另一种思考方式是,一个人在空闲时间每小时需要花多少钱才能最终零储蓄。假设我们每天睡 8 个小时,花 1 个小时满足基本需求,那么每周还有 105 个小时来分配工作和空闲时间。收入在 10 万美元以上、每周工作 40 小时(因此每周有 65 小时空闲时间)的个人的收支平衡支出率大约为每小时 20 美元。如果他每周工作 60 小时,工资将增加到 28.50 美元,如果他每周工作 80 小时,工资将增加到 51 美元。因此,对于空闲时间较少的人来说,收支平衡消费率更重视时间。

这两个模型都不是完美的,你可以根据你个人的具体情况上下调整最终的数字。你可能会心甘情愿地接受一份更有趣但薪水更低的工作,或者你可能会得到创业股权的部分补偿;因此,你可能会更加珍惜你的时间,因为你仍然可以选择更高的收入。储蓄目标(大多数人不想零储蓄)、购买目标(比如房子)、债务(包括学生贷款)或者你从一项活动中获得的非财务享受可能会导致你向下调整,并偏向于用你的时间来支付。相反,想要花更多的空闲时间与朋友和家人在一起,非常不喜欢某些类型的工作,或者已经有了大量的银行存款,这些都可能增加你的时间价值。

量化各种调整是一项艰苦的工作,但即使有一个模糊的近似值也比没有好。你甚至可以做一个四舍五入的调整,让心算变得更容易。最终,你可以考虑任何对你重要的输入。所有这些前期工作的产出是一个模拟你的时间价值的单一数字。该模型帮助你从经济学的角度理解什么时候做某事是理性的或者非理性的,并减少浪费的时间。

将你的决定简化为简单的数字比较并不总是有意义的。很多经历是不可估量的,难以量化的。但是也有越来越多的技术和服务让我们买回更多的时间。Odesk 允许我们将任务外包给远程工作人员。优步和 Lyft 让我们减少了等待交通工具的时间。亚马逊 Prime 和谷歌购物快递让我们在实体店排队的次数更少。Homejoy 让我们更容易雇人帮忙打扫房间。TaskRabbit 可以满足许多其他的需求。

了解我们的时间有多少价值可以让我们把更多的时间——我们最有限的资产——用在正确的地方。

如何从一般工程师过渡到 10x 工程师

原文:http://www.effectiveengineer.com/blog/how-to-become-a-10x-engineer

一个普通的工程师能开发出超过他或她的同龄人 10 倍的技能吗?不太可能。

一个技术能力一般的工程师能发展成为一个个人贡献者,产生 10 倍于他或她的同行的影响吗?有了正确的心态和技能发展,绝对可以。

实现这种转变的关键是理解这两个问题之间的区别。

技术专家与问题解决者

很多年前,一名俄罗斯黑客在我的团队工作。他能熟练地对复杂的软件进行逆向工程。对于一个困难的、一次性的问题,他可以比我的任何队友更快地组装出一个工作原型或解决方案。不幸的是,他也不重视编写可读的代码,他的贡献经常会变成任何需要维护它们的人的债务。对队友缺乏同理心严重限制了他的影响力。

这个经历说明了工程师们持有的一个最大的误解:将技术能力等同于影响力。例如,许多软件工程师将他们的角色狭隘地定义为编码员和程序员。即使对于那些关心自己技术的人来说,提升自己的职业生涯通常也意味着提高他们的技术专长,这样他们就能写出更好的代码。

当然,磨练你的技术技能没有错——我们中的许多人成为工程师是因为建造东西令人难以置信地满足。我们领域中最好的技术专家通常会赢得同行的尊重。

然而,增加技术专长并不是增加影响力的唯一途径。如果你不是顶尖的技术专家,那么让你只专注于深化技术技能的观点会成为一种限制性思维。

相反,如果你拓宽了你心目中的工程师模型,把他当成为用户解决实际问题的人,你就为自己打开了更多的机会。最终,就成功和影响而言,重要的不是你是否能写出最好的代码或解决最困难的技术问题,而是你是否在为人们创造价值。

通过将工程师视为问题解决者,你可以开始问自己这样的问题:

  • 我应该把精力放在什么问题上,才能为用户实现价值最大化?
  • 我如何区分工作的优先级,以便更快地实现价值?
  • 我如何降低风险以提高我所从事工作的成功可能性?
  • 我如何解决与团队成员的冲突,以建立更牢固的工作关系,从而完成更多工作?
  • 我如何更好地与我的直属团队或相关业务或销售团队沟通,以确保更顺利的发布和上市?
  • 我如何更好地确保用户真正利用我所构建的东西的潜在价值?

在创造价值的多阶段过程中,技术执行只是其中的一步——尽管是重要的一步。这个过程是一个将你的工程努力转化为影响的管道,管道的每一步都可以被模拟成一个潜在的乘数。例如,为了让你的影响力翻倍,你可以将你的技能翻倍。或者,你可以学习将你的工程努力引向价值加倍的问题,或者开发工作流程,将你项目的风险和失败率降低一半。

掌握增强影响力的技能

那么,一个技术能力一般的工程师如何成长为能够产生 10 倍于同龄人的影响力的人呢?从我们的简单模型中可以看出,实际上你可以控制很多杠杆。

即使假设你的技术技能会停滞不前,你也可以而且应该继续投资于你的技术技能。但是也有许多其他的技能和活动可以成倍地增加他们所创造的影响。这些乘数复合。积少成多,你就离成为 10 倍工程师更近了。

例如,您可以:

  • 寻找更便宜的方法来验证假设。如果你能快速原型化多种想法,并根据反馈拒绝糟糕的想法,你最终会比那些感觉必须在向用户展示之前完美完成某样东西的人更快地找到最有前途的选项。这一优势也是为什么在 Quip,我们的工程师经常花费时间持续且廉价地测试产品的变化,以验证我们的假设,然后才在特定方向投入太多精力。
  • 完成并交付您的交付件。你的项目中有多少仍未完工?通常,项目中最有趣的技术部分是在开始的时候(当你在探索新事物的时候)或者是在中间的时候(当你在执行和取得进展的时候)。发货的最后 10%的工作——以及所有相关的协调、错误修复、批准和测试——可能会很乏味。但是没有最后的 10%,你投入了 90%的工作,实现了 0%的实际商业价值。成为能够完成并交付项目的人,你将比那些只做了一半的人产生更多的价值。
  • 深入了解你所工作的商业领域。想象一下,如果你不再只是做分配给你的工作,而是能够识别新的战略领域、项目或业务工具,并解决这些问题。你将能够用同样多的工程努力带来更大的影响,因为你处于一个更有价值的领域。你的胜利会更有价值。获得这种洞察力的方法是与你的用户——顾客、客户、业务部门、销售团队或内部团队——交谈,以更深入地了解人们想要什么。
  • **严格优先考虑高杠杆项目。**我们选择做什么有各种各样的原因——也许有些事情看起来很紧急,或者很有趣,或者我们很累,看起来很无聊。相反,如果你根据杠杆——每次投资的预期影响——来选择你的工作,你可以极大地增加你的整体影响。高杠杆的工作不一定在技术上更难——甚至可能更容易——但是识别工作确实需要努力。问问你自己,“如果你只能整天做一件事,哪一件事会给你的团队或企业带来最大的影响?”
  • **将你的精力转移到你的强项上,在这方面你拥有可持续的竞争优势。**你真正擅长什么?也许你很擅长给含糊不清的东西一个结构,或者组织复杂的项目让它们保持在正轨上。或者,在收集用户需求并将其转化为具体功能方面,或者在分析数据以了解正在发生的事情方面,你可能比你的同行做得更好。将你的精力集中在战略性地运用你的优势,在具有最大商业影响的项目上取得进展。
  • 成为更好的沟通者。随着团队的成长,首当其冲的就是沟通。工程中如此多的低效率发生是因为沟通中断,无论是在客户和支持之间,支持和产品管理之间,产品管理和工程师之间,还是在一个工程师和另一个工程师之间。您为确保可靠和顺畅的信息传递渠道所做的工作越多,您的工程努力实际上就越有可能成功。
  • 跳槽到工程文化更强的公司或团队。你可能听说过这样一句话,“你是和你相处时间最长的五个人的平均水平。”如果你把时间花在一个更有才华、拥有更好的工具和实践的工程团队上,你自己会产生更大的影响。“为学习而优化”这句箴言是职业发展的关键,让你周围的人成为你可以学习的对象是其中很重要的一部分。

一个关键的观察是所有这些技能和活动都是可以学习的。它们都不是你与生俱来的——擅长某项技能的人只是练习了更长时间。

这些技能和活动中很少是技术性很强的,然而,如果你能在其中任何一项上提高两倍或三倍的效率,它们会直接影响你的技术产出的效果。此外,在几个互补的领域从优秀到卓越要比在这些技能中的任何一个领域成为佼佼者容易得多。除非你认为你可以通过成为你的技术领域中的佼佼者而脱颖而出,否则你会发现通过将帮助你有效解决高价值问题的能力叠加在一起,你会更成功地成长为 10 倍的工程师。

优化学习这些互补的技能,随着时间的推移,你的影响力将会翻倍,四倍,甚至 10 倍。

如何为初创公司的新员工建立良好的入职流程

原文:http://www.effectiveengineer.com/blog/how-to-build-a-good-onboarding-process-for-new-hires-at-a-startup

这篇博文基于我最近在 Quora 上写的回答

"不成功便成仁。"这不是 Ooyala 首席技术官、前谷歌联合创始人肖恩在我成长过程中可能对我说的最鼓舞人心的话,但它们确实为我在该公司的入职经历以及我首次涉足创业世界定下了基调。没有救生圈来——我的预期是,我会挣扎,最好想出如何生存,快。

从我在这家名为 Ooyala ^(的 30 多岁初创公司的第一天起,我就发现自己在一个充斥着技术债务、只有少量文档、没有单元测试的代码库中艰难跋涉,这个代码库是用一种我不熟悉的类似 Java 的语言 ActionScript 编写的。我有两周的时间来开发和推出一个已经向视频出版商承诺的功能,这个功能将允许他们安排他们的在线视频何时播出。为了赶上最后期限,我需要学习 ActionScript,熟悉 Ruby on Rails,熟悉 Flash 视频和图形库,同时还要跟踪代码,代码中充斥着晦涩的变量名,如“qqq”和可疑的函数名,如“load2”和“load3”。)

最后,我花了两个星期,70-80 个小时,伤脑筋地按时发布了我的第一个专题。“不成功便成仁”的入职经历至今仍是我最紧张、最害怕的工作经历之一。在谷歌的早期,我一直在想,离开舒适的谷歌,加入创业世界,对我来说是不是一个正确的选择。我最终适应了新的环境,并且在团队其他成员的帮助下,早期未经测试的神秘代码早已被强大的工程实践所取代。在那里的两年里,我从敬业的团队中学到了很多,但毫无疑问,入职本可以是一次更顺利、更积极的经历。

2010 年 8 月,当我加入 Quora 的 12 人团队时,入职流程并没有进行太久。Charlie Cheever 给了我几个开始的 bug,但是因为没有任何付费客户,所以除了自己强加的东西之外,没有时间压力。入职培训主要包括我走向团队中不同的人,请他们向我解释一些事情,也许还有一两次特别的白板讨论。我在 Ooyala 的入职经历和两年在创业世界的紧张工作让我做好了应对一切的准备,所以相比之下,在 Quora 的成长感觉相当成熟。

我的入职经历后来激励并塑造了我后来在构建 Quora 的入职计划方面的工作,我在 2012 年 11 月曾详细写过这个项目:Quora 新工程师的入职流程是什么?

投入时间在入职培训上真的值得吗?

初创公司有很多事情要做,许多公司都在争分夺秒地开发产品,并在资金耗尽之前获得用户和客户。因此,第一个问题是,转移资源投入到入职培训是否有意义,以及何时有意义。许多创业公司要么不进行投资,要么推迟投资,而是依靠新人自己提问和解决问题。

虽然这可能行得通,但临时的、不存在的或定义不明确的入职流程的一些风险包括:

  • 淘汰优秀的人,如果给他们多一点指导,他们可能会更有效率,这将是一种耻辱,因为公司通常要花多少精力来招聘人才。

  • 因为没有足够的机会来评估他们的工作,或者因为你想知道也许你只需要在他们变得更有效率之前给他们一个提升的机会,所以没有及时发现表现差的人或糟糕的雇员。

  • 新员工的生产性产出减少,因为加速需要的时间比预期的长。

  • 新员工压力增加或幸福感降低,尤其是那些以前可能没有在类似初创企业的环境中工作过的人。

随着越来越多的人被雇用,这些风险也会增加,尤其是如果你的招聘渠道偏向于更多没有经验的雇员,比如大学毕业生的第一份全职工作。

随着团队的成长,非正式的入职体验会停止扩展。不同的员工在不同的时间向新员工解释概念,如果没有标准化的入职流程,这些零散的解释很容易忽略有用的信息。一个工程师可能学不到一个有帮助的关键抽象,因为他最初的项目是关于外围特性的,而且他从来没有花时间走过部分核心代码。或者,如果期望没有明确传达,新员工可能会花太多时间学习新东西,直到一个月后才真正有效率。当一个创业公司很小的时候,没有那么多地方可以看,也没有那么多人可以问,来确定什么是最重要的。随着一个公司、一个产品和一个代码库变得越来越大,要探索的事物的表面积也在增加,对于一个新人来说,在没有任何指导的情况下,自己想清楚先学习什么变得越来越困难。

入职流程是引导新员工的学习和活动朝着团队认为最重要的方向发展的机会。设计一个好的入职流程可以提高新员工剩余时间的效率。此外,建立一个良好的入职计划的初始时间投资会随着每一次额外的雇佣而不断获得回报。

设计入职流程

在 Quora 工作期间,我领导了新工程师入职计划的开发,并直接负责定义工程导师的角色、组织和安排入职会谈、协调培训材料的制作以及举办导师培训研讨会等领域。2011 年 12 月,我开始从事 Quora 的入职计划,当时我和查理意识到,在即将到来的那个夏天,我们将有 10 多名新的全职工程人员和实习生加入。我们的团队当时不到 30 岁,只有 14 名工程师,所以我们知道如果没有一个好的入职流程,事情很容易变得太混乱。

当我第一次创建 Quora 的入职计划时,我知道我希望它比我自己的计划更顺利,压力更小。在决定材料、谈话、指导等之前,我首先为一个良好的入职流程定义了一组目标。来实现这些目标。团队成员分享了他们对之前入职经历的喜欢和不喜欢。我还接触了其他公司的工程师(包括我在 Ooyala 的朋友,他们已经开始在那里建立一个入职计划),以了解他们如何进行入职培训,以及哪些工作做得好。

入职目标可能因初创公司而异。我将介绍一些我认为一个好的新员工入职流程应该达到的目标,并描述一些我们在 Quora 为每个目标所做的工程的例子。

1。尽快培养一名新员工。

一家初创公司往往缺乏人力资源,花时间培养一名新员工确实意味着对那些参与入职流程的人的生产力造成短期影响。然而,一个新员工越早得到提升,她就能越快变得富有成效,为创业公司做出有意义的贡献。从长远来看,这对创业公司和新员工都更好,因为总的来说会完成更多的工作,新员工也想证明自己是团队中富有成效的一员。

我们在 Quora 强调 rampup 时间重要性的一个方法是给每个新工程师分配一个导师,这个导师负责这个人的成功。然后,我们达成了共识,这是可以接受的,事实上,我们强烈鼓励导师和其他队友在日常工作之外花时间培训新员工。预计在最初几周,导师在培训学员时可能会损失 25%或更多的生产力。导师做的事情包括对学员进行初始代码审查,挑选出广度和难度不断增加的项目,概述学员应该掌握的提高效率的技能,结对编程以教授技巧和诀窍,教授优先排序策略,或者帮助找出与不同团队成员合作的最佳方式。

我在 Quora 的时候指导过很多人,我会在第一天明确告诉我的学生,让他们进步比完成我的其他工作更重要。这有助于建立一个共同的目标,即尽可能快地提高他们的水平,并建立一种期望,即他们应该毫不犹豫地提出任何问题。

2。传授创业公司的文化和价值观。

每个创业公司的文化都是不同的。虽然新员工可能已经通过招聘和营销材料以及通过在面试中与团队成员会面对文化有所了解,但入职流程是确保新员工了解团队共享价值观的绝佳机会。这些价值观可能围绕着完成任务、数据驱动、团队合作、构建高质量的产品和服务,或者其他。当然,在入职期间有效地做到这一点的先决条件是,实际上在内部对什么定义了创业公司的文化、使命和价值观有一个共同的理解。

例如,在 Quora,产品很自然地成为一种学习文化。但是实际上有一种倾向,在刚加入一家公司的时候,特别是对于那些刚从大学毕业的人来说,T2 把太多的精力放在学习上,而不是在快速行动和完成工作上。为了确保新工程师了解公司的步伐,我们试图让每个新工程师在第一天提交一份提交,将自己添加到团队页面,并在第一周结束前部署一个 bug 修复程序、一个小的新功能或一项新实验。

这意味着充分简化第一天的活动,以便新员工有足够的时间来设置她的开发环境,进行简单的代码更改,运行测试,并在第一天提交更改。这也意味着指导者需要做一些准备来发现他们认为新工程师可以在第一周发布的错误、特性或实验。因为在我们自己的项目评估和新员工需要多长时间来适应方面往往会有很多差异,所以我通常建议导师选择他们认为自己能够在大约一天内完成的初始项目,这样即使项目延期,仍然有很大的可能性在一周内完成。

3。向新员工展示成功所需的广泛基础知识。

随着创业公司的成长,产品、团队和代码库的复杂性也在增加,这意味着新员工需要涉水去识别每个新人都应该知道的东西。在我的职业生涯中,我还注意到,那些很好地学习了基本工具和抽象的工程师——无论是因为他们在确定要学习什么方面做得更好,还是因为有导师或启动项目鼓励他们学习关键概念——往往在几个月后更有效,因为他们知道什么是可用的以及何时使用它们。一个好的入职计划的一个关键部分是确保每个人都在这些基础上有一个一致和坚实的基础,这样就可以减少谁在最初的项目或指导任务中学到了什么。

在 Quora,我们在工程上实现这一目标的两种方式是:

  • 在新员工入职的前两到三周,安排一系列约 10 次的入职会谈。这些讲座介绍了代码库,解释了 git 的数据模型,介绍了测试预期,演示了调试和分析工具,并涵盖了我们认为对新员工在头两三周内学习很重要的各种其他主题。最重要的(比如代码库介绍)我会在每次新员工开始时安排,即使只是一个新员工,而其他一些我会一起批处理,直到有更多的人。

  • 编写代码实验室来解释公司的抽象和工具。Codelabs 是我从谷歌借来的一个概念。codelab 是一个文档,它解释了为什么要设计一个核心抽象,展示了如何使用它,遍历了代码库的相关部分,然后提供了一组练习来验证理解。我花了大约三天时间编写了一个好的第一个代码实验室,其他人可以模仿,然后招募团队中的其他人加入进来,编写其他代码实验室,这些代码实验室涉及每个工程师都应该知道的核心抽象和工具。

这些投资主要涉及创建可重复使用资源的前期一次性成本,随后是更新过时材料和实际举办讲座的相对较小的经常性成本。

4。让新员工融入团队。

在初创公司,你可能比在其他地方花更多的时间和队友在一起。这有助于鼓励与新员工建立更多的团队关系,尤其是那些可能更害羞或更安静的人。

在 Quora 的早期,我们主要依靠导师来帮助介绍新员工。后来,团队的一些成员开始组织小型集体午餐,以帮助提供更多的结构化机会来认识团队中的其他人。成批的新员工在同一天开始工作也有助于创造更多的同志情谊。


这些目标只是你在设计创业公司的入职流程时可能要考虑的一些例子。随着创业公司的成长,入职目标也可能发生变化。例如,根据与脸书公司(当然,现在还不算是一家初创公司)参与训练营入职流程^(的工程师的一些谈话,让新工程师决定他们可能想加入哪个团队是很重要的。在训练营期间,新工程师会尝试与这些团队相关的小项目。在组织真正拥有定义良好的工程团队之前,这不是一个入职目标。)

重要的是要认识到,建立一个入职计划可以而且应该是一个迭代的过程。也许你会简单地从一个关于如何建立一个开发环境的文档开始,目标是让一个新的工程师在他的第一天之后准备好修改代码。也许你后来意识到并不是所有的启动项目都一定提供相同的 rampup 好处,并决定阐明一套指导原则,指导你如何挑选好的启动项目。也许你注意到你一遍又一遍地给出相同的代码库或架构演练,并意识到如果你只是为这个主题准备一个演讲,会更有效和高效。

无论你在哪里设计入职流程,想想你自己的入职经历,并调查团队中的其他人,以了解哪些工作做得好,哪些需要改进。想一想新员工在哪里挣扎,你可以做些什么来帮助他们更快成长。想想你希望在创业期间早些时候学到的关键概念、工具和价值观。一旦你有了一些想法,实施最有价值的想法,然后调查后来的新员工和与他们一起工作的团队成员,看看这些改变是否有帮助。冲洗并重复,希望你的新员工入职不会像我在 Ooyala 的经历那样有压力。

如果你想就如何建立一个好的入职培训项目获得更多建议,请随时联系我

避免面试候选人犯的灾难性错误

原文:http://www.effectiveengineer.com/blog/how-to-distinguish-yourself-from-other-interview-candidates

“我能为你解答什么问题?”我问面试人选。我们已经解决了一些技术问题,我已经准备好衡量他对产品、团队和任务的好奇心和热情。

“我真的没有,”他回答说。

显然,经过几次面试,他已经知道了关于这家公司的所有信息,我也没有什么可以补充的了。如果他想表现出对这份工作的兴奋,这是他能给出的最弱的回答,然而,他并不是我采访过的唯一给出这种回答的聪明人。

在过去的八年里,我在谷歌、Ooyala 和 Quora 上面试了大约 500 人,大部分是工程师职位,但也有管理、数据科学和产品职位。几乎在每一次面试中,我都给候选人一个机会来扭转局面,问我一些问题。

最强的候选人用好奇来回应。他们想知道公司文化是什么样的,团队如何开展运输项目,产品在市场上面临哪些挑战,工作环境的哪些方面可以改善,以及正在采取哪些措施。如果我允许的话,他们会在整个面试中提问。他们不只是在寻找客观的答案——他们也很好奇我的观点和其他面试官的观点有什么不同。

较弱的候选人错误地认为正确回答技术问题是面试中最重要的。这很重要,但技术能力只是赌注。面试官对一个人的面试表现会有一个更全面的看法。

不难理解为什么——如果我每周要和你一起工作 40 多个小时,你能否找到我们可能遇到的问题的正确答案只是众多因素中的一个。我还在评估:

  • 你如何处理反馈或批评。
  • 你思考问题的速度有多快。
  • 你是否适合团队的良好文化。
  • 是什么让你对任务和产品感到兴奋?
  • 你的沟通能力有多强。
  • 我们是否能一起解决难题。
  • 你的技能组合是否能补充我们团队现有的技能。

当面试一份工作时,不要考虑你能正确回答的问题的分数——仅仅这一点并不能让你从其他求职者中脱颖而出。相反,要把注意力放在你能为团队增加价值的各种方式上,以及你如何能有效地把这种价值传达给面试官。

最大化信噪比

在面试中,你只有 30 分钟到一个小时的时间来打动面试官。你在面试中每分钟传达的价值越多,你就越有可能成功获得这份工作。

作为一名面试官,我会优化那些具有高信噪比的问题,那些在每分钟花费的时间内揭示大量关于候选人的有用信息(信号)的问题,几乎没有无关或无用的数据(噪声)。我会花一些时间连珠炮似的提问,探索一个广阔的领域,关注任何警示信号,并在我们遇到回报递减的领域时,花精力引导面试流程。

然而,面试是一门不完美的科学。作为面试候选人,你可以通过向正确的方向推动互动来增加你的机会。如果你想从其他 99%的应聘者中脱颖而出,你的指导原则应该是最大化你与招聘人员和面试官互动的信噪比。

这个原则贯穿于整个面试过程,从你的申请开始。Jobvite 向其客户提供招聘软件,根据对 600 多名客户进行的一项分析,只有 7%的求职者来自推荐人,而推荐人却占总招聘人数的 40%。^(你的简历很可能会被快速跟踪,而不是坐在一堆,等待被发现。鉴于推荐的价值,如果你不认识公司里的任何人,尝试通过朋友、朋友的朋友、LinkedIn、Quora 或任何其他网络进行初次介绍是值得的。)

一旦你获得了面试的机会,信噪比就能指导你的面试技巧。例如,分享你解决问题的思维过程是有价值的,因为你向面试官传递了一个非零的信号。我开始了解你是如何思考问题的,你的沟通能力如何,以及你擅长或纠结于哪些方面——这些都是我看着你若有所思地凝视天空时无法得到的信号。

这个原则也应该指导你用来解决面试问题的工具。不久前有人在 Quora 上问面试官是否不喜欢用 Python 或 Ruby 解决面试问题的应聘者。从最大化信噪比的角度来看,很容易理解为什么使用 Python 或 Ruby 实际上可能是首选。

C、C或 Java 等语言往往比 Python 或 Ruby 等生产率更高的语言冗长得多,这些语言具有更强大的内置原语,如列表理解、lambda 表达式或析构赋值。Prechelt 的研究比较了 7 种不同语言的同一组需求的 80 个实现,发现用 C、C和 Java 编写的解决方案在非注释代码行方面比 Python 等脚本语言平均长 2-3 倍。因此,我采访过的大多数用 C、C++或 Java 编写代码的候选人一开始都处于劣势——与使用 Ruby 或 Python 的人相比,他们需要 2-3 倍的时间来传达相同的信息。花在为效率较低的语言编写样板代码上的每一分钟,都没有花在解决问题的实质方面,也没有向面试官传达有用的信号。

当然,也有例外。如果你在面试一个涉及内核编程、低级系统或者 iOS 和 Android 开发的职位,你可能会通过使用 C、C++、Objective C 或 Java 等语言来传达更多的 T2 信号,因为这与你的工作更相似。在一家用 C、C++或 Java 编写代码的更成熟的科技公司,使用公司标准语言之一的能力也可能提供面试官关心的信号。最终,你对编程语言的选择,就像你面试中的其他决定一样,很重要,因为它会影响你解决问题的速度,并给面试官提供有用的信号。

假设你已经很好地处理了技术问题,信噪比也解释了为什么向面试官提问很重要。问好问题是你展示对团队和产品的好奇心和兴奋感,以及表明你在工作中真正关心什么的少数机会之一。

问面试官什么

那么,当轮到你向面试官提问时,你应该问什么问题呢?

回避那些通过几分钟的谷歌搜索、阅读公司网站或使用产品(如果是消费品)就能轻松回答的问题。这些类型的问题是懒惰的信号。如果公司开发网络或移动消费产品,你应该在面试前做好功课并试用产品——我经常面试的应聘者甚至没有试用过他们将要开发的产品,却期望他们能够得到这份工作,这让我感到惊讶。

相反,把注意力放在面试官能独一无二地帮助你回答的问题上。例如,你可以请他们帮忙描绘一下在公司工作的情景:

  • 你典型的工作日是什么样的?
  • 从一开始就有一个想法,然后把它付诸生产的过程是怎样的?
  • 与维护旧的东西相比,你花在构建新的东西上的时间占多少?
  • 公司是如何做出产品/业务/工程决策的?

或者关注团队文化:

  • 在这家公司工作,你最喜欢的一件事是什么,你最想改进的一件事是什么?对于你想改进的事情,正在做些什么?
  • 公司的核心价值观是什么,有哪些日常体现这些价值观的例子?
  • 你会如何描述公司的文化?

或者深入了解您感兴趣的产品的某个方面:

  • 这种特殊的产品功能是如何设计和推出的?
  • 你为什么决定推出这个特别的版本而不是另一个?
  • 基于用户反馈,产品自发布以来是如何发展的?

或者询问增长机会:

  • 你在工作中最意想不到的收获是什么?
  • 新员工的入职或指导流程是什么样的(如果有)?
  • 在公司工作期间,你有哪些机会与不同的人和项目共事?
  • 跨项目的知识是如何在公司内记录和共享的?

或者了解公司面临的挑战:

  • 这家公司获得巨大成功的最大障碍是什么?
  • 公司当前的重点和关注领域是什么?
  • 我能在哪里增加最大的价值?

鉴于问题层出不穷,下次有人在面试中问你是否有任何问题时,要准备好回答,而不是“没有”。问那些能给你很多信号的问题,因为它们也会给你的面试官一个信号,你正在努力思考这个机会。

如何建立注重影响的工程文化

原文:http://www.effectiveengineer.com/blog/how-to-encourage-team-to-focus-on-impact

这是第一次发表到我的周刊 Q &的一份邮寄名单。每周,我都会挑选不同的读者问题,尽可能诚实地回答。

你如何在硅谷之外的大公司创造有效的工程文化?我是一家拥有近 2500 名员工的公司的首席技术官,其中大部分是工程师。我的任务之一是创造一种工程文化,在这种文化中,我的团队不仅关注技术(学习新的“酷东西”),还关注为业务提供价值和影响。

我如何在技术创新和业务效率之间取得平衡?我如何让我们的工程师不仅渴望玩技术,还渴望创造商业价值?

许多年前,我在 Quora 工作期间,整个产品和工程团队尝试一起回顾每个项目如何影响业务的顶线增长指标。哪些项目为增长贡献了最高的投资回报?我们期望哪些项目能够推动增长,但却没有达到预期?

这个每月一次的实践传达了一个清晰的信息:对任何项目来说,最重要的是它对业务增长的影响。单个团队花了更多的时间讨论如何估计和测量他们工作的影响,并且他们根据预计的影响来确定他们工作的优先级。

工程师如何做出权衡很大程度上取决于公司文化背后的价值观。这种文化在很大程度上取决于我们选择的对话以及工程师如何融入这些对话。

通过对话和故事塑造你的文化

当我为了我的书采访博比·约翰逊(Bobby Johnson)——一家名为 Interana 的数据初创公司的首席技术官——时,他与我分享了讲故事在构建公司文化中的重要性。他在脸书建立了早期的基础设施团队,并围绕关注影响塑造了团队的早期文化。

“很多文化来自故事,”约翰逊说。“你写下你的价值观,但它们实际上没有任何意义,除非你有一些故事来说明它的背景。”

约翰逊坚信应该奖励修理东西的人。许多工程师倾向于新的和闪亮的东西,但真正的英雄是那些保持关键系统正常运行的人——所以他明确地庆祝他们。

在团队会议上,他会祝贺做出重要修正的人。在团队邮件中,他会指出并分享不同修复的性能影响或可靠性影响的图表。在随意的交谈中,他会讲述人们如何调试特别讨厌的错误的故事。最终结果是,从事肮脏但关键任务的人知道他们在公司受到重视。

如果你想建立一种文化,在这种文化中,业务影响是工程决策背后的关键背景,这种文化来自你讲述的故事、你进行的对话以及人们看到你花费时间的地方。

它来自于围绕人们在您公司的产品和服务中看到的价值以及他们继续面临的痛点分享客户故事。

它来自于根据公司的关键绩效指标和项目的业务影响来明确地讨论和衡量项目的价值。

它来自于赞美那些花时间解决或解决关键业务需求的无名英雄——尤其是在工作并不光彩的情况下——并直接承认他们为团队提供的价值。

你选择在哪里花费你的时间和精力会直接影响你所领导的人如何花费他们的精力。如果你把大部分精力花在审查棘手或有趣的技术决策上,你就传达了这样的信息:技术焦点是重中之重。如果你把大部分时间花在问棘手的业务问题上,你就传达了一个信息,即业务影响很重要。

自主、掌握和有目的地激励

强调业务影响只是故事的一部分。还有什么可以激励工程师团结在它周围?

丹尼尔·平克(Daniel Pink)在他的《驱动力 一书中认为,动力来自三个关键要素:自主、掌控和目标。当对影响的关注降低了技术选择的自主性或修补和掌握新工具的机会时,我们需要在其他方面补偿这种自主性和掌控力。

例如,工程师如何在产品和商业决策中发挥更大的作用?如果工程师被视为合作伙伴,而不仅仅是被分配工作的执行者,他们就有机会看到他们工作背后更大的商业背景。通常,让工程师远离这些细节以帮助他们专注的愿望实际上可能适得其反——更强的主人翁意识和目的感支持保持人们积极性所需的自主权。

在某些业务领域,技术创新有哪些机会可以直接转化为商业价值?许多科技公司将组织 20%的时间或黑客马拉松——针对特定业务或产品领域的有组织的时间段可能会产生什么想法?

你如何提供挑战工程师的机会,让他们掌握技能并在其他方面成长?许多高级工程师将寻求技术领导的机会,例如,组织可以提供什么资源来支持和鼓励这种增长?

这些都是很难回答的问题,但它们是需要探索的高杠杆问题。

当 Raffi Krakorian——他刚刚结束在 Twitter 的工程副总裁职位——正在审阅我的书的草稿时,我们讨论了激励工程师的话题。"为什么我要把我最有价值的头脑浪费在一个已经解决的问题上!"他会告诉那些想探索新的闪亮工具的人,去取代那些屡试不爽的工具。“想想看,如果我们都把注意力集中在正确的地方,我们能做些什么。”

描绘出可能实现的愿景,然后给工程师空间,将他们的集体能量引向这一愿景。

如何让你的工程团队更有效率

原文:http://www.effectiveengineer.com/blog/how-to-make-your-team-more-effective

这篇文章发表在我的周刊 Q &的邮件列表上。问你的难题。得到我诚实的回答。

作为一个软件团队的团队领导/经理/高级人员,我有什么有效的方法可以帮助/培养/发展团队,使其变得更有效率?

作为一名领导者,如何支配时间至关重要。你有一个不可思议的机会产生影响,因为你的决定直接影响整个团队的产出。这使得对团队效率的投资特别有价值和高杠杆作用。

好消息是,通过传播让人们成为高效工程师的最佳实践,你可以走得更远。除此之外,你还有许多工具可以帮助你的团队成长。

这里是一个起点。

收集关于困难或挫折的信息。

作为团队中一个有经验的人,你可能已经积累了丰富的关于如何变得有效的知识,但是这些知识也可能让你对其他人可能存在的痛点麻木不仁。您可能有一个强大的调试或开发工作流——但是它依赖于拼凑一组必须以特定方式使用的未记录的工具。或者你可以快速浏览代码库或内部工具——但是其他人缺乏同样的思维地图。或者你可能知道在一个项目中需要咨询哪些关键的利益相关者——但是对于团队中的其他人来说这并不明显。如果你能弥补这些差距,你的团队会更有效率。

要了解存在哪些差距,您首先需要收集数据。你可以通过一对一的会议非正式地了解什么是有效的,什么是无效的。或者,如果你想要一个更系统的方法,你也可以像我们最近在 Quip 做的那样进行工程调查。我们让我们团队的 26 名工程师填写了一份大约 30 分钟的匿名调查。总的来说,事情进展得很顺利!但是我们也了解了人们害怕的某些工具和代码库的某些部分,以及一些人们认为应该很容易的困难的事情。这些经验推动了随后的讨论和关于如何让事情变得更好的倡议。

明确设计如何将某人的成长目标与创造价值的东西联系起来。

与你的团队成员进行一次明确的对话,讨论他们希望在哪里成长,以及你如何成为支持这种成长的盟友。有时,技术领导回避围绕职业发展的谈话,认为他们的核心责任在于项目执行,职业发展最好留给经理。

这种狭隘的信念会导致错失良机。当一个人的职业目标和梦想与他们所做的事情一致时,这个人最终会变得更有活力和热情,并产生更高质量的工作。为什么我们不想找到创造性的方法来支持他们的目标并为企业创造价值呢?

也许有人想提高他们的公共演讲技巧——你能创造什么样的谈话机会来增加知识分享并提高他们的沟通技巧?或者,也许有人想接受更多技术责任的挑战——你可能会委派什么样的人来腾出时间专注于更高杠杆的活动?或者,有人想更好地了解业务,你如何促进这些对话,并利用任何新的见解来更好地塑造你的产品路线图?

如果我们对此持开放态度,通常会有创造性的方法来找到人们想要的和业务或团队想要的之间的一致性。要释放这种价值,首先要明确谈论你们各自想要什么。

给予和要求经常和诚实的反馈。

你团队中的人知道他们做得怎么样吗?有时,我们会保留反馈,因为我们认为这是显而易见的,或者因为这会让我们或接受者感到不舒服。如果反馈不明显,如果他们真的知道自己做得好的地方和需要改进的地方,他们会感激吗?

当反馈来自良好的意图时(例如,你希望那个人成功),当你明确地分享这个意图时(例如,“我想支持你成功地完成你的角色”),这个意图形成了反馈,并且反馈更有可能被欣赏和重视。

安排与团队成员进行一对一的交流,并交换反馈。问对方:

  • 你希望看到这个人做的更多的一件事是什么?更少的?
  • 你认为对那个人来说什么是可能的?
  • 你们对对方有什么假设?

利用你的优势提升团队。

使你成为一名有效的工程师或工程领导者的优势是什么?你如何利用这些优势,让你团队中的工程师在工作中获得竞争优势?

例如,如果您有很强的系统背景,您如何确保正在构建的系统能够满足他们的目标?如果你有很强的产品直觉,你能为正在进行的项目提供什么样的反馈来增加成功的可能性?如果你认为自己是一个生产力大师,有哪些工具可能已经存在,或者你可能会指导团队构建来提高每个人的效率?

就我个人而言,我已经围绕领导力培训和发展培养了热情和技能。我问自己如何提高技术领导力的标准,我将大量精力放在指导工程师实现他们想要的东西上,放在教授领导技能上,放在促进小组讨论上,更广泛地说,放在识别给定任务、项目或情况中的增长机会上。

减少复杂性来源。

复杂性是执行的敌人。它带来了许多工程师忽视的隐性成本,并对我们的精神和时间造成越来越大的负担。积极对抗。

在某天的一次谈话中,我在 Quip 团队中的一些人注意到,我们在过去几年中所做的承诺数量并没有与我们团队的增长速度同步。自从我加入以来,我们的工程团队已经增加了一倍多,但是我们离双倍提交率还差得很远。当然,提交并不是生产力的一个很好的衡量标准——我们正在完成更大的交易,从事更雄心勃勃的项目,并构建更好的工具,以便我们需要更少的代码更改来完成事情。

也就是说,降低提交速度的一个主要原因是复杂性——新工程师需要增加更多的代码,需要维护和扩展更多的系统,新项目需要集成更多的产品表面积和上下文,需要与更多的人合作才能完成工作。因此,随着团队规模的不断扩大,我们为降低代码复杂性、系统复杂性、产品复杂性和组织复杂性所做的任何事情都将获得巨大的回报。

创造更多的合作机会。

因为我们想完成这么多工作,所以有一种趋势是将任务分开,然后让人们单独完成,因为这样效率更高。不利的一面是一个人的项目会让工作变得没有动力

将更多的协作方式作为正常工作流程的一部分,是增强动力和热情的有效方法。

例如,在 Quip,我们开始了一个配对编程轮盘赌项目,每两周,我们随机将感兴趣的工程师配对,这样他们可以配对编程一个小时。该计划为人们一起工作创造了一个有趣的机会,同时也增加了最佳实践在团队中的传播。更重要的是,它产生了将结对编程作为协作工具的副作用——导师用它来搭载新的团队成员,团队领导用它来传播知识,工程师用它来让枯燥的任务变得更有趣。

当然,要让我们的团队更有效率,还有很多事情可以做,这些想法只是一个起点。尝试一下,看看什么是有效的,并在你发现对你的团队影响最大的策略上加倍努力。

衡量自己的工作效率时要问的一个关键问题是

原文:http://www.effectiveengineer.com/blog/how-to-measure-engineering-productivity

斯科特·亚当斯在他的《呆伯特原理》一书中,再次分享了一个来自他的漫画读者的关于衡量生产率的警世故事。

一位工程经理想要激励他的团队找到并修复软件错误,并制定了一个奖励优秀员工的计划。为了鼓励质量保证团队发现漏洞,他为每发现一个漏洞奖励 20 美元。为了鼓励工程师修复更多的漏洞,他每修复一个漏洞就奖励 20 美元。

不难想象接下来发生了什么。工程师开始有目的地引入 bug,让测试人员去发现,让他们自己去修复。一名工程师甚至为他的虫子建立了一个地下市场,一周后赚了 1700 美元。这个初衷良好的项目很快就关闭了。

这个有趣的小故事说明了一个关键点:**你如何衡量你的生产力会改变你的行为。**每当你衡量生产率时,问自己一个关键问题,“激励我想要的行为的正确指标是什么?”

正确的衡量标准取决于你的目标

大多数工程师会嘲笑基于代码行来衡量他们的产出的想法。这是一个荒谬的度量,对不对?忽略代码质量和代码影响的度量标准有什么意义呢?

然而,在某个时间和地点,纯粹测量产出的原始数量可能是有价值的。

当你第一次学习新东西时——无论是编程、绘画、表演、驾驶还是其他——你写的程序、你画的草图、你表演的场景以及你花在路上的时间的原始数量都衡量一些重要的东西。他们追踪你是否得到了发展这些技能所需的实践。这就是为什么像一年 365 天跳舞在 180 天内建立 180 个网站这样的习惯对新手如此有效。然而,一旦你达到一个舒适的技能水平,这些相同的指标就失去了它们的大部分力量——之后,有意识地练习将你推出舒适区的技能会更有用,原始输出不再是一个强有力的改进指标。

类似地,当质量不是主要关注点时,基于数量的指标可能会有用。例如,当我在写我的书 《有效的工程师 的第一稿时,质量并不重要,重要的是完成一份草稿来可视化所有部分是如何组合在一起的。通过以每天写 1000 个新单词为目标来衡量我的日常生产力,我专注于产生新的材料,而不是花时间重写和修改前一天的工作——许多作家都倾向于这样做。

乍一看似乎荒谬的度量标准仍然扮演着重要的角色。一个指标是否有意义取决于你的目标——随着目标的改变,旧的指标可能会失去效用。那么,我们如何吸取这一教训,并将其应用于工程生产力呢?

弄清楚你的目标,然后倒推得出你的衡量标准

作为一名工程师,您的目标——以及正确的衡量标准——会随着时间的推移而变化。在任何时候,你的目标都可能是:

  • 学习一种新的框架或编程语言。对于学习来说,跟踪一个简单的指标,比如每天最少的小时数,可能就足够了。
  • **工作时减少分心。**然后用一个番茄计时器^(来记录深度、高效的工作时间——以及远离脸书、推特、电子邮件或网上冲浪的时间——可能是一个好的开始。)
  • **提高关键子系统的性能。**跟踪你平均付出了多少努力,或者 95%的延迟,或者你所面临的任何性能瓶颈都将发挥重要作用。或者,如果你确切地知道你想要优化什么,你可能会更深入,比如 Instagram 如何在高峰时间优化每个活跃用户的 CPU 指令。
  • **提高搜索结果质量。**你会想知道你能对点击率产生多大的影响,或者也许可以借鉴谷歌的经验,跟踪长时间点击率——某人点击一个结果,并且在一段时间内不会反弹的点击。
  • 提高用户增长和参与度。根据漏斗的哪个部分目前对您的业务最重要,您将衡量您对注册或支付转换率、周活跃用户增长率、周环比留存率或漏斗的其他部分的影响。
  • **提高服务器可靠性。**如果你已经有了良好的监控,也许你可以每周测量一次传呼机值班警报。根据您是否更关心最大限度地减少客户干扰或工作之外对团队生活的干扰,您还可以对在工作时间或非高峰时间触发的警报施加更大的权重。

请注意,这些影响指标都是特定于领域的。此外,对于任何目标,都有大量的指标需要考虑,每一个都有自己相关的激励措施。

例如,如果您正在处理应用程序性能,并专注于改善平均延迟,您通常会进行系统级优化,这将有助于降低整体 CPU、内存或带宽成本。另一方面,如果您专注于改善 95%的延迟,您将主要专注于修复最坏情况下的性能问题。这些问题通常会对最活跃的用户产生更大的影响,这些用户进行最多的查询,加载最多的页面,关注最多的人,或生成最多的数据,因此处理起来计算成本更高。

要想知道衡量什么,首先要确定你想要达到的目标。然后问你自己,“如果我可以选择一个且只有一个指标随着时间的推移而系统地增加,什么会让我对我的目标产生最大和最可持续的影响?”

你的答案是你应该跟踪的生产力指标。最能推动这一指标的工作是您应该关注的最有影响力的活动。

我从 Quip 中学到了如何只用 13 名工程师在 8 个不同的平台上开发一个产品

原文:http://www.effectiveengineer.com/blog/how-to-successfully-build-great-products-with-small-teams

你如何用一个小小的工程团队创造一个影响数百万人生活的伟大产品?

这是我在 Quora 和最近在 Quip 工作的几年里经常反复思考的问题。我加入 Quora 时,团队只有 12 人,而 Quip 只有 13 人。两家初创公司都有雄心勃勃的使命。Quora 旨在分享和增长世界知识,并建立一个互联网规模的亚历山大图书馆。^(在 Quip,我们渴望打造一种新的生产力工具,让每个公司的每个人每天都喜欢使用。)

当你有一个小团队和一个大胆的任务时,取得有意义的进展的唯一方法是专注于那些为你提供大量杠杆的活动——那些给你的时间投资带来巨大回报的活动。

到目前为止,Quip 对高杠杆活动的关注取得了回报。我们已经能够签下越来越多喜欢这款产品的客户,包括脸书、Pinterest、Stripe、Instacart、Product Hunt、New Relic 和许多其他家喻户晓的名字。我们已经在 8 个不同的平台(web、Mac、Windows、iPhone、iPad、Android 手机、Android 平板电脑和 Apple Watch)上构建了全面的应用程序。我们只用了 13 名工程师(包括两位联合创始人)就做到了这一点。

我们还有很长的路要走,但是这里有一些原则和过程,我已经看到它们为我们的小团队带来了巨大的收益。

1.构建一次,使用多次

无论何时构建软件,好的抽象都很重要,但是跨平台工作的好的抽象对于我们的小团队尤其重要。如果我们不得不在我们的八个平台上从头开始重新构建产品,我们不会走得很远。因此,我们在库和架构上投入了大量的精力,让我们一次构建一个东西,然后多次使用它。

例如,我们广泛使用协议缓冲区进行数据存储、内存数据结构和跨平台通信。这让我们可以从 MySQL 中读取协议缓冲区;^(在我们的 Python web 服务器上转换数据;然后将它们发送给我们的基于 C++、Objective C、Java 或 C#等语言的本地客户端;甚至将这些相同的数据结构传递给我们的 JavaScript 编辑器。此外,所有这些都是通过自动生成的数据序列化代码、强类型数据结构和强类型通信通道实现的。如果我们使用特定于语言的数据结构,甚至是 JSON,那么通过这些不同的步骤来处理数据将会更加繁琐和容易出错。)

“一次构建,多次使用”的主题也出现在许多其他地方。我们共享同一个 C++库来同步数据并支持桌面和移动应用的离线访问。所有设备上的所有文档编辑器都运行在相同的 JavaScript 库上——然后,我们加入本机挂钩和特定于平台的优化,让用户体验更加完美。我们的 web、Mac 和 Windows 桌面应用程序共享相同的 React UI 代码,看起来像是每个平台的原生代码。

这些技术投资并不能解决与支持许多平台相关的所有挑战,但它们确实有助于消除大量工作。

2.利用人际网络中的推荐来招聘

Quip 是迄今为止我有幸共事过的最资深的团队。在工程方面,团队中的大多数人都有 6+年的行业经验,超过一半的人有 10+年。

随着行业经验而来的是一种在小型创业公司通常很难获得的巨大奢侈:我们能够独立工作和执行困难的问题。我们可以相信每个人都在做正确的事情。与拥有更多初级工程师的团队相比,到目前为止,我们不需要花费太多时间来培训新员工。我们还能够避免我们在职业生涯早期可能犯的一些错误——这可能很明显,但在第二次或第三次建立 A/B 测试框架或监控系统会更容易、更快。行业经验让我们将更多的精力和风险转移到产品特有的挑战上。

为了建立这个团队,我们利用了网络内的推荐。许多 Quip 工程师是团队中有人以前喜欢一起工作的人,这种信号减少了招聘过程中的许多风险和噪音。即使你刚刚开始职业生涯,这也凸显了与你喜欢共事的人保持联系的重要性。将来你们很有可能会再次合作。

工具会放大你的产出,它们的好处也会随着时间的推移而累积和复合。在 Quip,我们构建了许多工具来帮助我们更快地开发:通过有用的堆栈跟踪来聚合和聚集错误的仪表板,调试和检查我们应用程序状态的工具,git commit hooks 来分析代码和捕捉常见错误,以及许多其他脚本来自动化乏味的任务。我们绘制了大量数据的图表,从性能指标到保留率,以便我们能够更好地了解正在发生的事情。我们为客户支持和业务团队构建内部工具,以便他们能够帮助快速解决任何客户问题。

这种对工具的关注也帮助我们减少了运营开销。持续集成使我们的构建保持健康,按钮式部署脚本简化了我们的发布。易于调整的精细警报有助于减轻压力,例如,仅在工作时间呼叫待命工程师。因此,与我工作过的其他初创公司相比,Quip 的传呼机工作通常是平淡无奇的——过去一年里,我只在半夜被传呼过两三次。所有这些投资让我们花更多的时间来构建和扩展产品,而不仅仅是维护它。

4.把更多的木头放在更少的箭后面

我们有一系列的功能和改进,我们很想建立,但我们的时间和资源有限。重要的是将我们的精力集中在关键的里程碑上,并积极地优先考虑功能和 bug 修复,这样我们就不会分散太多精力。上下文切换成本很高,我们不构建的东西和我们做的东西一样重要。

在这方面,定量和定性的用户反馈都非常有价值。对于 A/B 测试,我们将努力将想法分解成更小的可测试的假设,我们可以测量和验证这些假设以减少浪费的努力。对于功能,我们可能会构建一个最小的可行产品,然后运行用户测试来收集任何关于什么令人困惑和什么有效的初始反馈。或者,我们可能向少数客户推出一项功能,然后与他们密切合作,了解他们喜欢或不喜欢什么。

例如,当我们推出我们的 Mac 和 Windows 应用程序时,我们根据员工和 alpha 和 beta 测试人员对早期采用者的渴望和对错误的容忍度,分多个阶段向他们推广。他们的反馈(当然是关于 Quip 文档的)帮助我们专注于构建用户最关心的桌面应用程序的特性。然后,我们可以将较长的特性推迟到以后。

5.减少沟通的摩擦

对于工程团队来说,电子邮件和会议通常是两个最大的能量消耗。所以在 Quip,我们一般会避开它们。除了管理 GitHub 代码审查和某些类别的警报,我们不会在工程部门内部使用电子邮件进行任何交流。在大多数周中,工程师只有一个小时的预定会议:一个 30 分钟的每周全体会议,我们在会上分享更新和展示新的演示,然后可能是一个小型的项目会议或一对一的会议。我们将根据需要举行临时讨论,以建立一致性并完成工作,而不是召开会议(所有相关的日程安排开销以及讨论往往会扩展到填满分配的时间)。

不出所料,我们的大部分交流都是通过俏皮话进行的。该产品是我们在全公司范围内协作的方式,我们每天都在使用它。我们将 Quip 用于设计文档、产品任务列表、客户支持和聊天。我们为 Pager Duty、Zendesk、Twitter、Jenkins、Stripe、Crashlytics、Github 等建立了内部集成,以便整个团队在事件发生时能够轻松讨论。如果一个用户在 @QuipSupport 上发布了一个 bug,那么在 Quip 中扫描我们的 Twitter 聊天频道的人可以@提到 Quip 中的一个工程师,并询问这是否是一个已知问题。如果客户成功团队或销售人员希望传递来自客户的功能请求,她可以将其添加到反馈文档或任务列表中,任何利益相关者都可以附和或优先考虑该请求。我们甚至与当地的三明治和沙拉店共享了一份文件,我们在那里输入午餐订单,那里的好心人每天中午都会把订单送到我们的办公室。

沟通通常是团队成长的第一个牺牲品,任何可以减少沟通摩擦的工具——无论是妙语、懈怠还是其他——都可以显著提高团队的效率。将 Quip 集成到我们的工作流程中,帮助我们以一种传统方法(如电子邮件和会议)无法实现的方式一起工作。这也有助于在整个公司建立透明的文化。电子邮件中的信息往往会丢失或被少数收件人孤立。相比之下,我们的 Quip 文档成为团队中每个人不断增长的知识库,每个文档旁边的评论和讨论提供了任何历史背景,因此我们都在同一页上。

到目前为止,我们已经取得了很大的进步,前面还有漫长而激动人心的道路。如果你有兴趣在 Quip 工作,请查看我们的工作页面。并且,如果你想学习更多有效工程师的可操作的和被证实的策略,看看我的书,《有效工程师


这篇文章基于我最初在 Quora 上写的一个回答,一个版本已经在 Slate 上重新发布。

利用公司资源提高编程技能的 10 种方法

原文:http://www.effectiveengineer.com/blog/improve-your-programming-skills

一位在知名科技公司工作的工程师在 Quora 上匿名向我寻求一些关于如何提高编程技能的建议。如果你曾经想知道类似的事情,并且正在寻找一些新的方法来成为一个更有效的软件工程师,你可能会发现这篇博文中的十条建议很有帮助。

从抽出 20%的时间来发展自己的技能开始。如果可能的话,这 20%最好来自每天一两个小时,而不是一周一天,因为这样你就可以把提高技能作为一种日常习惯。你的生产力最初可能会下降(或者如果你取代了网上冲浪或其他分心的事情,它可能不会有太大的变化),但目标是进行投资,从长远来看,这将使你更加有效。

那么你应该用那 20%的时间做什么呢?如果你在一家知名的科技公司,你应该充分利用现有的资源。以下是 10 条建议:

  • 研究由公司最优秀的工程师编写的核心抽象代码,理解为什么做出某些选择以及它们是如何实现的。例如,如果你在谷歌,通读一些早期工程师如杰夫·迪恩、克雷格·西尔弗斯坦或本·戈麦斯写的核心库中的代码。从你以前用过的例子开始,问问你自己你是否会为不同的部分编写相似的代码,以及你如何从他们的例子中学习。
  • **如果你在文本编辑器或 IDE 上效率不高,问问你的一些效率更高的同事,他们是否介意你在他们编码的时候看他们一会儿。**他们是否使用了您不熟悉的键盘快捷键或编辑器功能,但这些功能让他们更高效?如果是的话,学习并练习它们。无论您使用什么样的开发环境,都可以在 Google 上搜索生产力技巧。例如,当我第一次学习 Emacs 时,Steve Yegge 非常好的用 Emacs 提高效率的 10 个具体方法让我明显地更有效率。甚至在为这篇文章重读那一页的部分内容时,我也学到了一些新东西。
  • 通读任何内部可用的技术、教育材料。例如,谷歌有大量的代码实验室,教授核心抽象和高质量的最佳实践指南,这些指南是资深工程师根据几十年的经验为各种语言编写的。如果你的公司没有类似的资源,谷歌开源了他们的一些指南:https://code.google.com/p/google-styleguide/
  • 掌握你使用的编程语言。读一本或两本关于语言的好书。专注于牢固掌握该语言中的高级概念,并熟悉核心语言库。确保你的语言中至少有一种是脚本语言(例如 Python ),你可以把它当作快速任务的瑞士军刀。
  • **把你的代码审查发给最严厉的批评家。**优化是为了获得好的、有思想的反馈,而不是降低检查你工作的门槛。要求对您不太有信心的实现进行更详细的审查。
  • **参加你想更擅长的领域的课程。**这些课程可以在公司校园、附近的大学校园或网上提供。许多大型科技公司甚至会为你的课程付费。如果你想在编程方面做得更好,参加更多的实践课程,比如设计模式或一些编程语言。
  • 建立好技术书籍的阅读清单,开始阅读。你的公司甚至会给你报销。这里有一个开始:每个程序员应该读的最有影响力的一本书是什么?
  • 参与不同类型的项目,并把它们作为学习的机会。如果你发现自己总是用相似的方法做相似的任务,那就很难走出舒适区,学会新的技能。
  • 确保你所在的团队至少有几名你觉得可以学习的高级工程师。如果你不是,考虑换个项目或团队。这将有助于提高你剩余 80%时间的学习速度。
  • 多写代码。如果你觉得编程是你的弱项,花更多的时间在构建和编写代码上,因为除非你练习,否则你不会变得更好。尽你所能,把时间从其他与工程相关的职责中转移出来,比如管理项目、修复 bug、参加会议、设计产品等等。

养成学习的习惯,你会发现你的编程技能有所提高。

单凭技术技能就能让你变得伟大的神话

原文:http://www.effectiveengineer.com/blog/interpersonal-soft-skills-in-engineering

最近,《纽约时报》在中特别报道了这位卓有成效的工程师,这是一篇关于移情、协作和沟通等技能如何在软件工程中发挥关键作用的文章。这些人际交往技能经常被忽视——偏向于技术技能——不难看出为什么。

早在学校时,工程学就开始强调“硬”技术技能,而不是“软”人际交往技能。

我在麻省理工学院几乎所有的计算机科学课程都专注于技术技能——比如算法、系统、抽象、设计模式。尽管有许多小组项目的机会,但很少有人指导如何有效地在团队中工作。

我记得在一个团队项目中,一个朋友兼项目成员总是不尽自己的职责。我们其他人没有在这个问题上与他正面交锋,而是延长了工作时间为他打掩护。我们缺乏处理困难问题的成熟度,缺乏进行不愉快对话的工具,以及对话如何提供重要学习体验的背景

我们最终都得了项目和课程的 A。这只会强化一个错误的教训,那就是也许人际交往能力根本就没那么必要。

我们选择忽视这种情况是不健康的——在我们总是必须投入 120%的情况下,我们能维持多长时间的关系?—这也不是我们想灌输给进入这个行业的新工程师的行为。这是一次错过的机会,让我们可以更多地了解什么是有效的团队合作,以及实现这种合作所必需的对话。

事情是这样的。

我在工程和教练对话上花的时间越多,就越痛苦地发现,强大的技术技能只能让你走这么远。根据成功的定义,你甚至可能会像我一样得到一个“A”。但是你会平台期。因为最终,是人际交往能力的力量区分了最有效的团队和领导者。

爬过高原

在谷歌,人们的期望是,公司雇佣的每个工程师最终都应该达到至少“高级工程师”的级别——比入门级职位高两级。谷歌员工有时甚至将这一水平描述为“终极”水平,因为许多人会满足于在这一水平上度过余生。

当然,在许多科技公司,高级软件工程师的职位之上通常还有五六个级别。那么,为什么在阶梯上这么早停下来是常态呢?是什么限制了我们的职业生涯,阻止我们取得更多成就?

一个关键的观察是,人们通常可以纯粹通过对单个项目的强大技术执行力成为高级工程师。事实上,谷歌工程面试往往只评估技术元素。因此,如果你把你的“A”定义为成为一名高级工程师,那么就像我的班级项目一样,你很可能仅仅通过技术执行就能达到目的。

但是我们都有能力做得更多。

突破这个限制——你个人对纯技术执行所能达到的限制可能更高或更低,但它确实存在——需要利用一套独立的人际交往技能。你需要能够有效地传达你的想法,以减少误解造成的能量浪费。你需要清除错误的假设来建立信任。你需要明确地设计你的工作关系,这样每一方都明白对方想要什么和需要什么。你需要征求并给出反馈,这样团队才能不断提高效率。

底线是,你自己有效执行所能产生的影响是有限的。交付影响更大、规模更大的项目需要与团队中的其他工程师、产品经理、设计师和其他人有效合作。

打破旧模式,用新模式取而代之

突破我们的极限的困难之处在于,它通常需要放弃旧的行为模式——那些在过去可能对我们非常有用的模式——并用新的模式取而代之,这种新的模式会带来更高水平的表现。

与 150 多位主要首席执行官和管理团队合作过的高管教练马歇尔·戈德史密斯写了一整本书,,主题是我们早期养成的习惯如何不足以让我们发挥全部潜力。

我们在任何地方都能看到同样的主题,包括体育。

泰格·伍兹在其职业生涯中三次放弃并重新发明了他的高尔夫挥杆技术。^(罗杰·费德勒在受伤后彻底改造了他的反手。当迈克尔·乔丹不能再依靠年轻时的体力突破防守时,他掌握了跳投和后仰跳投。)

如果这些运动员中的每一个都依靠技能获得成功,他们仍然会是伟大的运动员——但他们不会在自己的领域统治如此长的时间。让这些运动员成为世界关注焦点的模式和技能是强大的,但它们不足以让他们——并让他们——在比赛中保持最佳状态。

要做到这一点,他们需要用新的、更好的模式取代旧的模式——通常是在教练的帮助下。

软件工程也是如此。让我们达到高级工程师水平的模式和技术技能——强大的抽象、干净的代码、快速的迭代速度——都很重要,但是它们不足以帮助我们产生我们能够产生的影响。为了成为最好的工程师和领导者,我们需要新的模式。

探索这些新模式是我在《纽约时报》文章中提到的工程圈所做的工作。我带领工程师和领导者团队就如何明确设计工作关系、如何理解他们在寻求帮助时的顾虑、如何提出有力的问题来发现其他人重视什么以及其他有意义的话题进行公开对话。

这是我上周在温哥华的一个领导力研讨会上教授的内容。我们讨论了在工作中更深入联系的有趣工具。我们讨论了如何建立这样的关系,每一方都可以有效地要求并得到他们想要和需要的东西——这样,每个人都不会因为一直付出 120%而沮丧,而是付出 100%。

当我指导工程师和工程领导者时,打破旧模式并教授新模式也是我所做的。从许多方面来看,他们已经成功了,但他们还想要更多。他们的团队在继续成长,他们知道如果他们想继续领导令人满意的职业生涯并创造他们想要的影响,他们就需要与他们一起成长。(顺便说一下,如果你已经是一名优秀的工程师或领导者,并且你很兴奋并准备将你的领导力和对世界的影响提升到一个新的水平,报名参加一个教练课程。)

这是我很高兴继续与你分享的工作:高杠杆,人际交往技能,这将使你突破职业生涯的限制,开辟一切可能。

如果你还不在我的邮件列表中,我将把这些新模式分解成强大的框架,你可以用它们来进行有效的技术领导,现在就添加你自己。你将立即得到我在职业生涯中学到的最有价值的一课,我们将继续在此基础上前进。

面谈

原文:http://www.effectiveengineer.com/blog/interviews/

我教授工程师和技术领导者有效创造有意义的影响所需的工具。

我是 Quip 的早期工程师,在 Quora、Google 和 Ooyala 都领导过团队。

领导力

原文:http://www.effectiveengineer.com/blog/leadership/

我教授工程师和技术领导者有效创造有意义的影响所需的工具。

我是 Quip 的早期工程师,在 Quora、Google 和 Ooyala 都领导过团队。

学问

原文:http://www.effectiveengineer.com/blog/learning/

我教授工程师和技术领导者有效创造有意义的影响所需的工具。

我是 Quip 的早期工程师,在 Quora、Google 和 Ooyala 都领导过团队。

我花了两年时间自助出版了一本 77000 字的书,这教会了我如何运输产品

原文:http://www.effectiveengineer.com/blog/lessons-from-self-publishing-on-shipping-products

两年前,当我辞去在 Quora 的工作,开始全职写我的第一本书时,我并不知道我正在研究什么。我有一个浪漫的想法,我会环游世界一年,在咖啡馆喝着拿铁咖啡,愉快地打出章节,然后带着一本读者喜欢的书回来,这本书对他们的生活产生了有意义的影响。

现实遵循一条不同的道路。写作和旅行对我来说不太合拍。我太想在旅行中探索我的周围环境,以保持任何一致的写作时间表,所以我最好的写作发生在我在家的时候。此外,写一本书比撰写一系列长篇博客文章要复杂和费力得多。从将第一个单词写在纸上到推出这本书的平装本和电子版,完成这 77225 个单词的手稿的整个旅程花了我 22 个月——几乎是我最初预期的两倍。虽然写作总的来说肯定是有益的,但有时也是痛苦、孤独和令人沮丧的。

然而,我最初的设想有一个方面确实实现了,那就是产生了有意义的影响。自助出版我的第一本书后不到两个月,我卖出了第 1000 本。读者讲述的这本书如何改变了他们的职业生涯的故事激励着我去做更多的事情。

走到这一步并不容易,2 年的漫长旅程教会了我许多关于成功运输产品的经验,现在我又在一家初创公司工作了,这些经验一直困扰着我。这些是我犯过的错误的故事和我学到的最有价值的教训——这些教训可能会帮助你运输你自己的产品。

1.拥有问题和结果

我喜欢写作,但是我运送这本书的时间中只有不到一半是花在写作上的。在传统出版中,出版商会为你承担大部分与写作无关的责任。但是通过自助出版的方式,我必须拥有整个项目。

正如我一路走来学到的,自助出版包括:定义目标读者和市场;进行用户研究;采访专家;写这本书;聘请专业编辑;通过 99 种设计承包书籍封面;聘请封面设计师替换低质量的 99designs 封面;学习印刷术;布置书本;制作书籍的工具;测试早期版本以收集反馈;确定定价和包装;推销这本书;开发和执行投放计划;还有更多。

*在很多方面,自助出版一本书就像运送一件产品。仅仅因为你写了一本书并不意味着它会出版或出售。你做了一个产品,并不意味着人们会使用它。然而,很多时候,我们更喜欢呆在自己的舒适区,认为如果我只是写代码,其他人会负责决定我是否在构建正确的功能。或者,*如果我不解决这个问题,别人会解决的。要想成功,你必须拥有问题和结果。你必须问问自己,要让这个产品成功,需要做些什么?然后你就得去做。

2.克服你对反馈的恐惧

也许我在写书时犯的最大的错误是没有尽早寻求反馈。在给任何人看之前,我花了整整两个月的时间来润色我最初两章的初稿——这一切都是因为我害怕人们会说什么。如果文笔不够好怎么办?如果他们告诉我辞掉工作去写书是个愚蠢的想法呢?如果他们劝阻我不要真正完成呢?只要我没有给任何人看我写的东西,我就可以一直在泡泡里写,假装一切都很顺利。当然,伟大的产品并不是这样制造出来的。

当我最终将草稿打磨到足以与一些值得信赖的审稿人分享时,他们诚实的反馈教会了我很多。它们揭示了什么是有用的,什么是无用的,同样重要的是,什么是缺失的。他们指出哪些故事引起了他们的共鸣,哪些故事让他们觉得乏味。我最终重组并废弃了我写的大部分内容,以产生更好的东西。

我最初的恐惧耗费了我时间,这些时间我本可以从 22 个月的时间线中划掉或者用来创造更多的价值。如果你想创造高质量的东西,你需要对自己诚实,面对反馈的恐惧。

3.寻求反馈的最短路径

在读完初稿后,一位评论者评论说“这篇文章感觉像是第二稿。”这个评论给我敲响了警钟,因为它向我表明我过早地开始打磨产品。如果我不得不改变它——我确实这么做了——那这种润色就白费了。

回想起来,我应该把我在软件工程中所做的应用到写书上:找出最短的距离——最小可行的产品——来验证我的工作。例如,我可以先草拟一个引言来激发一章,然后概述我打算写的要点和例子。这个大纲可以让我更快地验证我的方法,而不用投入几乎同样多的精力。

在制造任何产品时,我们投入的时间越多,我们就越难克服对工作的情感依恋。这反过来又使得承认任何投资都是沉没成本并改变投资方向变得更加困难。如果我征求的是对提纲的反馈,而不是一份经过润色的草稿,我会更少情感上的依赖,并且可以更早更频繁地与更多的人分享。光是这种心态上的改变就能为我节省好几个月的时间。

4.把你的进步变成一种习惯

在我 22 个月的前 10 个月里,我休了一个不带薪的个人休假,离开了软件工程,全职专注于这本书。这种灵活性是一种解放——我充分利用它来偿还多年来长时间创业积累的睡眠债务。但是缺乏结构也是有风险的——几个月后我可能会回头看,却看不到什么进展。

所以我强加了我自己的结构。我养成了每天写这本书的习惯,甚至在周末也是如此。即使在我开始在目前的初创公司工作后,我也会在工作日早上 7 点起床,这样我就可以在赶上班的火车前花 2 个小时看书。我并不总能成功地保持我的习惯——旅行、工作面试,有时纯粹的疲劳会妨碍我。但是这个习惯被证明是至关重要的,因为每天的动力使得每天取得一些进步变得更加容易。

5.在你精力最充沛的时候做最难的任务

作为一名软件工程师,我经常在办公桌前一天花 8 个小时开发软件,我发现这是一个相当可持续的速度。最初,我错误地认为我可以把同样的职业道德应用到写作中。但我很快发现,写作消耗了太多的精神能量,以至于在最初的 3-4 个小时后,我的回报会大大减少。话语会停止流动,我会开始在座位上坐立不安。

在任何大型项目中,管理你的精力是至关重要的。在一天开始的时候,当你精力最充沛的时候,安排一些精神上困难的任务,比如创造性的努力或优先化,把精力较低的任务留到一天的晚些时候。为了每天花 3-4 个小时完成这本书,我不得不转向不那么累人但仍然重要的活动——研究自助出版过程、设计书籍布局、组织读者反馈等。有时候,我甚至不得不完全做些别的事情来充电,比如去跑步。

6.寻找导师和专家

我从一开始就知道出版一本书将是一个具有挑战性和雄心的项目。我以前写过很长的博客文章,但是我知道起草和发表 250 多页的手稿是完全不同的事情。所以我怎么知道从哪里开始呢?

通过寻求导师和专家的建议。我读了内森·巴里的权威和盖伊·川崎的猿:作者、出版商、企业家*,作者其他考虑自助出版的作者写的书。我遇到了一些成功自助出版工程师书籍的作者,比如 Gayle Laakmann McDowell ( 破解编码面试)、Alex Allain ( 跳入 C++ )、Piaw Na ( 硅谷工程师指南)以及许多其他人。我问了他们在写书时遇到的最大意外,哪些部分花的时间比他们预期的长,我应该在哪些方面花更多的资源,以及他们使用的具体策略。*

我本可以跌跌撞撞地走下去,自己学到这些教训,但他们的建议可能让我省去了几个月的反复试验。伸出手,向曾经做过你正在做的事情的人学习。

7.随着您的发展,与用户建立牵引和关系

当我开始写书的时候,我没有邮件列表。22 个月后,我向 4000 多名电子邮件订阅者推出了这本书。这份清单让我开始了最初的销售。

我在 Quora 和 Quip 从事了几年的用户增长工作,我知道仅仅写这本书是不够的。就像大多数创业公司失败一样,大多数书都卖不出去。“你建了,他们就来了”的心态,就是一个破。在我写书的时候就在这个博客上发表文章,不仅为我提供了一个很好的平台来逐步审查一些想法,还使我能够与读者联系,并建立一个邮件列表,为发布做准备。


像任何产品一样,发布有效的工程师只是产生有意义影响的第一步。还有更多的事情要做,我很高兴能继续投资资源,帮助其他人成为更有效的工程师。

如果你是一名工程师,拿起这本书和采访来简化顶尖科技公司的工程师花了数月或数年才学会的一些教训和错误。了解 Mike Krieger(insta gram 的联合创始人)、Bobby Johnson(脸书的前工程总监)、Marc hed Lund(Stripe 和 Etsy 的前工程副总裁)、Yishan Wong(Reddit 的前首席执行官)和其他工程领导者发现哪些投资为他们的团队带来了最佳回报。

杠杆作用

原文:http://www.effectiveengineer.com/blog/leverage/

我教授工程师和技术领导者有效创造有意义的影响所需的工具。

我是 Quip 的早期工程师,在 Quora、Google 和 Ooyala 都领导过团队。

如何识别并做出有重大影响的贡献

原文:http://www.effectiveengineer.com/blog/make-contributions-with-big-impact

每天,我们都要处理许多需要我们时间的问题:会议、电子邮件、电话、漏洞修复、传呼机值班提醒、下一个截止日期。我们都想在职业生涯中产生有意义的影响,但我们的时间有限。工作更多的小时看起来似乎是一个合理的策略,但这不是一个有效的方法来扩大你的影响,并可能导致精疲力竭——在我第一次创业时每周工作 70-80 小时后,我得到了这个教训。这就是为什么关注高杠杆活动——每单位时间产生高影响的活动——如此重要。

但是关注影响是什么意思呢?我们如何增加我们的杠杆?当构建软件产品时,我们如何识别导致重大影响的努力?

Poornima Vijayashanker 邀请我参加她的节目 FemgineerTV,来回答这些问题。Poornima 是 Mint 的创始工程师,现在经营着 femgineer.com网站,帮助读者提升他们的职业水平。

在这个视频中,我们将打破工程领域的一些神话,并展示为什么仅仅磨练你的技术技能不足以成为一名成功的工程师。我们将解释如何处理来自经理或产品经理的请求,以及如何优先处理这些请求和你的其他工作。我们还将分享我们作为工程师所面临的常见问题的具体见解,包括如何推理工具构建,如何在别人受阻时取得进展,以及如何改进新工程师的入职和指导流程。

https://www.youtube.com/embed/NZA6TkCP3yo?showinfo=0

视频

Poornima 每月与其他思想领袖进行一次视频采访,过去的受访者包括前脸书工程总监 Jocelyn Goldfein,Product Hunt 的联合创始人 Ryan Hoover 等人。查看她的 YouTube 页面了解更多信息。

这也是我第一次在博客上发布视频——请在评论中告诉我你对视频格式的看法。

制定“如果-那么”计划来完成更多的事情

原文:http://www.effectiveengineer.com/blog/make-if-then-plans-to-get-more-things-done

20 世纪 90 年代,心理学教授 Peter Gollwitzer 对动机科学进行了一项研究。在德国康斯坦茨大学,他问即将参加期末考试的学生,他们是否愿意自愿参加一项研究,写一篇关于人们如何度过假期的圣诞短文。同意的学生被告知,他们必须在圣诞节后两天内将论文寄出。一半的学生还被要求具体说明他们将在何时、何地以及如何写这篇文章。在详细说明这些“实施意图”的学生中,71%的人邮寄了他们的论文;在另一半学生中,只有 32%的人这样做。这是相对较小的调整完成率的两倍多。

这项研究揭示了几分钟的计划在克服我们拖延的自然倾向方面有多么强大。

用如果-那么计划来对抗拖延

为什么这一点点计划会产生如此大的不同?在她的书 成功 中,海蒂·格兰特·哈尔沃森博士揭示了一种叫做“如果-那么计划”的简单实践如何以及为什么能帮助我们更有效率。在“如果-那么”计划中,我们确定了一种情况,在这种情况下,我们将向某个目标迈出一步。因此,例子可能是“如果是早上 9 点,那么我会去跑步”或者“如果是周日午饭后,那么我会补上我的电子邮件。”

制定这些类型的如果-那么计划有助于实现我们的目标,无论是积累移动开发知识和技能的长期目标(如果就在晚饭后,然后我会看一场 Android 讲座),还是更短期的目标,如修复一个旧的 bug ( 如果是在我下午 3 点的会议后,然后我会调查这个问题)。哈尔沃森解释说,“计划在情况或暗示(如果和你应该遵循的行为(然后)之间建立了联系”,因此当暗示触发时,“然后”行为“自动遵循*,而没有任何有意识的意图。”***

潜意识的跟进很重要,因为我们拖延想要完成的事情的一个主要原因是由于我们开始时的不情愿和需要的激活能量。这种不情愿让我们合理化为什么做更容易或更有趣的事情会更好。当我们制定“如果-那么”计划并提前决定要做什么时,我们更有可能考虑与任务相关的长期利益,而目前,我们从拖延中获得的短期价值往往占主导地位。这解释了为什么在其他研究中,如果-那么计划提高了目标完成率,比如准备标准化 PSAT 测试的高中生、试图降低脂肪摄入量的节食者、试图戒烟的吸烟者、试图更频繁地使用公共交通工具的人,以及许多其他人。

我发现使用这些假设计划的一个特别有效的方法是更好地利用小块时间。保罗·格拉厄姆在他的文章“制造者的时间表,管理者的时间表”中解释说,制造东西的人倾向于选择更长的时间来提高效率。我发现当我在编程或写作时,20 分钟甚至一个小时都不足以让我进入一种高效的流畅状态并取得良好的效果。更接近 3 小时的时间块会更理想。然而,现实是,尽管生活中每天都有干扰,我们仍然会被一天中的小块时间困住。在下一次会议之前,我们可能会有 20 分钟的空闲时间,花一半的时间来决定和选择要做什么,然后当我们觉得没有足够的时间开始时,就会去浏览黑客新闻Reddit

我发现一个有效的假设计划是制定一个“如果我在下次约会前只有 20 分钟,那么我会做 __ __ ”我保留了一个我需要完成的、不需要长时间不间断的短任务列表,我用它们来填补空白。在那段空白中,对我来说效果不错的事情包括完成代码审查、撰写采访反馈、回复电子邮件、做出阻止项目的决定、调查一个小 bug 或者编写一个独立的单元测试。当我知道我有更难的项目可以填补这些有限的时间时,我会在更长的时间内主动推迟这些类型的小任务。

制定降低交易成本的程序

一个“如果-那么”的活动计划,当定期重复时,就变成了例行公事。常规的力量在于它降低了马特所说的与活动相关的心理“交易成本”。我们不是每次考虑活动时都遇到激励障碍,而是建立和安排一个例行程序,这样我们就不必反复鼓起意志力去做活动。

当我还是 Quora 的一名工程师时,我每天需要做的最困难但也是最重要的任务之一就是对我真正想要完成的事情进行优先排序。总是有更多的事情要做,而不是有时间去做,所以弄清楚什么是最重要的真的很重要。问题在于,优先化并不是一项有趣的活动——它需要时间,耗费脑力,并且与构建某些东西相比几乎没有可见的产出——然而,它提供了令人难以置信的高投资回报(ROI ),因为它决定了一天剩余时间的活动和 ROI。

为了让自己轻松一些,我把每天的优先排序变成了例行公事。在早上步行去上班的路上,我会路过一家咖啡店,在那里,除了喝下每日所需的咖啡因,我还会花 5-10 分钟回顾我的待办事项清单,以确定我一天中真正想做的事情。这个惯例简单得令人难以置信,但它确保了我有意识地优先处理每天要做的事情。

电梯获得积极评价的部分原因是因为它是一个简单的工具,可以帮助人们采用他们需要的例行程序来完成事情。虽然每天可能都不会产生非常有意义的进步,但随着时间的推移,这些例行程序会导致你听到令人鼓舞的故事,如卡伦·程通过每天练习学会跳舞或詹妮弗·德瓦尔特通过在 180 天内建立 180 个网站学会编码

掌握相邻学科

原文:http://www.effectiveengineer.com/blog/master-adjacent-disciplines

“我应该专注于成为多面手还是专家?哪条路线能更好地为自己的职业成功做准备?”已经知道学习和自我投资的重要性的工程师们经常会问这些问题,并想知道在哪里花时间最好。

你可以找到高效的工程师,他们通过成为所在领域的精通专家来创造成功的职业生涯——无论他们是机器学习、系统基础设施还是产品设计方面的专家。您还可以找到全栈工程师的例子,他们凭借自己执行各种任务的能力,扩大了任何团队的产出。因此,这两条路都有可能成功。

如果你在某个领域有动力,利用它来掌握这个领域。学习并做你喜欢的事情。任何有拖延症的人都知道动力有时很难通过获得,所以把激情投入到花在学习上的时间和精力中。这种兴奋会让你持续花更多的时间去学习,而不是强迫自己去学一些完全让你厌烦的东西。

但是如果你没有任何特别感兴趣的领域,一个比随意学习不相关的技能更强大的框架是将你的努力集中在邻近的学科。相邻的学科是那些紧邻你自己的左边或右边的学科,你每天都与它们互动来完成事情。微软 Windows 部门前主管史蒂文·辛诺夫斯基在讨论成为总经理的职业发展时引入了这个术语,^(,但这个术语对工程师或其他任何领域的人都同样适用。)

如果你是一名产品工程师,相邻的学科可能包括用户界面设计、用户研究、服务器开发或自动化测试。对于基础设施工程师来说,它们可能包括数据库内部、基本的 web 开发或机器学习。用户增长工程师可以通过提高他们在数据科学、市场营销、行为心理学和写作方面的技能而受益。对于技术或项目领导,相邻的学科可能包括产品管理和人员管理。如果你是产品经理或设计师,你可能会学习编码

专注于相邻学科的个人利益

为什么关注相邻学科?在这些领域建立基础有很多好处。

最直接的好处是,这些技能让你在日常工作中变得更加自信和有效。你有多少次因为资源瓶颈(可能来自设计师或其他团队)而在项目上受阻?或者希望您有更好的工作流程,但缺乏自己构建或改进它们的专业知识?或者因为对用户和客户不够了解而不确定下一步应该优先关注什么?

熟悉你通常依赖的相邻学科给了你潜在的灵活性,让你可以自己处理这些领域。您可能不一定是这些相邻领域中最精通的,但是如果您的选择仅限于花自己的三天时间让产品更快地工作,而不是等待团队中更精通的人花两周时间来工作,您可能会决定自己做这件事。该选项仅在您拥有相邻技能集的情况下存在。

与学习一门完全不相关但可能仍然有价值的学科相比,你几乎可以保证在日常工作中使用这些新技能。而且,正如几十年的学习研究表明的那样,主动检索新知识意味着你学到的东西更有可能被记住。否则,随机学习可能很难保持。

当你考虑未来的职业机会时,这种邻近的经历几乎肯定会让你从其他候选人中脱颖而出。如果你是一名能够设计产品功能的工程师,一名能够编写代码的设计师,或者一名能够编写足够多的 SQL 来分析数据集的产品经理,那么你比那些缺乏互补技能的相同职位的人有更多的机会。

相邻学科的知识如何让你的团队受益

除了对你自己的职业生涯有帮助之外,学习相邻的学科也对你的团队大有裨益。首先,它增加了你对不同角色的队友的同理心。系统或基础设施工程师认为自己的工作比前端或产品工程师的工作更核心或更重要,这在行业中并不少见。或者让一个机器学习专家相信她的时间和天赋比工程团队中的某个人更不可或缺。或者对工程师来说,查看产品经理以及他们的日程安排、会议和状态检查是一件令人讨厌的事情。然而,对于任何学科来说,都有艺术和科学的深度,那些擅长于此的人可以为团队做出有意义的贡献。

如果你打算成为一名团队领导或经理,了解其他人的角色的容易或困难是非常重要的,因为这有助于你确定哪些风险领域你需要更密切地关注,以更好地执行项目。即使你没有这样的雄心,对其他学科的同理心也使你更有可能把这些队友当作伙伴而不是对手,你也更容易向他们提供有用的反馈。

当你试图招募和雇佣多样化的人才时,另一个与团队相关的好处就来了。前脸书工程总监乔斯林·戈德费恩(Jocelyn Goldfein)分享了一个脸书过去如何面临具有强烈产品直觉的工程师短缺的故事。该团队在编码流畅性和系统设计方面很强,当他们面试潜在的工程候选人时,他们倾向于根据他们所知道的来提问。不幸的是,这也意味着通过招聘的人有着相似的特征。

当工程师在相邻学科中拥有更广泛的技能时,他们可以更有效地评估候选人在自己核心学科之外的优势。出于同样的原因,需要雇用销售人员的技术型创始人通常会选择在最初自己处理销售事宜^(——这种经历让他们在如何评估潜在销售候选人方面有了更多的视角。反过来,这些经验意味着那些参与面试和招聘的人可以用多样化的技能建立更有效的团队。一些领导者,如 Stripe 和 Etsy 的前工程副总裁马克·赫德伦德(Marc Hedlund),甚至认为“技能的多样性是团队成功的最强有力的预测因素”,^(这使得相邻学科的投资更加有价值。))

那么有哪些学科是和自己相邻的呢?找时间研究、学习,甚至掌握它们。

心理框架

原文:http://www.effectiveengineer.com/blog/mental-frameworks/

我教授工程师和技术领导者有效创造有意义的影响所需的工具。

我是 Quip 的早期工程师,在 Quora、Google 和 Ooyala 都领导过团队。

我在职业生涯中学到的最有价值的一课

原文:http://www.effectiveengineer.com/blog/most-important-lesson-ive-learned-in-my-professional-life

我在 Ooyala 工作了很长时间,这是我离开谷歌后加入的第一家创业公司。有几个星期,我和我的团队会工作 70-80 个小时,很少有几个星期我们的工作时间少于 60 个小时。像许多队友一样,我白天在办公室工作,晚饭后继续在家工作。即使在节假日,我仍然会在笔记本电脑上继续工作,或者至少在产品出现问题时随时待命。

毕竟,我们在竞争激烈的在线视频市场上处于劣势。我们有产品要运送,有功能要构建,没有时间磨蹭了。我们工作得越多,我们能创造的价值就越多,我们的创业就越有可能成功。至少我是这么想的。

在接下来的几年里,我逐渐认识到,增加工作时间并不是提高产量的最有效方式。事实上,更多的工作时间并不一定意味着更多的产出。工作时间太长会导致精疲力竭或生产力下降;如果你把更多的时间花在修复疲劳时犯下的错误上,而不是创造价值上,生产率甚至可能是负的。

还有另一种更可持续的方式来增加你的影响力。这也是我在职业生涯中学到的最有价值的一课:

关注高杠杆活动。

杠杆作用被定义为单位时间内产生的产出或影响。这是时间投资的回报。

不管你是否喜欢在醒着的时候工作,也不管你是不是蒂姆·费里斯的 4 小时工作制 哲学的拥护者,这一课都适用。在某些时候,你会意识到有更多的工作要做,而不是你有时间,你需要优先考虑要做什么。你会发现,增加工作时间并不是增加影响力的可持续解决方案;相反,你需要聪明地工作,更好地选择做什么或不做什么。杠杆应该是帮助你决定把时间集中在哪里的核心的、指导性的标准。

考虑杠杆的另一种方式是考虑通常提到的帕累托原则^(或 80-20 法则——即 80%的贡献或影响来自 20%的努力。那 20%的工作由最高杠杆的活动组成。 4 小时工作周理念要求将这一点发挥到极致——假设一周正常工作 40 小时,你能付出 10%的努力(4 小时)来获得最大收益是多少?)

前英特尔首席执行官 Andrew Grove 在他的书 高产出管理 中解释说,根据定义,可以通过三种方式增加你的杠杆,从而提高生产力:

  • 通过减少完成某项活动所需的时间。
  • 通过增加特定活动的影响。
  • 通过转向更高杠杆的活动。

在这三项活动中,找出哪些活动杠杆更高往往是最棘手的,可能需要走出你的舒适区。

我参与的一些增加时间杠杆的职业活动包括:

  • **指导新员工。**指导(和真正的管理)是一项杠杆极高的活动。在一年的过程中,一个雇员将花费 1880 到 2820 小时工作(假设 47 个工作周,每周工作 40 到 60 小时)。一个月内每天花 1 小时(20 小时)指导或培训一名新员工可能看起来是很长的时间,但这只占新员工第一年工作总时间的 1%,但对其他 99%的时间的生产率和效率有重大影响。

  • **构建工具和自动化重复性工作。**我有软件工程背景,我倾向于做的一个高杠杆活动是构建减少手动重复工作的工具。我有一点偏见,但我坚信每个人都会受益于对编码的一点了解,主要是因为在许多传统上与计算机科学无关的领域,自动化思维会带来巨大的效率收益。不要做机器能为你做的事。

  • 投资于学习和持续改进。这属于 Steven Covey 在他的时间管理矩阵 高效人士的 7 个习惯 中描述的“重要且不紧急”的任务。学习从来不像是一项紧迫的任务,如果你不为它安排时间,很容易让不重要的干扰支配你的时间表。然而,学习能让你提高工作效率,增加可用的机会,所以它是一项重要的高杠杆活动。

  • **根据估计的投资回报,主动确定任务的优先顺序。**当我在专注于问答的初创公司 Quora 致力于用户增长时,我的团队可以考虑在任何给定的时刻做数百件可能提高用户参与度的事情。决定下一步做什么以产生最高的投资回报需要定期审查需要完成什么,并且有必要的指标来指导决策。更一般地说,总有比我们的时间更多的事情要做,定期的优先排序是确保我们把时间花在真正重要的事情上的唯一方法。

  • 举行技术讲座和撰写指南,让新员工加入团队。在 Quora,每个新员工都要经过一系列技术会谈和一系列代码实验室 。受谷歌培训制度的启发,codelabs 是解释我们使用的核心软件抽象和概念的文档,讨论我们为什么构建它们的基本原理,浏览代码库中的相关代码,并提供一组练习来巩固理解。这些花费了团队中许多人很多时间来编写,但它们提供了可扩展和可重用的资源,允许新员工在一致的基础上开始,并减少了每个导师教授相同概念所需的时间。

  • 推迟没有议程的会议或你不需要参加的会议。运行不佳的会议是负面影响,因为它们浪费人们的时间。避开那些。一个必然的结果是为你召开的会议定义和设置议程,这样你就不会浪费别人的时间。

  • 花时间在面试上,改进面试流程。进行面试是一项巨大的工作。面试打断了你的工作日,花在与候选人交谈、写反馈和汇报上的时间加起来相当可观。然而,确保你雇佣了正确的人,有一个好的流程,并且被雇佣的人是你愿意与之共事的人,这对于建立一个强大的团队和强大的产品是至关重要的。有很多周,我每周面试 4 名候选人,我认为我在招聘旺季的个人记录是连续 20 个工作日面试 20 次。

  • 重复使用现有的东西,而不是重新发明轮子。我们的时间和精力最好花在以独特的方式增加价值上,而不是重建现成的东西。开源项目、第三方工具,甚至战略外包都是让你把更多时间放在核心竞争力上的方法。

这些活动提供了几个例子,说明在高杠杆领域投入时间和精力可以增加你的影响力,而不仅仅是埋头苦干和工作更长时间。希望它们能启发你在自己的职业生涯中做些什么来增加你的影响力。

不要只是努力。聪明地工作。

这篇文章改编自我在 Quora 上写的一个回答

动机

原文:http://www.effectiveengineer.com/blog/motivation/

我教授工程师和技术领导者有效创造有意义的影响所需的工具。

我是 Quip 的早期工程师,在 Quora、Google 和 Ooyala 都领导过团队。

我的新冒险:科技人员的领导力发展

原文:http://www.effectiveengineer.com/blog/my-call-to-new-adventure

上周,我与你分享了我写给 Quip 的私人告别信。

本周,我非常兴奋地宣布我的新冒险。我和的好朋友、由工程经理转行的教练 Jean Hsu 一起开始了一项雄心勃勃的探索。

我们将联手打造一个新品牌 Co Leadership ,成为面向工程师和其他技术领域领导者的卓越领导力发展品牌。

这也是你应该对此感到兴奋的原因。

去年,我向我的读者发出了一份调查,以更好地了解你们作为工程领导者所拥有的梦想和面临的挑战。成百上千的人回复了。

我通读了每一条回复,最后留下了一页又一页的笔记。很明显,你们中的许多人会发现在工程领导力发展方面有更多的资源是有帮助的,我去年一直渴望在这方面工作。

我想做的事情太多了。关于如何成为有效的技术领导者以及如何进行有效的一对一培训的课程。关于如何有效沟通和如何建立有效团队的指南。采访收集硅谷最强团队的最佳实践。而这些只是冰山一角。

在过去的几年里,我一直渴望成为一名成功的个体企业家——一名工程师出身的企业家,他将围绕这位卓有成效的工程师建立自己强大的品牌和业务。我跟踪了蒂姆·菲利斯、拉米特·塞西以及其他一些在自己周围建立了数百万美元品牌的人。

但有一件事一直让我不敢全押,那就是那种孤独的感觉。

当我在 2015 年辞职全职写书时,每天独自工作是迄今为止最困难和最可怕的部分。这一经历是有益的,我对此并不后悔。但是每当我陷入绝望的深渊时——也许我度过了糟糕的一天,我写的东西听起来都很糟糕——要把自己拉出来是非常令人沮丧和具有挑战性的。当然,我可以和我的妻子和朋友谈论我的工作,但这和有人和你一起谈论工作是不一样的。

如果你以前单独完成过一个为期数月的工程项目,你就会明白我在说什么。有些日子里,你会感到非常沮丧和绝望,因为你撞上了墙,或者因为你爬进了一个兔子洞,或者因为事情不像它们应该的那样工作。你会问自己,“我为什么要这么做?我什么时候才能完成?”

当我想到我可能与谁合作时,我想到的一个人是简。我只见过她两三次。但她一直在硅谷的几家知名公司工作,包括谷歌、Medium 和 Pulse,她是我尊敬的人,因为她在网上发表了关于工程领导力的深思熟虑的文章。

我在 9 月初给她发了一封邮件,看她是否想探索联手。然后我就等了。我很高兴有可能和一个价值观与我一致的人一起工作。我也很紧张,因为我不知道还能问谁。

我分散了自己的注意力,但在接下来的两天里,我一直在查看手机,等待回复。当她最终回答说,她也认为我们的使命是一致的,她有兴趣探索,我很高兴,也很兴奋。从那以后,我们每周会面一次,投资于我们的关系,梦想我们希望围绕技术领先地位创造的东西。

在如何将自己成长为人们喜欢共事的领导者方面,你可以期待的是更多的更快的更好的资源。

更多——因为我现在已经辞职,把我的精力全放在这件事上,因为现在我们两个人一起在做这件事。

更快——因为我们都在推动自己找出我们正在创造的最小可行产品,以便我们可以验证我们的工作,并让您更快地获得有价值的产品。

更好——因为当你让两个人互相挑战时,你最终会比任何一个人单独想出更好更有创造性的想法。

事实上,如果你能从我过去的几个月中学到什么的话,那就是如果你能找到一个人和你一起领导,你自己领导的许多事情会变得更容易、更快、更有回报。提问可能会令人害怕和紧张——对我来说当然是这样,因为这意味着放弃一些控制权——但结果可能会令人震惊。令人惊讶的是,在过去的几个月里,我对自己的使命变得更加清晰了。

我将继续在这个博客上写关于有效工程的文章,我将把更多的精力转移到写工程领导和有效团队上。如果你是技术领域的领导者(或渴望成为一名领导者),并希望获得更多 Jean 和我为领导力发展打造的最佳资源,请在此处告诉我们 —我会将你添加到我们新的 Co 领导力名单中,这样你就不会错过。

我们寻求改变科技领域的领导文化是非常雄心勃勃的,我们很清楚我们无法独自完成。只有我们为您创造真正的、变革性的价值,我们才会成功。

您可以相信,我们会听取您关于您希望弥补的领导力方面的最大差距的意见,并认真对待您的反馈来制定我们的课程。

您赋予我们的权利越多,我们就越有能力创造资源和体验来赋予您权利。加入我们的探索,让我们知道如何最好地帮助你。

作为一名新的软件工程师,如何避免你可能犯的最大错误

原文:http://www.effectiveengineer.com/blog/new-software-engineer-mistakes

作为一名新的软件工程师,由于缺乏经验,你肯定会犯一些战术上的错误。也许你自己开发了一些功能,后来才发现有一个通用的设计模式可以让你做得更好。或者你不小心把一个 bug 推向了生产。或者你忘记了考虑可伸缩性和性能问题,直到时间紧迫。

错误是会发生的,而这些错误只是学习中很正常的一部分。

更重要的是确保你做出正确的重大决定,避免代价最大的错误。对于新工程师来说,从长远来看,最大的错误是没有优化你的学习速度。一些新的软件工程师犯了这个错误,因为他们太满足于现状。其他人成功是因为他们太自大,认为他们已经什么都知道了。更多的人落入陷阱,因为他们害怕尝试新事物会失败,然而,这是最有可能落后的方式之一。

从长远来看,学习速度的微小变化会产生巨大的影响,因为对自己的投资会随着时间的推移而增加。你今天学到的知识和经验为你将来发现和抓住的机会奠定了基础。你越早投资自己,这些投资就有越多的时间在你的职业生涯中复利。

Alfred Lin 和 Zappos 领导团队的其他成员以推动员工每天提高 1%而闻名。如果你能持续 365 天这样做,那么到年底,你会提高 37 倍,而不是 365% (3.65 倍)。这就是复合增长的力量。

因此,错过学习和成长机会的机会成本非常高。当面临一个决定时,你应该问自己:哪个选项会提高我的学习速度?从长远来看,能让你学得更快的选择会让你获得更大的成功。

关注你的学习速度是有价值的,还有另一个原因——它实际上是一个可操作的框架,用于制定决策和经常达到工程最佳实践。当你的框架要选择更能提高你学习速度的选项时,作为一名新工程师,你所面临的许多其他艰难的决定自然会随之而来:

  • 你如何决定接受哪份工作邀请?你在创业公司还是大公司工作?在一家高增长率的公司或团队工作,找到你可以学习的聪明人。

  • 什么时候你应该寻求帮助,什么时候你应该自己解决问题?当挣扎中增加的一分钟对你的学习没有帮助时,当一点点指导可以腾出你的时间来学习更多东西时,寻求帮助。

  • 您应该将代码评审发送给谁?如果你的目标是学习,你应该把它发给最严厉的批评者,他们可以就如何改进你的设计和代码给你可操作的详细反馈,而不是团队中倾向于快速橡皮图章批准的人。

  • 对于您的代码提交,合适的块大小是多少?因为更快地获得反馈意味着您能够将反馈整合到您编写的未来代码中,所以您应该进行更小、更增量的更改。当我刚开始从事软件工程时,我在谷歌实习期间犯了一个错误,在最后一周提交了我项目的所有代码。我导师的收件箱里收到了一条“Edmond 给你发来了一份巨大的代码审查”。如果我的导师不批准修改,延迟代码审查不仅会使我夏天的工作有被遗忘的风险,而且我还错过了学习和应用他的反馈的机会。你可以肯定的是,在那次经历之后,我的代码提交增加了很多。

  • 你会选择自己熟悉或不太熟悉的任务来做吗?如果处理那个令人不舒服的任务会教会你一项有价值的技能,也许是在与你相关的相邻学科中,那么你可能会考虑接受这个挑战,而不是在同一领域做更多的事情。

  • 在项目失败后,或者当您构建的功能没有达到预期的效果时,您应该做什么?为了最大限度地从那次经历中学习,你应该与你的团队进行一次公开而诚实的事后分析,讨论应该吸取什么教训以及下次如何避免犯同样的错误。

  • 你应该如何应对一个你不得不与之共事的难相处的同事?在你的职业生涯中,你会遇到难以相处的人。一旦理解了这一点,你就会意识到消极攻击或回避同事不会帮助你在未来更好地与人相处。相反,把每一次挑战都当作一次学习经历。积极主动地学习如何进行艰难的对话,如何解决冲突,以及如何使这些关系更有成效。一开始你可能不会成功,但你会从每次经历中吸取教训,为将来做准备。

  • 如果你打算马上换工作,你在最后几个月应该做什么?鉴于许多人每两年换一次工作,所有这些“最后几个月”随着时间的推移会累积起来。简单的惯性意味着你会错过学习的机会,所以为什么不在那几个月里想办法尽可能多的学习呢?

有无数其他的例子表明,通向更多学习和成长的道路通常会在你的早年带来更好的结果,特别是当你有更少的约束和责任要应付的时候。

几周前,我与一家成长中的初创公司的联合创始人共进晚餐,我们聊了一会儿关于招聘的事情。我们每个人都参加过数百次工程面试,我们观察到,一个积极向上的求职者通常比那些技术能力更强但不注重自我提升的人更容易被录用。即使你目前的技能水平不是很强,如果你的学习曲线是指数级的,你很快就会超过其他更高级的工程师。

所以集中精力提高你的学习速度。抽出 20%的时间投资自己。看书。提升你的技术和非技术技能。找个导师。参加会议。要留心。如果你避免了没有优化学习速度的错误,你将会成为你能成为的最好的工程师。

这篇博文基于我最初在 Quora 上写的一个回答

入职

原文:http://www.effectiveengineer.com/blog/onboarding/

我教授工程师和技术领导者有效创造有意义的影响所需的工具。

我是 Quip 的早期工程师,在 Quora、Google 和 Ooyala 都领导过团队。

个人成长

原文:http://www.effectiveengineer.com/blog/personal-growth/

我教授工程师和技术领导者有效创造有意义的影响所需的工具。

我是 Quip 的早期工程师,在 Quora、Google 和 Ooyala 都领导过团队。

选择正确的标准来激励你想要的行为

原文:http://www.effectiveengineer.com/blog/pick-the-right-metric-to-incentivize-desired-behavior

从优秀到卓越 中,吉姆·科林斯讲述了沃尔格林公司首席执行官科克·沃尔格林如何将公司发展成为美国最大的药品零售连锁店的故事。在他的领导下,1975 年投资沃尔格林的 1 美元到 2000 年将飙升至 562 美元,轻松超过股票市场指数 15 倍。在此期间,沃尔格林执行了一个关键概念:建立美国最好、最方便的药店。

沃尔格林在执行这一战略时面临的一个问题是定义一个核心指标,将公司内部领导人的激励与便利的概念相结合。传统上,大型零售连锁店,包括 20 世纪末期沃尔格林的主要竞争对手埃克尔德(Eckerd ),根据每家商店的利润来衡量成功。然而,这一指标鼓励这些公司减少更贵、更方便的商店的数量,并在更便宜和更偏远的地方购买不太方便的商店。

正如柯林斯解释的那样,沃尔格林明智地决定改变其核心指标,而不是接受传统指标:

“沃尔格林将重点从每家店的利润转移到每次顾客到访的利润。便利的位置是昂贵的,但通过增加每次顾客访问的利润,沃尔格林能够增加便利性(一英里 9 家店!)并同时提高整个系统的盈利能力。每家商店的标准利润指标将与便利概念背道而驰。

衡量标准的转变在调整公司重点方面发挥了巨大作用。沃尔格林不再关注每家商店的利润,而是用更方便的位置取代了不方便的位置,为顾客买下了有多个入口和出口的角落地段。如果能找到一个更方便的角落位置,它会关闭非常好的商店,把它们搬到一个街区以外。在城市里,它甚至会将多个商店聚集在一英里半径内,这样顾客只需步行几个街区就能到达最近的沃尔格林超市。

为了增加每次顾客访问的利润,沃尔格林投资了许多服务,以优化顾客在商店的便利性。它建立了一小时摄影站、免下车药房和一个名为 Intercom 的网络系统,以电子方式将每个沃尔格林的客户数据连接到一个中央数据库,以便客户可以在美国的任何沃尔格林领取处方药,就好像这是他们的本地药房一样。

沃尔格林的竞争对手使用不太有效的指标,如每家商店的利润,并继续购买便宜和偏远的商店位置,最终将在药店战争中失败。Eckerd 在 2004 年卖给了 CVS。

你如何设定目标决定了你的关注点

虽然沃尔格林的故事侧重于一个指标如何影响一家公司,但定义正确指标的重要性也适用于个人和团队。

作为工程师,我们经常为自己和我们的团队设定标准,或者受制于我们的经理或组织设定的标准。我们倾向于擅长解决问题,并在指标设定后找出如何优化的方法,但关注实际指标的选择会显著影响我们采取的行动。正确的度量标准将团队的努力对准一个共同的目标,如果实现了这个目标,就会增加产品或组织的成功;错误的衡量标准会导致无效的努力,甚至更糟的是,会适得其反。

以下是不同指标如何改变行为的几个例子:

  • 每周工作时间每周生产率。我在初创公司经历过几个阶段,为了更快地推出产品,每周工作 70 小时成为常态。从那次经历中,我从未想过这对团队或公司来说是正确的决定。一旦你接近这个数字,每增加一个小时的边际生产率就会急剧下降。每小时的平均生产率下降,错误率和错误率增加,往往会导致难以衡量的倦怠和流动成本,加班之后通常会有一段相等的“休息时间”,因为员工要努力赶上他们的生活。^(最终,每周工作时间的指标是不可持续的,一个更合理的指标是与每周生产率挂钩的指标,生产率是根据你的关注领域来衡量的,可能与产品质量、网站速度或用户增长有关。)

  • 平均响应时间p95/p99 响应时间。关注服务或网站的平均响应时间会导致与关注 95%或 99%的响应时间截然不同的优先级设置。为了降低平均值,您将倾向于更多地关注一般基础设施的改进,这可以从所有请求中节省毫秒数。为了降低 p95 或 p99,你会倾向于在你的系统中找出最坏的行为。在一个产品中,关注 95%或 99%的响应时间通常很重要,因为它们往往反映了您最活跃的用户的体验,这些用户关注最多的人,最活跃,或有最多的建议,并且支持他们往往需要更高的计算成本。

  • 修复的 bugvs未解决的 bug。我认识的一个曾经在 Adobe 质量保证部门工作的朋友分享了一个故事,他的团队曾经奖励那些修复了 bug 的开发者。当然,这只会激励他们在构建新功能时对测试不那么严格,这样以后就有更多的机会修复容易出现的错误来获得分数。

  • 注册用户 vs 注册用户增长率周活跃用户 vs 周活跃率按队列。当增加一个产品的用户群时,看注册用户和每周活跃用户的总数并满足于看到这些指标向右上方移动是很有诱惑力的。不幸的是,这些数字并不能说明你是否在持续增长。另一方面,根据您的增长率(新注册用户与总注册用户的比率)或根据您的周活跃率如何通过 群组 (在第 N 周注册的用户中有多少比例仍然每周活跃)来衡量增长?)为您的产品性能提供更具可操作性的见解。

不仅定义正确的度量标准本身很重要,而且为该度量标准定义目标的大小也很重要。没有具体目标的减少网站延迟的目标将证明小的、渐进的改进是合理的。但是,对于一个目前可能需要几秒钟才能呈现的网站来说,要将延迟大幅降低到 200 毫秒以下,可能需要削减功能、重新构建系统或用更快的语言重写。在更具侵略性的目标下,小胜不再有意义。

您没有设定的指标也很重要

从 1999 年到 2009 年,电子商务公司 Zappos 从零收入增长到被亚马逊收购时的 10 亿美元以上。它强大的品牌和与众不同之处在于出色的客户服务,这也反映在他们的顶级公司价值观“通过服务带来惊喜”中在 传递快乐 中,首席执行官谢家华解释说,公司确保客户服务代表内化这一价值的一种方法是不测量服务电话需要多长时间:

大多数呼叫中心根据业内所谓的“平均处理时间”来衡量员工的表现,平均处理时间主要是每个代表一天能接多少个电话。这意味着销售代表担心他们多快能让客户挂断电话,在我们看来,这并不能提供优质的客户服务…在 Zappos,我们不衡量通话时间(我们最长的一次通话几乎长达 6 个小时!),而且我们不追加销售。我们只关心销售代表是否超越了每一位客户。”

因此,为您的组织、团队或您自己设定正确的指标非常重要。在公司的背景下,Collins 称这个指标为经济分母,将问题框定为:

“如果你可以选择一个且只有一个比率——每 x 的利润——随着时间的推移而系统地增长,那么哪个 x 会对你的经济引擎产生最大、最可持续的影响?”

同样,当我们为自己设定指标时,我们应该问自己:如果你可以选择一个且只能选择一个随着时间的推移而有系统地提高的指标,那么哪个指标会对你和你的团队的效率产生最大且最可持续的影响?

产品开发

原文:http://www.effectiveengineer.com/blog/product-development/

我教授工程师和技术领导者有效创造有意义的影响所需的工具。

我是 Quip 的早期工程师,在 Quora、Google 和 Ooyala 都领导过团队。

生产率

原文:http://www.effectiveengineer.com/blog/productivity/

我教授工程师和技术领导者有效创造有意义的影响所需的工具。

我是 Quip 的早期工程师,在 Quora、Google 和 Ooyala 都领导过团队。

编程;编排

原文:http://www.effectiveengineer.com/blog/programming/

我教授工程师和技术领导者有效创造有意义的影响所需的工具。

我是 Quip 的早期工程师,在 Quora、Google 和 Ooyala 都领导过团队。

项目

原文:http://www.effectiveengineer.com/blog/projects/

我教授工程师和技术领导者有效创造有意义的影响所需的工具。

我是 Quip 的早期工程师,在 Quora、Google 和 Ooyala 都领导过团队。

嘲弄

原文:http://www.effectiveengineer.com/blog/quip/

我教授工程师和技术领导者有效创造有意义的影响所需的工具。

我是 Quip 的早期工程师,在 Quora、Google 和 Ooyala 都领导过团队。

为什么提高工程领导的标准很重要

原文:http://www.effectiveengineer.com/blog/raising-the-bar-for-engineering-leadership

上周,我参与主持了一系列关于工程领导力的研讨会。

第一次是和我的好朋友兼产品经理戴安娜·柏林,她是 Quip 的工程经理。另一次是和另一个好朋友,也是工程经理出身的教练 Jean Hsu 一起,为旧金山湾区的工程领导者提供培训——这些人从高级个人贡献者到技术主管、经理到副总裁。

这两个研讨会都侧重于我们作为工程领导者可以进行的强有力的对话,以发现和分享什么是重要的,建立信任,并对我们对周围世界的影响承担责任。

一年前,如果你告诉我,我将围绕工程领导力创建并领导研讨会,我会怀疑地看着你。我吗?在一个工作室的前面?你一定是在开玩笑。

现在,它们是创造和领导的有趣和令人兴奋的经历。此外,我还感到一种强烈的召唤,那就是创造更多这样的工作坊体验,并将其带入科技行业,因为它们比以往任何时候都更需要。

在过去的四年半时间里,我写了很多关于杠杆的东西,包括我的博客和我的书 有效的工程师 。这是一个强大的框架,用于衡量和指导我们作为工程师在世界上创造的影响。

今天的工程领导者对世界有很大的影响力——网络和移动技术使我们能够制造出在短时间内彻底改变人们生活的产品。在不到 5 年的时间里,脸书的用户数量翻了一番,从 10 亿增加到 20 亿。仅在 8 年内,优步的收入就增长到了 65 亿美元。

然而,在我们匆忙成长、成长、成长的过程中,越来越多的危险是,在技术领域工作实际上造成了距离,而不是把人们聚集在一起。

我们忽略了用户实际上是一个有故事的人,一个我们正在塑造的生活。在过去五年的大部分时间里,我一直致力于用户增长和参与度,我经常需要提醒自己,在向上和向右移动的数字和图表背后有真实的人。

我们忘记了在工作中让我们感到沮丧的同事和队友也是人,他们有自己的需求和不安全感。在过去的一年里,我的一些同事在会议上对我大发雷霆,他们因为误解而公开否定我的想法,他们因为我们的目标不一致而感到巨大的压力和紧张。而且,在每一个案例中,我们都通过艰难的对话和记住我们都是同一团队的人,怀着良好的意愿,恢复了比以前更牢固的关系。

如果我们没有技能来围绕重要的事情进行对话,并发现和意识到我们的影响,我们将无法为这种影响承担责任。

这就是为什么我很高兴明年能花更多的时间来提高工程领导的标准。我将从过去的一年中汲取最有价值的经验教训——从我在教练培训学院为期一年的教练培训和领导力发展项目,以及从技术领导和经理到董事和首席技术官的 50 多人的辅导中——并与大家分享。

我很喜欢参与者之一伊丽莎白·福特在研讨会结束后分享的这条推文。这提醒了我计划在世界上创造的影响程度:

“我刚刚参加了由@jyhsu 和@edmondlau 举办的关于沟通/领导力的真正转型研讨会。如果你在工作中与其他人交谈,你可能需要这个工作室!”

我们宣布后仅一周,本次研讨会的门票就销售一空。就在本周,Jean 和我完成了一个下午的大梦想(是的,梦想是巨大的),在那里我们梦想了许多令人兴奋的事情,我们希望明年为你们创造。因此,如果你致力于提升自己的领导力,不想错过机会,那么在新的研讨会启动时,就可以提前获得参与机会。

让您的工程领导力更上一层楼

打破你自己的限制信念,掌控你自己的故事,培养你内心真正的领袖。

如何利用两项关键技能开启更有成效的对话

原文:http://www.effectiveengineer.com/blog/reclaim-missed-opportunities-with-more-effective-communication

我眨掉了眼泪。

团队士气正在崩溃。同事们,很多我认为是朋友的人,都离开了公司。我参加了一个高层领导的会议,我刚刚表达了对公司运营项目的方式可能会伤害团队的担忧——这是一个我非常关心的团队,也是我多年来投资的地方。

我本以为领导团队会支持我,并说:“是的!爱德蒙,你是对的!我们需要解决这个问题。”

但是相反,他们用冰冷的问题挑战我的诊断和我的想法。

“你的数据呢?”

“你怎么知道你说的是真的?”

“你为什么要这么做?”

事后看来,他们可能只是在尽职调查——如果我在设计一个技术问题的解决方案,我可能会问同样类型的问题。但这不是技术问题。在那一刻,他们的一系列问题让我处于守势。我感到受到了攻击和误解——尽管我付出了多年,他们仍然不信任我的动机。

我带着决心帮助解决问题的心情参加了会议,但是我带着沮丧和无力的心情离开了。几个月后,我离开了那家公司。

自从那次会议召开以来,似乎已经是上辈子的事了,但那次失败仍历历在目。双方带着良好的意愿参加了会议——我们都想得到我们认为对团队最好的东西。然而,在这场对话中,没有人赢。我无法说服领导团队对我关心的事情采取行动。高层领导失去了一位重要的员工,而就在 60 分钟前,这位员工还在团队中投入巨资。

这里发生了什么?对话怎么会变得这么糟糕?事情会有怎样不同的结果?

我们身边错过的机会

在所有可能的对话中,显然存在更好的结果。

有一次谈话本可以让我感到自己被倾听和理解——在那次谈话中,我感到自己被赋予了力量,得到了支持,从而提高了公司的士气。这对团队中的每个人来说都是一个好结果。没有进行这样的对话是一个错失的机会。

像这样的情况——错失对话机会导致没人想要的结果——经常发生。

也许你和其他团队的成员一起工作在一个共享的项目上。你期望看到每个人一起工作。但是,相反,人们说话的时候会忽略对方。一个人只担心这个项目对她自己的团队意味着什么。另一个人不关心参与讨论,只是要求小组告诉他需要做什么。某个不完全理解项目的人不断地将对话引向无效的方向。你试图指出团队前进需要发生的一切,但却被忽视了——所以你放弃了,在接下来的会议中袖手旁观。每个人都沮丧地离开,对需要做什么没有更清晰的了解——共享的协作机会被浪费了。

或者也许你正在领导一个团队范围的工程努力。你单枪匹马地为需要做的事情提出建议,并与团队分享,为自己的领导能力感到自豪。但是你注意到人们并没有完全接受你的提议。他们不会像你预期的那样,全心全意地团结在你周围。您错过了一次小组对话,以听取对您的团队真正重要的内容。你没有首先围绕一个共同的愿景建立联盟就奋力向前。难怪他们觉得被落下了。

或者,你可能对与你一起工作的工程师的粗心行为感到沮丧。但是你没有向那个人表达你的沮丧,而是把它藏在心里。这种挫败感不仅会让你从自己的工作中分心,还会让你随后与那个人的互动受到不耐烦和烦恼的影响。没有表达出你的感受,就剥夺了你听到他们的说法的机会——也许你的同事承受了你没有意识到的巨大压力。一次谈话可能会让你的视角从沮丧转向对他们处境的同情,甚至是对他们不顾压力所做贡献的赞赏。你甚至可以提供你的帮助。

在每一种情况下,错过的机会都会导致次优的结果。我们可以想象,通过更有效的沟通,发生的事情可能会更接近可能发生的事情。

说出正在发生的事情,倾听没有说出来的话

那么,我与领导团队的对话结果会有什么不同呢?

这里的关键见解是,通过更有效的沟通,任何一方都可以改变局势的结果。

如果当时我更成熟一点,我可能会更好地阐明正在发生的事情——在回答他们的问题时,既有我想要的,也有我的感受。我本可以说:

  • “我感觉到团队士气低落,这让我感到难过,因为我真的很关心与我共事了这么久的人的幸福。我想让我们为此做一件事。”
  • “我冒险说了出来,我感觉到你对我说的话有些不信任。”
  • “你的一系列问题让我觉得自己在为自己辩护,好像你在盘问我,却不相信我说的话。这也让我分享想法的空间变得不安全。这是你的意图吗?”
  • “我带着坚定的态度参加了这次会议,但我注意到,你所说的让我感到非常没有动力为解决这个问题做出实际贡献。你的问题想达到什么目的?”

光是这些陈述就会改变谈话的基调。通过在对话中阐明我的情况,而不是让我的挫折感累积并下意识地影响我的态度,我就有可能感受到领导团队的倾听和理解。

因为当内心发生的事情没有表达出来时,情感的潜流就很难解决。假设我们都想让团队得到最好的结果,解决存在的紧张关系将使我们能够就共同的意图达成一致,并朝着有意义的行动前进。

高层领导团队也可以通过倾听没有说出来的话来带来更好的结果。

即使他们对我的实际提议没有信心——他们完全有理由在行动之前提出问题——他们也可以从承认我的话背后的强烈情绪开始:

  • “我们看到并欣赏你对团队幸福的深切关注。”
  • “这项计划对你来说有什么重要的?”
  • “您希望看到这次对话的结果是什么?”
  • “我们正在做的事情和团队正在发生的事情对你有什么影响?”

这种认可和问题会让我更开放地了解对我来说什么是重要的。他们会把讨论人性化,而不是把它当作一个需要调试和解决的工程问题。

在每次谈话中,无论你是经理、个人贡献者、同事、朋友还是任何其他角色,你都有能力改变语气和结果。

两项核心技能阐明正在发生的事情倾听没有说出来的事情让我们能够做到这一点。这些技能是我在最近的培训^(和领导力教练工作中首次发现的,它们很快与我的每项工作和个人关系相关。他们让我们在工作和与他人联系的过程中重新获得失去的机会。)

对你来说更重要的是,这些技能是可以学习的。当你发展这些技能时,你就能发现存在的共同之处,并将良好的意图转化为良好的结果。你可以创造对话,让双方都觉得自己说的是真的,而且双方都能看到和听到对方。

如果这些技能引起了你的共鸣,并且你想学习更多,那么你很幸运。

我的朋友戴安娜·金博尔(Diana Kimball)是一名领导力教练和高级产品经理,我将与她共同主持一系列关于有效沟通的研讨会。你将发展技能和工具来表达真实发生的事情,并倾听没有说出来的话。你将了解到简单而有力的问题是如何完全改变谈话的基调,让你与你交往的人建立更牢固的关系。在工作和生活中,这会给你带来什么新的可能性?

注册以获得关于研讨会的通知。

参加有效沟通研讨会

通过学习表达正在发生的事情和倾听没有说出来的话,在你的工作和生活中创造新的可能性。


感谢戴安娜·金博尔和陈潇阅读本文的初稿。

非凡职业生涯的三大关键

原文:http://www.effectiveengineer.com/blog/remarkable-engineering-career

在过去的几年里,我一直在指导谷歌的一位工程主管如何考虑发展她的职业生涯。她已经在公司工作了很多年,并准备扮演更重要的角色。

她不只是想成为另一个能够及时交付高质量代码的工程师。谷歌已经有很多这样的东西了。相反,她渴望做出自己明确无误的标记。

她是如何在公司的 2 万多名工程师中脱颖而出的?她如何对她的团队和她所从事的产品产生有意义的影响?

我们围绕她的职业发展的谈话通常围绕三个主题:

  • 她应该在哪个团队工作。哪些团队是谷歌使命和公司优先事项的核心?她可以在哪里生产直接为公司带来有意义的商业价值的产品?
  • 她如何对自己的工作更有活力和动力。她最喜欢做什么?什么项目会给她提供学习新事物的机会?
  • 她认为自己与众不同的优势。尽管许多工程师倾向于埋头苦干,专注于编码,但她却拥有跨多个团队和系统管理复杂性的无畏能力。她可以有效地保持项目正常进行,并迅速找出出错的原因。

在明确了这些维度之后,她开始寻找与这些维度一致的机会,并逐渐成为公司的技术主管和经理。她赢得了同事的尊重,定期向组织中的高层领导提交关键计划,并开始在外部活动中代表公司。她为自己建立了非凡的事业。

通过研究类似的问题,你也可以找到做同样事情的方法。在这篇文章中,我分享了一个简单但强大的框架,你可以用它来区分自己,创造一个非凡的职业生涯。

当然,如何在你的工程生涯中脱颖而出不仅仅与谷歌员工相关。今天,世界上大约有 2000 万软件开发者。

这么大的就业市场,如何让自己与众不同?你如何确保 5 年或 10 年后,你不再是又一个做着和你现在一样事情的工程师,而是一个其他人了解和尊重的工程领导者,从事最让你兴奋的事情?你如何从一个努力争取每一个面试机会的人,变成一个顶级公司积极竞争招聘的人?

这些问题经常出现在我与工程师进行的领导力培训或职业发展谈话中。我想概述一个简单的结构,用于确定从一名优秀的工程师转变为一名伟大的工程师需要关注什么:

找出你的激情、优势和市场需求的交叉点。

3 Keys to a Remarkable Career

这三个组成部分形成了一个维恩图——在它们的交叉点上,你找到了打造一份令人惊叹的职业的道路。如果你错过了任何一个元素,你最终将功亏一篑。

当你在一个领域有激情和技能,但是没有市场需求,你已经为自己创造了一个爱好——可能是有趣和值得的——但不是一个职业。

当你对一个高需求领域充满热情,但你缺乏技能,你将无法实现你想要创造的影响。最后,你会因缺乏进步和无法执行而沮丧——至少在你找到一个你确实有技能的相邻领域或角色之前。

当你在一个高需求领域表现出色,但对你正在做的事情缺乏激情时,你可能会赚很多钱。但迟早你会厌倦,失去动力。你会奇怪为什么你每周要花 40 个小时或更多的时间在没有成就感的工作上,这些工作没有给你的生活带来任何意义。

让我们更详细地了解每个元素。

激情、优势和市场需求

要找到你的激情,问问你自己:

  • 什么活动让你最兴奋?
  • 什么样的工作能让你进入心流状态——工作中你如此投入以至于你甚至没有注意到时间已经过去了多少?
  • 什么样的工作让你充满活力,可能让你比刚开始时更兴奋、更有激情?

当思考你的激情时,想想它们的缺点也是有帮助的——你确实不喜欢做的活动。什么会过度消耗你的能量?会议?电子邮件?原型制作?设计?运营?

为了确定你的优势,问问你自己:

  • 你真正擅长工程的哪些方面?
  • 相对于你的同行或其他工程师,你的竞争优势是什么——尤其是在非技术技能方面?
  • 有哪些与你目前的优势相关的学科你也可以学习和掌握?

当考虑你的优势时,变得真正擅长 2 或 3 件事是非常强大的。正如斯科特·亚当斯解释的那样,在一件特定的事情上成为最优秀的人要比在两项或更多的技能上成为前 25%的人更难,你需要将这两项或更多的技能结合起来才能做出非凡的事情。

例如,我是一个比许多人更强的工程师,但我不幻想我能达到杰夫·迪恩那样的工程水平。我并不比绝大多数全职作家更好,但我擅长提炼重要的东西,并把它传达给人们。这些技能共同创造了一个机会,让我可以就技术主题进行交流、教学和指导。

发现你与众不同的地方。

下载我的强项查找工具,它包含 30 多个有针对性的问题,可以帮助你找到自己的核心优势。

最后,为了确定市场需求,

  • 市场上有哪些看起来需求量很大的热门趋势?例如,机器学习、数据科学和移动开发近年来都有很高的增长。
  • 你公司的哪些团队和产品领域为你的企业创造了最大的价值?
  • 你认为什么样的战略产品赌注或工程投资可以创造巨大的价值?

当考虑市场需求时,关键的洞察力是将您的工程工作与领域、公司、团队和计划结合起来,在这些领域、公司、团队和计划中,您的角色中的成功转化为商业价值。

寻找你自己的路

当你步入激情、优势和市场需求的交汇点时,你就为自己创造了一个可以持续有效地创造影响力的角色。

这就是为什么找到这三个领域的交叉点并在交叉点内寻找机会是如此重要。

然而,如果你的交叉点不明显,不要绝望。找到它的途径需要创造力,但是“工程师”这个职位最好的一个方面是你的角色可以非常灵活。作为一名工程师,你解决问题。你应该利用你所有的技能——技术的和非技术的——来做到这一点。

我花了几年时间才发现并在用户增长和参与这一重点领域迈出了自己的步伐。我刚开始职业生涯的时候甚至不知道这个领域的存在。这个领域结合了我在塑造用户行为方面的热情和我在产品领导、数据分析和写作方面的优势,是每个初创公司都需要成功的高需求领域。

我花了十年的时间才发现,工程师领导力培训是另一个让我充满活力的领域,它利用了我在倾听和发现人们的可能性方面的优势,并为我的同事增加了巨大的价值。

这里的长时间框架并不意味着你只是被动地等待,看看在你的职业生涯中会出现什么。相反,这是一个持续的学习过程——在任何时候,你都专注于最能代表你的交集的领域。随着时间的推移,你的兴趣会随着你的经历而变化。你的技能会提高。市场和社会的需求也会发生变化。随着每一次转变,新的可能性会出现在你面前。

你将如何利用它们?

从找出自己的核心优势开始。

下载我的强项查找工具,它包含 30 多个有针对性的问题,可以帮助你找到自己的核心优势。

成功的脚本——足球蔻驰能教会我们什么是工程

原文:http://www.effectiveengineer.com/blog/script-for-success

凌晨 3 点,电话响了。一般来说,半夜有人给你打电话从来都不是好消息。我伸手拿起手机,看到一个自动提示:quora.com 停机了。尽管这张床看起来很诱人,但每一分钟的延迟都意味着 Quora 全球用户在访问网站时又多了一分钟的麻烦。我滚下床,走向我的电脑。我的第一个想法是登录 Hipchat,以防我的一些夜间队友可以提供帮助。我的眼睛仍在适应明亮的屏幕,我开始浏览错误日志、可靠性仪表板和服务器图表,试图找出中断的原因。在进行了一系列检查后,看起来我们的主数据库被彻底破坏了——这将是一个漫长的夜晚。

寻呼机值班轮换,即工程师轮流待命,作为一周内任何和所有站点警报的第一道防线,是发展全球在线产品过程中最紧张的经历之一。随叫随到意味着无论你去哪里,你都必须随身携带笔记本电脑,而且你可能会在任何时候被叫走,有时是为了处理琐碎的问题,但其他时候是为了解决令人头疼和时间敏感的停机问题。然而,考虑到这种共同的责任对于保持产品的正常运行是至关重要的,我们能做些什么来改善这种情况,或者我们必须在压力和不太理想的情况下很好地执行的任何情况?

一个策略来自旧金山 49 人队的前教练比尔·沃尔什。在 中,分数自己决定 中,沃尔什讨论了一种叫做“成功脚本”的策略沃尔什会为如何应对所有类型的游戏场景编写脚本或应急计划。他有一个计划,如果球队在第一节后落后两次或更多次达阵,他有一个计划,如果关键球员受伤了,他有一个计划,如果球队还有 25 码,还剩一场比赛,需要达阵,他有一个计划。事实上,49 人队每场比赛的前 20-25 场比赛最终都变成了脚本,这是一个如果-那么规则的树,它编纂了球队在不同情况下应该做的事情。

沃尔什意识到,在比赛的关键时刻,当成千上万的球迷向你咆哮,当对方球队的球迷向你扔热狗和啤酒杯,当计时器在一秒一秒地流逝你宝贵的时间时,很难理清思绪,做出有效的决定。正如沃尔什解释的那样,脚本有助于将决策过程从游戏中令人分心的激烈情绪中移除:

“这给了我们一个惊人的战术进攻资产,没有其他球队在那个时候使用。无论天气好坏,脚本都是最有效的领导工具。在游戏开始之前,我就开始精心安排游戏的玩法。其他团队花了几年时间才完全实现我开发了很长时间的概念。”

Walsh 最终带领 49 人队赢得了 3 次超级碗冠军,并两次被提名为 NFL 蔻驰年度最佳。

模拟和平时期的失败

通过采用沃尔什的脚本策略,我们将决策从高风险或高压力的情况下转移到更加可控的环境中。我们减少了情绪影响我们判断或时间压力加重我们压力的情况发生的频率。作为工程师,我们甚至可以通过编程编写我们的响应,并测试它们以确保它们是健壮的。这在工程组织中尤其重要,在大范围内,任何可能失败的基础设施都将开始失败。

许多工程组织已经采用了一种在和平时期模拟故障和灾难的策略来为意外情况做准备:

  • 早在 2006 年我在谷歌工作的时候,谷歌每年都会举办为期数天的灾难恢复测试(DiRT)活动。在泥土演习中,该公司将模拟地震或飓风等灾害,并验证团队、通信和关键系统在整个数据中心或办公室断电或出现故障的情况下仍能继续运行。演习暴露了单点故障、不可靠的故障转移、过时的应急计划或其他意外错误,并允许团队在受控的环境下处理这些问题,而不会出现与实际紧急情况相关的恐慌和压力。

  • 网飞建立了一个名为混沌猴的系统,随机杀死自己基础设施中的服务。^(破坏自己的系统似乎不太直观,但通过配置 Chaos Monkey 在工作日的正常工作时间终止服务,工程师可以在他们实际在办公室时发现架构缺陷,而不是在半夜收到传呼。正如他们在博客中指出的,“对重大意外失败的最好防御就是经常失败。”)

  • 在 Dropbox,工程团队经常在额外的模拟负载下运行他们的系统。如果他们遇到了导致错误的系统限制,他们可以轻松地禁用模拟负载并解决问题。这就创造了一个比不得不与生产流量造成的同样的问题交火时压力要小得多的局面,而生产流量是他们无法关闭的。

在所有这些例子中,工程组织假设意外和不希望发生的事情会发生。他们采用的理念是,现在,在和平时期,比在他们控制之外的情况下,更好地为这些情况制定计划和脚本。

即使我们不从事基础设施建设,我们仍然会在职业生涯中遇到其他高风险、高压力的事件。例如,工作面试和薪资谈判往往也不频繁,压力大,但影响大。为这些情况编写脚本和做准备可能同样有价值。对我来说,我很高兴自动化恢复脚本和记录在案的响应计划让我在 Quora 的待命周压力小了很多。

有效一对一的简单秘诀

原文:http://www.effectiveengineer.com/blog/secret-to-effective-one-on-ones

"你想从我们的合作中得到什么?"

每当我开始新的一对一工作关系时,无论是与团队中的新人、新学员、新经理、新项目合作伙伴还是新教练客户,我都会不可避免地以这个问题的某个版本开始对话。

新事物总是会出现。我可能有直觉和假设,知道什么对其他人来说是重要的,但它们从来都不完全准确。

有时他们甚至会偏离很远。我记得有一次,在我职业生涯的早期,我被指派给一个新的经理,突然有其他人开始主持会议,推动我之前一直在做的项目。当时,我感到被束缚住了,有点怨恨,也接受了这种新的世界方式。

我花了几个月的时间,终于在一对一的谈话中提出了我想要的东西——更多的引导空间。令我惊讶的是,一点反抗都没有。他之所以介入,是因为他认为自己需要填补一个空缺。我错误地认为他想施加更多的控制。

我们含蓄的假设导致了机会的错失。

这就是为什么在任何合作关系中最重要的事情是明确设计关系。在工作中,当涉及到你与你的经理和任何向你汇报的人的关系时,这一点尤其重要——这些关系往往是你拥有的最长久的关系。

注意你的默认模式

我经常会注意到工程师对他们的经理应该做什么和不应该做什么做出假设。他们会根据这些假设行事,而不是围绕他们想从这段关系中得到什么进行明确的对话。

然而,如果没有明确的设计,很容易陷入默认的次优模式。

也许你的默认做法是与你的经理进行一对一的谈话,并提供状态更新——这些更新本可以通过电子邮件、Quip、Asana 或其他项目管理工具轻松地异步交流。什么可能是更有用的对话?

也许你的默认做法是,把你那一周面临的任何技术问题都拿出来,向你的经理寻求建议。这些问题可能很重要,也可能只是满足你的短期需求——你想从长期关系中得到什么?

也许你的默认是要求更多地了解团队的其他成员和公司的情况。你的好奇心得到了满足,但是在公司的这段时间,你得到你想要的了吗?

这些模式没什么不好——只要它们是你和你的经理有意识地选择并愿意花时间去做的。

当我们没有要求我们真正想要的东西,当我们假设这种默认是对方想要的时,问题就来了。人类可能有同理心,但他们不会读心术。如果你不要求你想要的,人们不会知道。

如果我们从来没有就什么是重要的进行过明确的对话,我们在构建软件方面会取得多大的成功?如果我们不这样构建软件,为什么我们要用不同的方法来构建我们的关系呢?

这里常见的陷阱是相信处于更有权威地位的人有责任引导或指导你度过这一切。是的,当我们的经理和领导也是伟大的教练时,这是很棒的。

但你最终要为自己的成长负责。你要对你能影响的工作和生活领域负责。你有能力塑造你的对话和设计你的关系。

设计强大联盟的有力问题。

为自己准备一份问题清单,帮助你明确设计最重要的一对一工作关系。

设计您的联盟

因此,作为一名领导力教练,我学到的最有效的人际交往技巧之一就是设计支持你人际关系的联盟。在联盟中,两个或两个以上的独立方走到一起,以明确的条款达成互利的协议。

在教练的背景下,我会问和我一起工作的工程领导这样的问题:对我们每个人来说,成功的教练关系是什么样的?如果我把他们作为客户,我能从他们那里得到什么?他们对我有什么期望?

以同样的方式对待你的工作关系——与你的经理、你的下属或你的队友——如同联盟,这意味着什么?

这意味着在一开始就明确你想要什么,并要求对方明确他们想要什么。

这意味着与你的经理讨论:你最想从工作中得到什么,你的经理如何才能最好地支持你实现这一目标?你认为你的下一个发展水平或领域是什么?你希望你的经理如何给你反馈和挑战你?你的经理对你有什么期望?

这意味着与你的队友讨论:你对对方有什么期望?你们每个人都认为对团队来说什么是可能的?你希望如何一起工作和交流,重要的是什么?

现在,你可能会想,“我做同样的一对一已经很久了。现在改变它们已经太晚了。”或者你可能会问自己,“什么时候进行这次谈话比较合适?”

好消息是,设计你的人际关系永远不会太早或太晚。正确的时间是在你下次一对一的时候。事实上,你应该定期重新设计你的联盟。最牢固的关系是不断发展的,因为我们想要的和需要的以及我们的环境总是在变化。

这是对你的挑战。选择一种你还没有明确设计联盟的关系。在下一次一对一的谈话中,你只需要说,“我想就我们都想从这段关系中得到什么进行一次明确的谈话。”明确你的期望和你想要的,然后询问他们的期望和他们想要的。

请在评论中分享你从自己的经历中学到的东西,或者给我发个短信。我很想听听。

设计强大联盟的有力问题。

为自己准备一份问题清单,帮助你明确设计最重要的一对一工作关系。

如果你不想管理,发展你的工程职业的秘密是什么

原文:http://www.effectiveengineer.com/blog/secret-to-growing-software-engineering-career

做一辈子软件工程师是个好的职业选择吗?还是必须过渡到管理层才能继续攀登工程阶梯?这是工程师们最近在 Quora 上想知道的,也是一个值得解决的重要问题,尤其是对那些不擅长管理人的人来说。

好消息是,继续做软件工程师,退出管理层是一个不错的职业选择。然而,如果你想绕过玻璃天花板,不要指望仅凭多年的技术经验就能提升你的职业生涯。作为一个粗略的模型,你的职业成功和成长与你创造的价值成正比。

技术能力+经验≠影响

在谷歌等公司拥有超过 10 年工作经验的工程师经常会想,为什么他们仍然只是职业阶梯上的高级软件工程师。早年看似唾手可得的晋升发生了什么?为什么有些同龄人升职比他们高?

工程师——尤其是那些选择退出管理层的人——在职业生涯中犯的最大错误之一是,将技术能力和经验等同于影响力的增加。他们坚信,如果他们继续好好工作,最终会得到提升的奖励。这种思维模式存在缺陷,原因有二。

首先,随着时间的推移,你编写代码和构建软件的技术能力会停滞不前。当你第一次开始时,你经常会犯技术性错误。每个小项目都是磨练编程技能的学习机会。随着时间的推移,你对编码和软件设计越来越精通,犯的错误也越来越少。你的早期晋升反映了你早期的技术学习。到了第 10 年,你仍然会学习——你可能还会学习新的编程框架和语言——但是你的进步和提高不会像第 1 年那么显著。

第二,体验不会直接转化为影响。如果从现在起十年或二十年后,你仍然在解决和今天一样规模和范围的问题,那么你没有增加你创造影响的能力。如果你没有创造更多的价值,为什么会有雇主比没有这方面经验的人付给你更多的钱呢?这种观察与行业或职业无关。

继续做你一直在做的事情可能会很简单、舒服,甚至有趣——如果你宁愿把精力花在其他地方,这可能是一个合理的生活方式决定——但是你不应该期望你的职业生涯会自行发展。重要的不是经验的年数,而是你创造了多少价值。为了不断发展你的事业,你必须不断寻找新的方法来增加你的影响力。

管理只是增加你影响力的一个杠杆点

进入管理层是获得成功职业生涯的一种方式,但不是唯一的方式。许多工程师成为经理是因为管理提供了一个明显的、定义明确的杠杆点来衡量你的影响。团队在成长过程中需要经理,多年的技术经验在培养管理技能时会是一笔有用的资产。作为一名经理,你会影响你的下属的工作,如果你是一名优秀的经理,你会增加团队中每个人创造的价值。如果这种额外的价值超过了你作为个人贡献者所能创造的价值,你的职业生涯将会一帆风顺。

然而,管理不是职业发展的唯一途径,也不是每个优秀的工程师都适合成为经理。只要你能找到其他的杠杆点来放大你的影响,你的事业就会继续成长。大多数大公司在那里技术发挥着强大的作用,如谷歌、脸书、亚马逊、微软等。,也将有一个明确的技术职业轨迹,以认识到除了管理之外还存在其他杠杆点。然而,爬上梯子成为一名职员或首席工程师,是许多工程师努力奋斗的地方。管理之外不太传统的道路需要更多的创造力,管理之外的成功工程师的故事也越来越少,以供我们效仿。

那么,在不成为经理的情况下发展职业生涯的秘诀是什么?

关键的观察是,虽然你的技术编程能力可能会停滞不前,但你的技术贡献的影响不会停滞不前。你有能力决定在哪里花费精力来最大化你的影响——写什么样的代码,构建什么样的软件,以及解决什么样的商业问题。正是这种能力将最有价值和最有效的工程师与其他人区分开来。

那么,作为一名软件工程师,你如何在不成为经理的情况下扩大自己的影响力呢?您识别并解决业务的核心问题,或者让您周围的人更有效地解决这些核心业务问题。正是在这种你的技术努力与商业价值的结合中,你的职业发展了。当你投入的时间直接转化为有意义和可衡量的结果,当你的努力直接推动增长和收入指标时,你的雇主就会受到激励,给你更多的资源和灵活性,以便你可以更快地取得更大的成果。

根据我所认识的软件工程师,以下是一些例子,说明在不进入管理层的情况下(也不参与创办初创公司,通常会进入管理层),你可以如何扩大自己的影响力:

  • 您构建工具和抽象,使您周围的工程团队的产出倍增。例如,Jeff Dean 通过他对协议缓冲区、MapReduce、BigTable、Spanner 和其他系统基础设施的贡献,将 Google 其他工程师的产出提高了一个数量级以上。这也难怪谷歌为什么要在本质上为他创造高级 Google Fellow 的工程级别。
  • 你积累了足够的专业知识来咨询其他工程团队的软件或实验设计,你的反馈非常有价值,可以节省几天或几周的工作,或者将关键项目从失败变成成功。
  • 你成为一个对成长中的公司至关重要的深度技术领域的专家。例如,你成为一名机器学习专家,然后在脸书从事新闻订阅排名、谷歌广告排名或 Airbnb 搜索排名的工作。你交付的项目直接转化为公司的增长和收入。
  • 也许通过与销售和业务团队合作,您发现了一个关键的业务机会,并且您成为公司创始团队的一员,开发出一种产品来满足这种需求。
  • 你制定了入职和指导计划来教授和培训其他工程师,并使他们成为团队中更有价值的成员。
  • 您在构建可靠的招聘流程中发挥着关键作用,并且您帮助招聘和完成工程招聘。
  • 您为建立贵公司的工程品牌做出了重大贡献。例如,如果多元化是你的工程品牌的重要组成部分,你可以在行业招聘中推进多元化。

这些只是你如何增加影响力的几个例子,但是可能的途径是无限的。请注意,在所有这些途径中,构建软件都不是最终目标——相反,它是帮助团队和企业成功的一种手段。

专注于创造最大价值的东西。你的职业成功和成长将随之而来。

自我修养

原文:http://www.effectiveengineer.com/blog/self-improvement/

我教授工程师和技术领导者有效创造有意义的影响所需的工具。

我是 Quip 的早期工程师,在 Quora、Google 和 Ooyala 都领导过团队。

自助出版

原文:http://www.effectiveengineer.com/blog/self-publishing/

我教授工程师和技术领导者有效创造有意义的影响所需的工具。

我是 Quip 的早期工程师,在 Quora、Google 和 Ooyala 都领导过团队。

通过你讲述的故事塑造你想要的文化

原文:http://www.effectiveengineer.com/blog/shape-culture-with-stories

我 15 岁的时候,母亲给我讲了一个她在共产主义中国的青少年生活的故事。政府官员冲进了她的房子,抢走了她家所有值钱的东西。他们以平等的名义掀翻家具,翻遍抽屉,但实际上,腐败官员打算只为自己保留任何贵重物品。他们不仅限制了她家庭的经济自由。

直到 20 世纪 70 年代中期文化大革命结束,每个城市家庭至少有一个十几岁的孩子被要求无限期地离开城市去农村工作。因此,政府还下令将我的母亲派遣到一个遥远的农村,从早到晚在田里劳作。这一命令还意味着她将被剥夺接受大学教育的机会。她拒绝了,她的家人不得不离开这个国家的共产主义统治,去了当时是英国领土的香港。我出生后,她再次搬到美国,以确保她的孩子不会受到和她一样的限制。

和许多移民故事一样,我母亲和我分享的故事塑造了我的价值观和我。即使是现在,15 年后,这个故事提醒我,我是多么幸运,能够接受大学教育,进入一个有大量就业机会的市场,自由选择我想做的事情,以及许多其他容易被视为理所当然的机会。

故事在我们的成长过程中起着很大的作用。许多故事成了我们的经验教训,影响了我们的个人价值观,塑造了我们成长为什么样的人。故事在团队和组织中扮演着类似的角色,塑造着我们共同的价值观,影响着文化的发展。

当新成员加入团队时,我们是讲述 Marc 构建的新奇系统的故事,还是讲述 Jack 修复困扰团队其他成员的最棘手的 bug 的故事?在每周的团队会议上,我们是花更多的时间来称赞新功能的开发,还是称赞某个花了一周时间来维护网站的人?我们讲述的战争故事和我们颂扬的英雄塑造了我们,塑造了我们共有的价值观。我们模仿周围人的行为,故事的选择会影响团队其他成员如何集中时间。

不久前,我采访了鲍比·约翰逊,他是脸书基础设施团队的前工程总监,现在是一家名为 Interana 的数据初创公司的首席执行官,为我的新书做准备。一次关于工程价值观的谈话引发了一些关于讲故事在建立正确文化中的重要性的思考。“很多文化来源于故事,”约翰逊解释道。“你写下你的价值观,但它们实际上没有任何意义,除非你有一些故事来说明它的背景。”

约翰逊信奉的价值观之一,也是他想灌输给脸书团队的价值观之一,就是奖励修理东西的人。许多工程师的自然趋势是致力于新的和创新的系统,但无名英雄往往是那些帮助现有系统变得更快或系统地降低系统错误率以使其更可靠的人。他们是那些从事不太光彩的工作,但对工作有帮助的人。

为了塑造这种文化,约翰逊和其他人花费时间和精力分享故事,奖励那些修理东西的人。他会在团队会议上庆祝重要的修正。他会在团队邮件中祝贺那些解决问题的人,分享强调影响的图表。他故事中的英雄不会是某个新系统的第一作者;他们会弄脏自己的手,拿出调试器来粉碎一个特别讨厌的 bug。

对于工程师来说,这种推销很难,但在脸书,讲故事有助于将工程激励与公司注重影响的价值观结合起来——这种价值观并不总是意味着从事下一个创新项目。另一位来自脸书的前工程总监、现任 reddit 首席执行官王义山(Yishan Wong)阐述了脸书的文化,“脸书文化中有一部分实际上反对‘我们只是在这里从事创新、突破性、追求荣耀的项目’[心态],这种心态是对当时感知的谷歌文化的一种反应。”

谷歌自己的故事一直强烈关注研究,这主要是因为拉里和谢尔盖的博士学位。两人还在斯坦福读研究生的时候就开发了 PageRank 并创办了公司。当我在 2004 年参加大学招聘会时,谷歌员工的故事通常围绕着 MapReduce 和谷歌文件系统等系统的开创性。这条信息带有“在谷歌工作,进一步研究前沿问题”的强烈语气。谷歌的出版率进一步强化了这种文化;仅在 2006 年,也就是我加入谷歌的那一年,该公司就发表了 100 多篇研究论文。

难怪脸书不得不在内部抵消这种强调。Wong 继续说道,“在脸书高调的项目会得到媒体和外界的尊重,但是‘干脏活’会让你得到同事和管理层的尊重。”那些感谢和赞美干脏活的人的故事激励了更多的人去效仿。

故事在说服中起着重要的作用,也许比我们想象的更有力量。在中,作者丹·希斯(Dan Heath)和奇普·希斯(Chip Heath)分享了奇普在斯坦福大学与他的学生进行的一项练习。鉴于美国犯罪模式的数据,学生们被要求发表一分钟的有说服力的演讲,要么支持要么反对非暴力犯罪是一个严重问题的论点。一些学生有很强的公开演讲能力,并且善于运用修辞。其他人依靠经过充分研究的统计数据来论证他们的观点。少数学生讲述故事和轶事来说明他们的观点。在快下课的时候,学生们被要求写下他们实际上从每个演讲者那里记住了什么。

令人惊奇的发现是学生们实际上能记住的东西。学生平均每次演讲使用 2.5 个统计数据,但是只有极小的 5%的学生记得任何被分享的统计数据。另一方面,10 个学生中只有 1 个会讲故事,但近三分之二的学生记得讲过的故事。

故事流传下来了。明智地选择它们。

分享有力的故事,改变你周围的文化

原文:http://www.effectiveengineer.com/blog/share-powerful-stories-to-shift-the-culture

几个月前,我度过了在 Quip 工作的三周年。这是我在任何公司工作时间最长的一次,我在这里的经历也与我工作过的其他初创公司有很大不同。

我们中的许多人要么已经处于领导角色,要么开始想知道我们通向领导的个人道路会是什么样子。领导力的一部分——无论你是高级工程师、技术主管、经理、董事还是其他人——是通过你选择讲述的故事来塑造你周围的文化。你强调和传递的故事成为形成核心价值观的知识。

因此,我分享了我在 Quip 工作时最喜欢的故事剪辑,因为我在这里的经历极大地改变了我对硅谷创业文化可能性的看法。我最初发布这些故事是为了回答 Quora 网站上的一个问题:“在 Quip 工作是什么感觉?”我希望在分享自己的故事时,你能从这些故事中找到灵感。

吃点零食,准备好故事时间。

想要一份工作?这是你的支持票

当我第一次申请这里的工作时,我不认识 Quip 的任何人——当时公司只有 14 个人。在向我的关系网寻求推荐之前,我想我应该给 jobs@quip.com 发一封电子邮件,看看会发生什么。一天之内,有人回复了!

当时的实习生 Josh 给我分配了 1837 号客户支持单。他把我介绍给工程主管凯文·吉布斯,我们约了时间见面。Josh 随后将我的支持票标记为事实上已关闭。剩下的就是历史了。

我收到一个有趣的自动请求,问“你如何评价你得到的支持?”很好,谢谢你!从那以后,我们的客户支持和招聘工作明显有了显著的增长。

首先投资于人

一年半前,我碰壁了。我对自己的工作没有动力。

我很好奇,想探索一件令我兴奋的事情——领导力培训。我职业生涯的大部分时间都在指导其他工程师——无论是在工作中还是工作之外——而指导似乎是一种自然的延伸。为什么不学学世界级的领导力教练是怎么做的?然而,更大的问题是,我能否将我作为领导力教练的发展融入到我在 Quip 的工作中。

我安排了一次与联合创始人凯文的一对一谈话。

在我们谈话期间,我的心怦怦直跳——我真的不知道会发生什么。

我重温了前一天晚上和妻子排练过的论点。我要求将 20%的时间投入到与教练相关的活动中——无论是发展我的教练技能,还是在 Quip 之外训练工程师。从长远来看,这项投资将为 Quip 创造更多价值。

但这也有短期成本。我们的初创公司当时有一个很小的团队,现在仍然如此。这意味着我在产品上花的时间会更少。

接下来发生的事让我大吃一惊。凯文毫不犹豫地支持这个提议。答案对他来说是显而易见的。“不”根本不可能。他只要求我以某种方式将一半的投资重新投入到团队中。

后来,当 Quip 的产品经理 Diana 表示也对领导力培训感兴趣时,该公司支持我们两人在教练培训机构接受了超过 100 个小时的培训。

在 Quip,一对一对我来说是一个强有力的转折点。我带着焦虑、不确定和没有动力的心情进入对话,然后我来了个 180 度的大转弯——我感到支持、兴奋,并重新受到鼓舞,觉得 Quip 是我个人和职业发展中一个心甘情愿的盟友。

这是我第一次真正意识到 Quip 以人为本的方法——坚信好的东西来自于以人为本的投资和优先考虑人而不是项目。

努力工作,但不要过度紧张

当我在这家 14 人公司面试一份工作时,我问团队中的工程师帕特里克·莱恩汉(Patrick Linehan)在 Quip 工作的压力有多大。我之前在 Quora 和 Ooyala 担任早期工程师的经历给我留下了这样一个印象:早期创业往往是紧张而有压力的。我一点也不想回到每周工作 60-80 小时的世界。

听到他说“一点压力都没有”,我很惊讶。我更加惊喜地发现这是真的。

在 Quip 工作的三年半时间里,我一只手就能数清工作时间之外被传呼的次数。除了偶尔出现的紧急客户问题之外,我们不希望工程师在工作时间之外工作,或者每周工作超过 40 小时。

营造可持续的工作环境

我在公司的第一年,在一次全体会议上,凯文承认一个工程项目落后于计划。他说:我们要么不得不削减一些功能,要么推迟最后期限。许多公司的惯例是加班或周末加班以赶上最后期限,但这种做法被明确排除在选项之外。

这种互动显示了团队和领导层的高度成熟和纪律性。我们都希望 Quip 取得巨大的成功,这意味着我们需要采取一种可持续的方法来进行长期的工作。

工作不是最重要的事情

在我加入的一年多一点的时间里,最初在那里的 14 个人中有 7 个人——包括两位创始人 Bret 和 Kevin——休了育儿假,所有人都休了至少一个月,大多数人休了几个月。

人们的第一反应往往是,“哇,这么多婴儿!”第二个反应往往是惊讶于我们的小创业公司有这样一个家庭友好的文化。我一直很感激大家为家庭事务抽出时间的支持。

还有一次,我在公司聊天室发了一条消息,说我生病了,不会来了。我收到了凯文一封体贴的短信,祝愿我早日康复,“请不要担心工作。”生活发生了,我们都需要照顾好自己。

Quip 2016 Innertubing Extravaganza

2016 内管盛会。由布丽娜·李提供。

仅用 13 名工程师支持 8 个不同的平台

那些熟悉我的写作的人知道我从数月的软件重写项目中分享的经验教训,即使是最善意的团队。例如,在 Ooyala,4 个月的重写项目变成了 9 个月的马拉松,每周工作 70-80 小时。

因此,我怀着忐忑不安的心情着手我们团队对 Quip web 客户端的重写,从服务器端的 Python 模板到客户端的 React 渲染。重写是新架构的一部分,以在 Mac 和 Windows 上提供本机离线 Quip 支持。我们做出了许多战略决策,极大地降低了风险,包括重写和增量部署我们的代码,以便我们可以在生产中支持 Python 和 React 代码的混合。

在我参与的如此复杂的项目中,迁移是最顺利的执行之一。因此,我们成功地将我们的产品运送到 8 个不同的平台上,最初的团队只有 13 名工程师,这证明了我们强大的技术领导力(特别是来自 Jon McAlister 和 Mihai Parparita)和我们出色的工程师团队。

我在 Quip 工作的这些年,让我对高效团队工作的意义有了新的认识,这超出了我在我的书《有效工程师中所写的内容。

在 Quip 的第一天,我感到非常兴奋,但当我第一天花了大部分时间在我的新笔记本电脑上正确设置开发环境时,我的一些兴奋被冲淡了。我们有一个“自动化”的安装脚本,但是由于我是第一个被雇佣的工程师,它的大部分已经过时了。修改那个脚本是我第一个不经意的任务。

从那以后,我们将开发环境转移到了 Docker,现在新员工只需不到一个小时就可以安装好笔记本电脑。Quip 工程师 Shrey Banga 已经写了关于我们的一些工具投资的文章,令人惊讶的是,在过去几年里,这种强大的长期关注已经让我们走了多远。

与你的团队一起使用 Quip,并获得一件免费 t 恤

有一次,我和 Quip 的产品经理 Nate Botwick 以及市场部的 Patrick Moran 就如何加快 Quip 的采用进行头脑风暴。人们喜欢妙语连珠,一旦他们花时间去尝试,但尝试新产品的摩擦可能会很大。

如果我们给那些和他们的团队一起尝试 Quip 的人送一件免费的 t 恤会怎么样?在几周内,我们建立了一个新的用户流,我们鼓励人们和他们的团队一起试用产品,以换取一件免费的 t 恤。这个实验被证明是一个有趣的,强大的,有成本效益的让人们迷上这个产品的方法。

这一经历也体现了 Quip 项目的跨职能性和协作性。我们的产品发布始终需要全公司的共同努力,当然,这一切都是在 Quip 产品内部进行的。

月度最佳员工

前阵子,办公室里出现了一个神秘的包裹。原来这是我们的一位产品经理 Nate Botwick 的手绘肖像,是我们有史以来第一位月度最佳员工的肖像。他活该!

Nate Botwick

内特·博特威克,我们本月的第一位员工。

事实证明,有些公司会根据你发给他们的数码照片手绘大幅肖像。有一段时间,我们继续这个笑话,在团队的许多成员中循环——用我们团队的肖像装饰我们的走廊——直到它停止扩展。

我们现在有一个名为“月度最佳员工”的会议室,我们的肖像仍然挂在那里的墙上。

始终投资于人

当我回想起我与 Kevin 的一对一谈话以及我们后来的谈话时,潜在的价值观一直是对个人成长的坚定承诺。

这种“以人为本”的理念是 Quip 与众不同的文化基础。

我觉得自己有能力创造性地塑造我所做的工作,这样它就能让我最感兴趣的事情和我最想成长的地方与能为组织创造价值的事情保持一致。我还注意到其他人也在进行他们自己的创造性探索,有时甚至是通过改变他们在公司的角色。

这种方法是有道理的。当人们在学习和成长时,他们会更有动力。当他们更有动力时,他们会把新发现的能量带回到工作中,通常会找到创造性的新方法来促进他们自己的学习,并为公司创造更多价值。

也很聪明。在一个工程和产品招聘困难的世界里,你为什么不投资于人们的成长呢?为什么你不把人看得比你可能从一个项目中获得的短期收益更重要呢?

Kevin 向我和 Quip 的其他人提出的一个巨大挑战是,我们如何利用我们所学到的知识来帮助团队的其他成员加速成长。对个人成长的重视体现在我们正式和非正式支持团队成员的所有方式中。

我在 Brina Lee 发起的反馈会议计划中看到了对个人成长的承诺,在该计划中,我们每隔几周随机匹配 2-3 名来自工程、产品和设计部门的人员,以交换面对面的反馈。我们进行了 30-60 分钟的坦诚对话,讨论我们希望从对方身上看到更多的东西,我们可能对对方有什么样的假设,以及我们认为什么是可能的。

我在工程圈里看到了这一点,我建立了一个空间,让工程师们讨论艰难但重要的话题。我们如何明确地设计我们的工作关系?我们何时以及如何寻求帮助?我们如何管理我们的时间、精力和动机?这些话题每天都在影响着我们,但大多数人都没有讨论的渠道。

我在 Jon McAlister 设立的技术领导导师计划中看到了这一点,该计划旨在确保我们的领导者在技术上和情感上都得到良好的支持,以履行他们的职责。

我从 Diana Kimball 和我建立的教练和指导关系中看到了这一点,他们利用我们的领导力教练培训来培养团队成员。在即将举行的有效倾听研讨会上,我们将共同领导团队。

我从我们对指导和入职计划的大力投资中看到了这一点,我们每隔几周就建立和审查这些计划,以确保新员工为长期成功做好准备。

我在我们建立的结对编程轮盘赌中看到了这一点,在轮盘赌中,我们随机将对某项任务感兴趣的工程师配对。和搭档一起工作更有趣。

我在所有的工作组中都看到了这一点,人们有机地组成工作组来缩小我们看到的差距,并创建更多的支持项目。

我看到这些对个人成长的投资有了回报。一年半以来,我们的工程、产品和设计团队一直保持零减员,这证明了我们在这里创造的文化。当我们首先投资于人时,新的可能性就会为我们所能做的事情打开。

Quip and 2017 Diversity Scholarship Winners

Quip 和 2017 年多样性奖学金获得者。由布丽娜·李提供。

故事时间到此结束。到目前为止,这些故事定义并塑造了我在 Quip 的经历。他们还提高了我现在所知道的科技行业文化的可能性。你将讲述哪些故事来定义和塑造你自己的工作经历?

感谢戴安娜·柏林和陈晓阅读本文的草稿。

*

有效的工程领导者研讨会

打破你自己的限制信念,掌控你自己的故事,培养你内心真正的领袖。*

软件评估

原文:http://www.effectiveengineer.com/blog/software-estimation/

我教授工程师和技术领导者有效创造有意义的影响所需的工具。

我是 Quip 的早期工程师,在 Quora、Google 和 Ooyala 都领导过团队。

我的主题演讲:成为一名有效的工程师意味着什么

原文:http://www.effectiveengineer.com/blog/startcon-keynote-what-effective-engineer-really-means

本月早些时候,我在悉尼的 start con 上做了主题演讲,大约有 1000 人在技术赛道上。这是我做过的最大也是最私人的演讲。

在演讲中,我分享了一些故事和教训——有些是我以前从未公开过的,甚至对朋友和同事也是如此——关于如何成为一名高效的工程师。会议组织者慷慨地提供了我演讲的视频,今天我很高兴与你们分享。

为演讲做准备并不容易。准备阶段包括长时间的故事构思和练习;在 Quip 与员工进行多次演练;一天的早晨,我会做冥想来平静我的神经;和不间断的咳嗽滴剂,以缓解演讲当天早上出现的令人头疼的喉咙痛。

谢天谢地,所有的工作都得到了回报。事后受到的积极接待让我无比自豪。

“Edmond Lau 今天在 StartCon 2017 上发表了精彩的演讲。最佳收获是平衡运营效率与团队沟通的重要性。”
—亨利·乔治,首席技术官

“回顾 StartCon.com,我必须说刘锦洪的谈话确实与我有关!最近我投入了大量的时间,在某些情况下,努力并不总是与结果成正比。Edmond 的利用高级行动的框架真的很有帮助!我立刻就明白了。绝对是我见过的最好的演讲之一。谢谢大家!”
—首席开发人员马修·伯恩斯

如果你关注我的工作,这个演讲的一部分可能看起来很熟悉。

在 25 分钟主题演讲的第一部分,你将了解有效的工程师用来决定如何分配时间的关键框架——这个框架花了我每周工作 70-80 小时才弄清楚。您将深入了解 Instagram、脸书、Twitter、Stripe、Quora 等网站的工程领导者的故事和经验,了解他们学到的最有价值的经验以及他们为获得最高回报而进行的投资。

在演讲的第二部分,你会听到我第一次分享的新故事和教训——来自我过去一年指导 50 多人的经历,从技术主管和经理到总监和首席技术官。你将带着我已经内化的最有价值和来之不易的教训离开,关于如何成为一个伟大的工程领导者和建立有效的工程团队。

尽情享受吧!

准备好让您的工程领导力更上一层楼了吗?

我想与你们分享我作为一名工程领导力教练的旅程中学到的一切。

如果你想加速自己作为工程领导者的成长,将你自己添加到我的私人列表中,在那里我会提前宣布未来关于工程领导力的研讨会——既有面对面的也有远程的。最后一张不到一周就卖光了。

如果你想提高你自己(或你的团队)的工程效率,今天就买一本 高效工程师 。这是脸书、Twitter、Google、Dropbox、box 等公司的工程副总裁、经理和高级工程师推荐的一本手册。

让您的工程领导力更上一层楼

学习如何进行强有力的对话,在瞬间而不是在几年内建立信任。

创业公司

原文:http://www.effectiveengineer.com/blog/startups/

我教授工程师和技术领导者有效创造有意义的影响所需的工具。

我是 Quip 的早期工程师,在 Quora、Google 和 Ooyala 都领导过团队。

如何在疫情期间保持快乐、健康和高效

原文:http://www.effectiveengineer.com/blog/stay-happy-healthy-productive-during-pandemic

我感到紧张压抑在我的胸口,我的整个身体紧紧抓住。我渴望结束这一切,离开全食超市,但我一直告诉自己,我只需要去买一周所需的食品杂货。我能感觉到空气中集体的紧张。

写着社交距离并至少相距 6 英尺的标志,人们小心翼翼地走过过道时蒙着脸的口罩,员工戴着避免细菌的手套,通道上的散装容器完全脱去了所有东西——它们都是疫情在世界各地传播时留下的恐惧、担忧和恐慌的物理表现。

45 分钟后,当我走回汽车时,我需要在停车场对着我的手尖叫几次,只是为了摆脱和释放我体内被困的能量。甚至在我开车回家的时候,我只想蜷缩成一团哭一场。

全球定位系统显示开车需要 55 分钟,我想像往常一样开车回家。但是在我朋友的鼓励下,我让自己离开了下一个出口,花了几分钟让眼泪流出来。

之后,我感到更加快乐和平静——就好像我已经放下了所有的努力去控制一切——我感到更轻松,也更有能力去迎接接下来的一天。


我曾经相信我需要战胜一切。我总是需要保持坚强,团结一致。让我的情绪表露出来,不管是愤怒还是悲伤,都是不可接受的。

从小到大,我妈妈经历了很多事情。即使当她生病发烧的时候,她仍然会被期望起来在厨房为住在我家的八个人做晚餐。没有时间和空间去感受情感,也没有她想要的任何自我照顾。

作为一个移民家庭中三个孩子中最大的一个,我也知道我不想成为那个给父母增加更多压力和焦虑的人,他们已经在我们旧金山唐人街的家庭商店里每周工作六天,每天工作十个小时。所以我也挺过来了——没有提起那些感觉可能成为他们负担的情绪、欲望和需求。

当我们全力以赴时,我们不会承认自己的情感和需求。这实际上消耗了我们的能量,因为我们的身体和大脑消耗能量试图抑制和保留现有的东西,能量减少会损害我们的长期效率、健康和幸福。

随着隔离、就地安置和在家工作的命令在世界各地发生,空气中的紧张程度已经高得多。情绪高涨——更容易感到愤怒、烦恼、沮丧、悲伤、沮丧等等。以前不会让我们生气的事情现在可能会引发情感的雪崩——就像那次 45 分钟的全食超市购物之旅释放了我的情感浪潮。

试图控制住一切,靠自己的力量度过难关是很有诱惑力的。

几年前,当我在一个书友会上为有效工程师客串时,有人问我如何处理最高杠杆活动不是我感到兴奋的事情的情况。我当时也没有很好的答案。我只是分享了有时候你必须平衡你喜欢的事情和你不喜欢的事情,为了效率,你必须克服你不喜欢的事情。

我想这种情况可能会引起我们许多人的共鸣——当空气中充满不确定性时,可能很难集中注意力并对工作感到兴奋。

从那以后,我花了大量时间研究情绪——情绪背后的科学,情绪对我们行为的心理影响,处理情绪的艺术,表达情绪的语言,以及释放情绪的工具。

这是我现在知道的。

未表达的情绪是困在身体里的能量。我们抓住它们越久,它们以无意识的方式影响我们行为的时间就越长——经常伤害我们的健康、生产力和幸福。最有效的途径来自健康地表达和释放它们,这样我们就可以有意识地选择如何展现自己。

因为正如我过去认为的那样,有效性不仅仅是做正确的事情,它还包括让我们自己处于正确的情绪状态,这样我们的身体就能有效地做我们的思想和内心想要他们做的事情。

没有比现在更重要的时间来学习这一课了。

我们中的一些人可能会被迫在家工作,努力保持快乐、健康和高效——也许会感到孤立或孤独,或者不习惯与世界如此隔绝。

我们中的一些人可能会担心或担心朋友和家人的健康,特别是老年成员或那些在病毒更严重的国家的成员。

我们中的一些人可能通常是积极乐观的,当我们周围的人可能感到紧张、恐惧和恐慌时,我们会觉得做自己很不舒服。

很容易不花时间给自己,相信你需要克服可能出现的情绪。

而且,在这种时候,重要的是要记住,你不需要总是强忍着,优先照顾好自己不仅没问题,而且很重要。确保你仍然吃得健康。每天呼吸新鲜空气。做运动来保护你的身体。打电话给别人,获得你需要的人脉。冥想来理清你的思绪。花点时间来处理正在发生的事情。

在过去的一周里,我清楚地意识到,我想花更多的创造性精力,想出更多的方法来帮助支持我所在社区的人们。

本周四,太平洋标准时间 3 月 26 日上午 9 点,我将举行我的第一次脸书现场活动,重点是如何在疫情期间保持快乐、健康和高效。

我将分享我在过去几年中学到的一些影响最大、改变生活的个人实践,这些实践帮助我保持高水平的表现,同时保持快乐、健康和富有成效,即使在疫情时期也是如此。我还会回答你可能有的关于如何度过这段时间的任何实时问题。

强大的部落认同如何将你的团队团结在一起

原文:http://www.effectiveengineer.com/blog/strong-tribal-identity

有一天,我和一个朋友谈论如何让优秀的人对留在团队中感到兴奋。这个问题不仅仅是经理们的重要问题。即使作为个人贡献者,我们大多数人也希望创造一种让我们每天都兴奋地来工作的环境。

许多团队都知道要专注于招聘优秀的人才,他们花费大量的时间和资源寻找新的候选人,在招聘会上招聘,让有前途的候选人参加面试,面试潜在的雇员,听取汇报以做出招聘决定。雇佣优秀的人才很难,但这也是一个很高的杠杆。

然而,更重要的是让优秀的人留在团队中,减少人力资源部所说的“令人遗憾的流失”令人遗憾的自然减员指的是失去那些组织想要留住的员工。考虑到在招聘和培训员工上花费的精力,让优秀的员工留在团队中的价值很容易超过招聘新人担任相同职位的价值。一个新人可能需要几个月的时间才能接近一个有经验的团队成员的生产力水平,甚至需要更多的时间来建立同样水平的制度化知识,以有效地完成工作。此外,失去一名关键的团队成员可能会对团队其他成员的士气造成巨大打击。

那么,我们如何才能让优秀的人留在团队中呢?有人选择离开的原因有很多。薪酬、理念差异、缺乏成长机会、管理不善只是几个因素。但有时被忽视的一个关键因素是团队中社会关系的强度。最强的团队不仅仅是由彼此都可以忍受、容易共事的人组成的。他们由对彼此的幸福感兴趣的人组成,他们真正享受彼此的陪伴,他们分享共同的使命和一套核心价值观。他们认为自己是这个部落的一员。

部落成员的力量

戴夫·洛根(Dave Logan)和他的合著者在他们的书《部落领导》(Tribal Leadership)中解释了他们如何在 10 年间研究了 25 个组织的 24,000 人,以了解个人作为不同群体的一部分是如何表现的。他们将每个群体划分为部落发展的 5 个阶段中的 1 个,从第 1 阶段的暴力团伙到第 5 阶段的争取全球影响力的贵族群体。

大多数公司和组织都处于第三阶段。在第三阶段,聪明和成功的人关注自己,并以“我很棒”的态度经营。他们想方设法比同事做得更好,比他们“更胜一筹”。他们要求所有的电子邮件都抄送给他们,这样他们就能了解情况,他们囤积信息,因为他们相信知识就是力量。他们关注时间管理和效率,因为他们主要依靠自己来完成事情。他们管理而不是领导。当人们找到更好的机会时,他们会离开第三阶段的部落。

过渡到第四阶段会将“我很棒”的心态转变为“我们很棒”一套共享的核心价值观将部落团结起来,并使成员朝着共同的使命前进。成功的个人关注的不是如何获得成功,而是群体目标。来自同事的能量让他们每天都兴奋地来上班。每个人都有动力不断改进和发展工作场所,使之朝着他们长期想要工作的方向发展。建立一个第四阶段的部落需要努力,但是一旦人们觉得他们属于一个团队,他们就很难离开。

研究支持了强大的部落成员和社会联系在创造人们愿意留下的文化中的重要性。盖洛普机构在对 400 个组织的 100 多万名员工进行的 25 年调查中发现,优秀工作场所的两个最强有力的指标是,员工可以说,“我在工作中有一个最好的朋友”和“工作中有人似乎关心我这个人。”这些社会指标与其他衡量工作场所满意度的传统指标一样重要,如公司使命、明确的工作期望、个人认可和职业发展。

与同事成为朋友会发挥如此大的作用,这似乎令人惊讶,但不想让你的朋友和队友失望的愿望是一个强大的动力。七年来我为工作熬通宵的一次发生在 Quora 的早期,当时亚马逊大范围的宕机导致产品宕机超过一天。^(团队花了一整夜修复数据的不一致性。熬夜处理损害控制不会是我度过愉快夜晚的第一选择,但是让我的朋友和同事失望是不合理的。)

当我回想起我职业生涯中从未想过离开团队的时候,他们几乎总是围绕着一种强烈的团队认同感。在这些时候,队友的能量和兴奋会传递给团队的其他成员,积极的反馈循环使我们每个人都更加兴奋地为公司的更大使命而工作,而不是单独工作。社会关系可以成为一种强大的凝聚力。

部落适应面试

从这些观察中得出的结论是,建立一个强大的部落身份来将人们团结在一起,是将优秀的人留在你的团队中的一个强有力的方法。

除其他外,这意味着:

  • 为你的团队定义核心价值,并使用这些价值来推动决策。
  • 为人们创造合作的机会。当每个人都在自己的小圈子里工作时,加强社会联系就更难了。
  • 确保新人融入团队,以便随着团队的成长,价值观得到维护甚至加强。

为你的团队定义核心价值观并确保新人融入团队非常重要,这样价值观才能随着团队的成长得到维护甚至加强。大多数团队将这种品质称为“文化适应”,但是部落适应可能是一个更恰当的名称。不幸的是,众所周知,在面试中很难衡量部落契合度。

技术技能通常是可以客观衡量的。一个算法解决方案要么满足设计需求,要么不满足;许多编程挑战甚至可以自动评分。但是,你如何衡量一个人是否是一个强大的部落适应者,你又如何权衡技术能力呢?团队是否就什么价值观是重要的达成一致?这些问题很难回答,但同样重要。

一些团队试图在面试中通过围绕价值观的问题来明确衡量部落适合度。例如,Airbnb 用 2-3 次工程面试来评估核心价值。其他团队只是检查以确保候选人能与团队的其他成员融洽相处。例如,支付初创公司 Stripe 使用他们所谓的周日测试筛选面试候选人:“如果这个人周日独自一人在办公室,你会不会更有可能进来只是和他一起出去玩?”Google App Engine 和 Google Suggest 的创始人、Quip 的联合创始人凯文·吉布斯(Kevin Gibbs)在一篇关于如何让优秀人才留在团队中的博文中讨论了一个类似的概念,他称之为“家庭的感觉”。吉布斯写道:“感觉像一个家庭意味着你与队友之间有一种真实的、情感上的联系。”“[它]意味着有你愿意与之共度一个下午的同事,即使你没有任何工作要做。”

当一个朋友创办一家新公司时,他和他的联合创始人做的第一件事就是制定一套共同的核心价值观,他们会用这些价值观来做决策。他发现这种做法有助于让每个人都朝着公司的长期目标前进。团队的身份可能会随着它的成长而演变,但是在早期定义它可以帮助塑造它的轨迹。

当你找到合适的部落时,围绕共同核心价值观的强大文化认同可以带来诸多好处,包括:

  • 将团队中的人团结在一起。
  • 吸引与部落有相似核心价值观的新人。
  • 为有效决策提供共享框架。

Palantir 的联合创始人斯蒂芬·科恩(Stephen Cohen)在斯坦福大学的一次客座演讲中,将文化描述为“选择和引导人们精力向正确方向发展的超级结构。”这凸显了良好文化提供的力量。

也许最鼓舞人心的关于强大部落力量的故事来自谢家华的书,。捷步达康的首席执行官谢长廷在 10 年的时间里将这家网上鞋店从无利可图发展到收入超过 10 亿美元,直到 2009 年亚马逊以 12 亿美元收购了该公司。2003 年底,这家最初总部位于旧金山的公司很难招到优秀人才。湾区的大多数人对在呼叫中心工作并不感兴趣。因为 Zappos 的品牌以客户服务为中心,他们既不想将呼叫中心外包给印度或菲律宾,也不想将客户服务外包给卫星办公室。经过深思熟虑,谢长廷在一次公司会议上宣布,公司总部将迁至拉斯维加斯。

最神奇的部分?部落认同感如此强烈,以至于 90 名员工中有 70 人决定离开自己的生活,随公司一起搬迁。很难想象今天有多少公司能够做到这一点。但是想象一下你的部落会有多强大。

成功框架

原文:http://www.effectiveengineer.com/blog/success-frameworks/

我教授工程师和技术领导者有效创造有意义的影响所需的工具。

我是 Quip 的早期工程师,在 Quora、Google 和 Ooyala 都领导过团队。

成功心态

原文:http://www.effectiveengineer.com/blog/success-mindsets/

我教授工程师和技术领导者有效创造有意义的影响所需的工具。

我是 Quip 的早期工程师,在 Quora、Google 和 Ooyala 都领导过团队。

获得所有权是得到你想要的最有效的方法

原文:http://www.effectiveengineer.com/blog/take-ownership-of-your-goals

1967 年,美国心理学家马丁·塞利格曼发现,我们对控制的感知极大地塑造了我们的选择和行为。

在一项经常被引用的研究中,他对两组狗进行了电击。在第一组中,狗可以按下控制杆来结束电击。在第二种情况下,杠杆不起作用;电击持续的时间似乎是随机的,这组狗无法逃脱电击。

然后,塞利格曼将两组狗放在一个分隔的盒子里,在那里,它们所要做的就是从盒子的一边跳到另一边,以躲避电击。第一组的人很快学会了跨越障碍。第二组的人放弃了,躺下了——他们之前已经知道他们无法改变现状。

这种“习得性无助”——一种习得的信念,即你不能做任何事情来影响负面事件——随后也在人类研究中得到证实。

因此,我们如何向自己解释负面事件对我们自己的行为起着巨大的作用。

当我们认为工作和生活中的负面结果是由我们无法控制的外部因素造成的,我们会感到无助。我们看不到可能只是一步之遥的解决方案。相反,当我们掌控了我们能够影响的环境因素时,我们就赋予了自己改变的力量。

我们可以利用这个想法来更有效地得到我们想要的东西。

掌控你的问题

当事情出错时,我们有两个选择。

我们可以找一些环境的解释或者外部的替罪羊来指责。该项目未能按时交付,因为它比预期的更复杂,因为产品经理对需求含糊其辞,或者因为我们依赖的后端团队没有按时交付他们的工作。

这是容易的路线。对于许多人来说,这条路径是我们的默认脚本。然而,最终,责备会浪费我们的精力,分散我们的注意力。它可能会让我们在短期内感觉更好,但就像习得性无助一样,它让我们无法控制结果。

有什么选择?我们可以选择承担我们对问题的责任。我们可以为没有足够快地消除项目风险、没有在任何给定的时间积极地促成最大的启动障碍、或者没有尽早地向关键涉众清楚地传达任何变更的假设而承担责任。

这条路更难走。最初,这种所有权心态甚至会让人觉得不公平。为什么我要对我这部分的问题负责,尤其是如果其他人没有对他们的问题负责的话?

然而,现实是,我们既不能控制外部因素,也不能控制他人的行为。我们只控制自己的行为。因此,沉湎于我们无法改变的事情最终会变得徒劳无功。专注于我们能够改变的是产生有意义结果的最有效的方法。

完全接受这一理念导致了前美国海豹突击队军官乔科·威林克(Jocko Willink)所说的“极端所有权”,他曾领导伊拉克战争中最受嘉奖的特种作战部队。在他的书 极端所有权 中,现在是领导力教练的 Willink 解释说,在一项任务中,领导者最终要对团队的所有成功和失败负责。不管糟糕的训练、不充分的装备、不公平的敌人战术或沟通不畅是否在任务失败中起了作用,对于任何出错的事情,除了他自己没有人可以责怪。

或许与直觉相反,通过消除自我意识并接受任务失败的全部责任,Willink 实际上增加了他的团队和老板对他的尊重。他的团队相信 Willink 是一个会考虑他们利益的领导者,永远不会不公平地指责他人,他们学会了为自己的错误承担责任。他的指挥官明白,尽管威灵克犯了错误,但他是一个将团队任务置于个人议程之上的指挥官。

当出现问题时,承担责任通常是我们能够采取的最有效的解释,以最好地实现我们的目标。任何其他减少我们责任的解释也减少了我们感知的控制水平。

将所有权思维付诸实践

那么,如何将所有权原则付诸实践呢?从承认你自己对所犯错误的贡献开始,然后问你自己,“我怎么可能…?”

当你在另一个团队受阻时,你会感到沮丧,责怪他们没有按时完成你需要的工作。或者,你可以想出如何有效地帮助他们,让他们能够帮助你实现你的目标。

问问你自己:

  • 我怎样才能更清楚地表达为什么我关心的任务很重要,为什么在特定时间内完成它很重要?
  • 我如何提供额外的信息和工具来帮助其他团队更容易地在我需要的方面取得进展?
  • 如果他们有更重要、更紧急的事情要做,我该如何帮助他们更快地完成其他工作,以便他们能更快地帮助我?

如果你的经理对你进行微观管理,让你在审批上慢了下来,你可以抱怨这种经常性的疏忽。或者,你可以主动沟通,向上推送信息,这样你就开始建立她对你工作的信任。

问问你自己:

  • 我是否明确地与我的经理讨论过她最关心我工作的哪些方面?
  • 我如何通过更定期地分享进展更新来增加透明度,以便她能够解决最紧迫的问题?
  • 我该如何先发制人地回答她可能提出的问题,以便我有更多的工作空间?

当您的团队未能遵循最佳实践,并最终耗费每个人的时间、精力或金钱时,您可能会因为他们犯了一个错误而感到沮丧。或者,你可以为没有足够清楚地传达建议背后的原因而承担责任。

问问你自己:

  • 我怎样才能使团队的首要任务更加清晰,从而让团队成员把精力花在最重要的方面?
  • 我怎样才能更清楚地解释为什么要有某些程序和实践?
  • 我如何引入系统来激励我想要的行为?

当然,在任何情况下,你可能会在权衡成本和收益后决定,不值得花费精力和精力去处理一个问题。也许你觉得面对那个讨厌的同事不值得为此付出压力。或者你宁愿做有趣的工程任务,而不是更快地完成项目。没关系,只要你接受你明确地做出了选择。你对负面后果负责,并愿意承担责任。

抱怨是可以的——有时我们都需要发泄,或者只是需要有人倾听。但是到了最后,你打算怎么办呢?当你开始关注你能做什么不同,而不是别人能做什么不同,你就赋予了自己改变的力量。

所以问问你自己,“在我的影响范围内,我该如何做不同的事情来改变结果?”

团队建设

原文:http://www.effectiveengineer.com/blog/team-building/

我教授工程师和技术领导者有效创造有意义的影响所需的工具。

我是 Quip 的早期工程师,在 Quora、Google 和 Ooyala 都领导过团队。

协力

原文:http://www.effectiveengineer.com/blog/teamwork/

我教授工程师和技术领导者有效创造有意义的影响所需的工具。

我是 Quip 的早期工程师,在 Quora、Google 和 Ooyala 都领导过团队。

技术领导

原文:http://www.effectiveengineer.com/blog/tech-lead/

我教授工程师和技术领导者有效创造有意义的影响所需的工具。

我是 Quip 的早期工程师,在 Quora、Google 和 Ooyala 都领导过团队。

用更少的时间做更多的事情——省时工具的复合能力

原文:http://www.effectiveengineer.com/blog/the-compounding-power-of-time-saving-tools

1869 年 5 月 10 日,利兰·斯坦福(斯坦福大学的创始人)用一个仪式性的金钉完成了美国第一条横贯大陆的铁路,将西部的中央太平洋铁路和东部的联合太平洋铁路连接在一起。每一次敲击都被电报员以实时点击的方式传送到全国各地,这可能是世界上第一次大众媒体事件。当最后一声钟声敲响时,电报员用一条简单的信息拉开了全国庆祝活动的序幕:“结束”。

期待已久的铁路彻底改变了美国的旅游景观。在它建成之前,旅行者只有两种选择,从一个海岸到另一个海岸,而且都需要四个多月的时间。^(随着铁路的竣工,从旧金山到纽约的旅行时间缩短到仅仅一周。)

第一条横贯大陆的铁路不仅为从海岸到海岸的旅行者节省了四个月的旅行时间,而且还开启了全新的旅行思维方式。曾经是横跨美国的单程旅行——因为很少有人能负担得起一生中不止一次四个月旅行的时间、成本和风险——现在变成了乘客可以不止一次乘坐的更便宜、更快捷的旅行。美国人有可能拜访全国各地的朋友和家人,农民和商人有可能扩大他们的业务并向国内市场销售,更多的定居者有可能向西部迁移,因为可以运输更多的物资。

类似的生活方式转变在 20 世纪 50 年代再次出现,当时客运航空公司的出现将跨国旅行缩短到了 10 小时以下,再次彻底改变了我们对旅行的看法。^(更快的交通不仅节省了数周的旅行时间;它也为新的旅行理由打开了大门。由于知道家庭成员一年可以多次飞回,家庭变得更加分散。周末,乘喷气式飞机的人会飞到全国各地或其他大洲参加聚会和聚会,并在接下来的一周返回。企业开始在全国范围内发展更多的关系,并派出代表去会见他们的客户。)

这两种节省时间的技术值得注意的是,它们的采用不仅仅是从人们已经打算进行的旅行中节省了时间。考虑到旅行变得更加容易和快捷,人们开始进行的所有新的旅行也节省了时间。

在工程组织中,基础设施团队(有时是产品团队)花费资源来构建更好的工具,从而节省工程师的时间。当对这些项目进行成本效益分析并确定它们是否值得努力时,有时会有一种误解,认为工具的价值纯粹在于它从现有活动中节省了多少时间。理由是这样的:如果能把你一天做三次的事情的时间从 20 分钟减少到 10 分钟,那么你每天就能节省半个小时。

虽然这似乎是一个合理的估计,但该分析忽略了两个方面:

  1. 当一个工具变得更快时,你最终会在现有的工作流中更频繁地使用它。

  2. 更快的工具支持新的工作流,有时是意想不到的工作流,这在以前是不可能的。

这两种效果使得这些工具更加节省时间。我们可以在几个不同的领域看到这种情况:

  • **编译时代。**当我 2006 年刚开始在谷歌工作时,为谷歌网络服务器编译 C++代码可能需要 20 分钟以上,即使是分布式编译。^(当代码编译需要那么长时间时,你会有意识地不经常编译,可能一天也不会超过几次。您将较大的代码块成批放在一起供编译器检查,这样您就可以在每个开发周期中修复更多的错误。自 2006 年以来,谷歌在减少大型程序的编译时间方面取得了重大进展,包括一些将编译阶段缩短了 3-5 倍的开源软件。)

    当编译时间从 20 分钟减少到 2 分钟时,每次编译节省的时间远远不止 18 分钟。您还可以花更少的时间来直观地检查代码中的错误,并更多地依赖编译器来完成这项工作。更快的编译时间促进了围绕迭代开发的新工作流,因为从概念上讲,迭代地推理、编写和测试更小的代码块更简单。当编译时间足够快时,增量编译^(,其中保存文件通知后台任务自动开始重新编译代码,让您在编辑文件时看到编译器警告和错误,并使编程比以前更具交互性。)

  • **搜索速度。**谷歌报告称,搜索结果中 500 毫秒的额外延迟减少了 20%的搜索次数。 ((雅虎和亚马逊同样发现额外的延迟耗费了他们的流量和销售额。 ((这些宏观实验证实,当搜索越快时,人们搜索得越多。相反,当搜索速度较慢时,比如当你试图在手机信号弱的地区用智能手机搜索时,你会更加犹豫是否要查找一些信息。))))

    更快的搜索不仅节省了您的时间,而且还为您引入了与搜索引擎交互的新方式,从而增加了节省时间的好处。例如,Google Instant 为用户每次搜索节省了 2-5 秒,也改变了用户的搜索模式,正如 Google 解释的那样:

    “最明显的变化是,您可以比以前更快地找到正确的内容,因为您不必键入完整的搜索词……另一个变化是,在您键入时看到结果可以通过提供即时反馈来帮助您制定更好的搜索词。您现在可以随时调整您的搜索。”

  • 部署速度。Quora 是我工作过的第一个使用连续部署的地方,在那里,通过一组自动化测试的每一个代码提交都会立即投入生产。我在谷歌工作的团队每周发布代码,采用多日推送流程,在 Ooyala ,我们一周最多发布几次代码,每次发布的测试周期大约为一天。虽然最初有些伤脑筋,但持续部署提供了另一个例子,说明该工具节省的时间如何超过部署期间节省的时间(尽管大约 10 分钟的推送周期比我以前公司的推送周期快几个数量级)。

    持续部署彻底改变了工程工作流程。它允许您逐步调整代码以验证不同的理论(例如,通过更改生产中最有可能导致性能瓶颈或 bug 的代码块,然后立即检查数据),而不是预先计划一周部署的各种可能性。这增加了您处理数据迁移的可能性,这些数据迁移必须通过多次推送才能安全进行,因为它们不一定需要数周的努力^(。这也激励你修复更多的错误,因为修复可以在几分钟内投入生产并得到验证,而不是几天。因此,有时 Quora 的小团队可能会部署 40 到 50 次代码。)

保护您最宝贵的资源——时间

在指导年轻的软件工程师时,我经常建议他们花时间学习有助于提高迭代速度的技能和工具。在我们匆忙完成工作的过程中,节省时间和改善工作流程的长期投资有时会被降低优先级,因为它们最初会降低我们的工作效率。然而,这些投资通常会获得数倍的回报。如果这些工具是其他工程师可以使用的,比如更快的编译器和持续部署,它们的好处甚至可以随着团队的规模成倍增长。

时间是你最有限也是最关键的资源,所以了解能节省你时间的工具和投资是值得的。为了帮助启发一些想法,这里有几个工具的例子,一旦你学会了它们,它们就可以节省更多的时间:

  • 自动化。我使用的一条经验法则是,一旦我手动完成一项任务三次或更多次,就该开始考虑是否值得将其自动化。

  • 文本编辑宏。例如,在 Emacs 文本编辑器中,您可以记录一系列击键,然后将它们重放任意次数。通过实践,宏可以使手工或编程的复杂任务变得微不足道。

  • UNIX 一行程序。能够用基本的 UNIX 工具操纵和处理数据,而不必编写程序,可以将完成任务的时间从几分钟减少到几秒钟。

  • 虚拟助手。学习如何以及向虚拟助理委派什么是困难的,但是企业家和工程师已经在委派客户支持、电子邮件、研究、电话、日程安排等方面取得了成功。

  • 键盘快捷键。每个新的键盘快捷键可能每次操作只节省一秒钟,但是掌握多个快捷键可以为复杂的操作节省几秒钟甚至几分钟。

  • 脚本语言。当您确实需要快速完成某些工作时,与 C++或 Java 等编译语言相比,对 Python、Ruby 或其他脚本语言的一点了解会产生奇迹。

反思你的日常工作流程。学习或构建工具可能会节省更多时间的其他领域有哪些?

感谢陈晓阅读本的一稿。

我人生中成长最激烈的一年——我学到了什么

原文:http://www.effectiveengineer.com/blog/the-most-intense-year-of-growth

“我正在跳入新的可能性!”说完这些话,我纵身跳出飞机,朝着 14000 英尺高的地面冲去——尖叫着逃命。

我失去了上下的感觉,因为我的身体在空中翻滚了几秒钟。我注意到的第一件事是,当我最终脸朝下飞向地面时,我的嘴几乎瞬间变干了,因为风吹到了我的脸上。我不得不闭上嘴,停止尖叫。

我想说,接下来的 60 秒自由落体是一个重要的记忆,标志着我对一种新的和更大胆的生活的承诺。但是说实话,在我的跳伞教练猛拉降落伞的撕裂绳之前的那一瞬间发生得太快了——一片模糊。我需要重新看一遍录像,让它真正明白我从一架该死的飞机上跳了下来。

在某些方面,我对过去的一年也有同感——这是我一生中成长最激烈的一年。我通过教练培训学院完成了五个月的教练培训和十个月的强化领导力发展项目,并将我在 Quip 的工作变成了一个练习领导力的舞台。这一年真的挑战了我,成为一个更好的领导者、工程师、朋友和丈夫意味着什么。发生了这么多事情,我也需要放慢脚步,让教训深入人心。

把我学到的东西都拆开需要时间和多篇帖子。首先,上周我花了一天时间回顾了过去一年我所有的日志。

以下是我学到的最有力的教训:

过充实的生活

  1. 我们对自己的人生经历 100%负责。我们可能无法控制外部环境,但我们可以选择如何经历和应对它们。

    承担 100%的责任解放了我们——它让我们能够采取行动,塑造我们的生活。逃避责任会困住我们——它让我们成为无助的乘客,眼睁睁地看着我们的生活展开。你想在生活的哪个方面承担更多的塑造责任?

  2. **明日不可承诺。**每当我听到或读到有人意外去世——比如因为脑癌或意外事故——我都会感到深深的悲伤。这是一个突然中断的人生故事。

    这让我想起了史蒂夫·乔布斯,他每天早上都会对着镜子问自己,“如果今天是我生命的最后一天,我会想做今天要做的事情吗?”如果连续很多天答案都是“不”,那么是时候问一问“什么需要改变?”

  3. 每个人都在与“不够好”的感觉做斗争——你并不孤单。有些人与冒名顶替综合症做斗争,觉得他们的技术能力不够好。我一直在挣扎——过去更多,现在更少——感觉不够好,不能占用我朋友的时间。

    不够好有很多名字,包括不配、自我评价和羞耻。布琳·布朗在《不完美的礼物》中写道:“羞耻需要三样东西才能在我们的生活中失去控制:保密、沉默和判断。”。与你信任的人分享你“不够好”的故事,让他们开始相信自己的价值。

  4. ***说出你的限制性信念,开始挣脱束缚。*几乎在我的一生中,我编了一个“成功创造距离”的故事因此,我会痛苦地向亲近的人隐瞒我的书、我的演讲或者我在《纽约时报》上被提及的成功经历,担心他们会因为我把注意力转移到自己身上而对我进行评判。

    几个月前,我决定公开分享这个故事给我带来的痛苦。读者开始回应类似的故事。朋友们感谢我让他们知道,并祝贺我的成就。分享我的成功实际上创造了更多的联系!对我来说,这是一个改变人生的突破,从那以后,我不再怀疑我分享的成功。命名极限信念让我自由。你第二次猜测自己在哪里?可能潜伏着一种有限的信念,等待被命名。

  5. 我们打小不为天下。我们都有旨在破坏我们的内心批评——他们开始灌输恐惧的内心对话,让我们躲起来,小心行事。在那些时刻,我们需要提醒自己,就像我对我的教练客户和我自己一样,“在这种情况下,你最好的自己会怎么做?”

    我把纳尔逊·曼德拉(Nelson Mandela)的名言框在我的房间里,提醒自己要做大:“在做小事情中找不到激情——满足于一种不如你有能力过的生活。”

  6. 看上去不错会妨碍我们真实地面对自己。当我们害怕别人看我们不好时,我们会退缩。我们没有做我们想做的事,没有说需要说的话,也没有去做我们力所能及的事。我们的自我判断阻止了我们充分表达自己。

    但你知道谁不怕难看吗?小孩子。我们每个人都有一个 3 岁的孩子等待被表达。找到那孩子。把生活当成你的游乐场。去玩吧。

  7. 为你生活中的每个重要方面投资一位教练。运动员有教练来实现最佳表现——为什么不在生活中给自己同样的好处呢?今年,我投资了一位生活教练、一位私人教练和一位婚姻教练,我甚至邀请了一位亲密的朋友,他是一位冒险教练,为我的生日设计了一次为期两天的冒险,以激发我内心的傻孩子。每一次教练经历都让我成长更多。

关于人际关系

  1. 在 100%的时间里,100%的要求你想要的。我妻子有时会因为我没有做她想让我应该知道的事情而生气。然后我会委婉地提醒她,虽然我有很多超能力,但读心术不在其中。我们都会犯这个错误。当然,你可能得不到你想要的一切。但是如果你不问你想要什么,人们怎么会知道呢?

  2. ***提高你进行不舒服对话的能力。*今年,我开始了一项令人不舒服的对话挑战,以拓展我的舒适区,并探索我与他人之间的紧张感。所以我和无家可归的人进行了长谈。我向街上的一个陌生人要了 10 美元。我问 Lyft 司机,“你的梦想是什么?”我告诉一个高级工程师他威胁我。我突然给朋友打电话(这让我很不舒服)。我和妻子进行了艰难的谈话。

    蒂姆·菲利斯写的感觉很真实,“一个人在生活中的成功通常可以通过他或她愿意进行的令人不舒服的对话的数量来衡量。”今年每一次令人不舒服的谈话都增加了我忍受不舒服的能力,让我说出需要说的话。

  3. 我们编造的关于他人的故事阻碍了信任的建立。我们在自己的头脑中花费了太多的精神能量,对人们为什么做他们所做的事情做出假设。有人给了我们批评性的反馈,我们编造了他可能不尊重我们或不支持我们的判断性故事。有人做了让我们烦恼的事,我们会编造一些怨恨的故事,说她不体贴,或者她可能不喜欢我们。有人没有做好本职工作,我们就编造一些痛苦的故事,说他懒惰或无能。

*理清这些假设,建立信任。以“我编了一个你的故事,这个故事对我们的关系的影响是……”开始可能是一个强有力的邀请,让我们围绕真实的真相进行诚实的对话。*
  1. ***发现并分享重要的东西——这是深入交谈的捷径。*我不喜欢闲聊,很长一段时间以来,我都觉得与新认识的人联系不上——我们实际上如何进行有意义的对话呢?
*在过去的一年里,我一直在尝试和练习如何快速与陌生人建立更深层次的联系。我让优步和 Lyft 的司机分享他们最大的梦想,让父母分享他们最引以为傲的关于孩子的美丽故事,让父亲分享他们想告诉孩子更多的“我爱你”,因为这不是他们成长文化的重要部分。人们喜欢谈论对他们来说重要的事情。“这对你来说有什么重要的?”是一个简单而有力的问题,可以建立更深层次的联系。*
  1. 明确设计你的人际关系。我在 Quip 管理的工程圈教的第一个技能是明确设计与他们一起工作的人的联盟。例如,在与你的经理设计联盟时,你可能会讨论这样的问题:你想从这种关系和 1:1 中得到什么?你最想从工作中得到什么?你的经理怎样做才能最好地支持和挑战你?
*所以,我们经常没有一个明确的对话来公开这些重要的信息。然而,这一次谈话可以成为所有后续谈话的有力背景。你的哪些关系可以从更明确的设计中受益?*
  1. 把含蓄的事情明确化以建立信任。当你说出那些隐含的和假设的东西——情感、紧张、欲望、需求或涉及的利害关系时,强大的事情就会发生。当事情是含蓄的,他们是不露面的,很难处理。当它们变得清晰时,有时会令人害怕,它们会成为可解决的问题和增强信任的有力时机。
*例如,如果你在一场激烈的辩论中感到不安、愤怒或沮丧,但你没有说出你所感受到的情绪,这种情绪会影响你说的每一句话,最终你会绕着它说话。然而,如果你真的说“我感到沮丧”或“我从你身上感觉到了沮丧”,你就可以谈论沮丧和紧张的真正来源。*

论领导力

  1. 以人为本,打造卓越团队。我曾在以使命为先或以业务为先的地方工作过。我在 Quip 工作的三年半时间让我明白,首先投资于人会带来更快乐、更有创造力、更投入的团队(以我在业内见过的一些最低流失率来衡量),以及更高效的团队。
*Quip 的[以人为本的领导方法带来了令人惊叹的草根计划,如工程圈、两周一次的反馈会议计划、技术领导指导、教练关系以及我们的指导和入职计划,所有这些都旨在帮助人们成长。这项业务现在为世界上一些最有价值的公司和知名品牌提供支持——每周有 30,000 名脸书员工使用该产品!你可以通过哪些方式投资于你领导的人?](/blog/share-powerful-stories-to-shift-the-culture)*
  1. ***源于脆弱——它的力量令人难以置信。*最近,我在工作中花了一个小时讲故事,回顾了我两年来在自助出版 【有效工程师 中的冒险经历,包括巅峰时刻和绝望的深渊,技术和营销,以及一路上来之不易的经验教训。
*我过去不分享原始的个人故事,部分原因是我不喜欢和亲近的人一起站在聚光灯下(在陌生人面前站在聚光灯下我没问题),部分原因是脆弱会让人不舒服。我学到的是,分享真实的个人故事会邀请他人分享他们自己的生活,包括他们的价值观和不安全感。在工作中,分享个人故事让我们不仅将对方视为同事,还将其视为人类——在激烈的工作争论中,我们可以忘记这一点。*

*

成长为人们喜欢与之共事的工程领导者

通过一年来对 50 多名技术主管、经理、总监和首席技术官的指导,了解更有效领导的框架和工具。*

  1. 让人们加入你的任务和使命。作为领导,我们常常不愿意寻求帮助。我们可能认为我们必须独自做事。或者我们不好意思寻求帮助。或者我们想通过不分享我们的旅程来最小化失败的痛苦,直到它们结束。这一年我明白了,一切都是的,所以当你有共同领导、合作伙伴和支持者时,一切都会变得容易得多。接纳他人让我们的追求更有成就感,更有可能成功,它让人们支持我们度过悲伤的低谷,并与我们一起庆祝我们的巅峰时刻。**
*从历史上看,我从来不会告诉别人我正在准备一场大型演讲——就像我在谷歌或脸书做的演讲——部分是为了降低风险。相反,我会独自制作幻灯片,而*也许*我会和妻子一起练习。然而,对于我最近在悉尼给 1000 名工程师做的 StartCon 主题演讲(关于它对一名有效的工程师真正意味着什么),我请我工作中的朋友索菲亚指导我的演讲。我和工程团队的大部分成员进行了两次演习。我不仅得到了惊人的反馈,而且与团队分享我演讲的粗略版本对我来说比实际的主题演讲本身更有意义。*
  1. 分享别人对你的影响。我们受到的影响通常是意想不到且不明显的。假设某人做了一件我们非常欣赏或感动我们的事——如果我们不告诉他们,他们可能永远也不会知道。他们甚至可能会停止这样做,那将是多么的遗憾。或者说某人做了一些确实困扰我们或者对团队有负面影响的事情,但是我们从来没有告诉他们,所以他们没有意识到,继续这样做。我们的“好”对每个人都是一种伤害。
*领导对他人的影响给出反馈,他们也要求对自己的影响给出反馈。你内心深处有什么反馈是你还没有分享的?而我的写作对你产生了哪些我不知道的影响?我很想在hi@effectiveengineer.com听到这个消息。*
  1. 诚实而清晰的对话可以解决大多数人类问题。许多课程都围绕着对话的主题。我学到的是,我们的许多问题都源于误解或假设,如果我们真的彼此交谈,这些问题就会消失。一项对创业后期的分析显示,许多创业公司失败是因为人们彼此之间或与客户之间没有坦诚的对话。
*这就是为什么 Jean Hsu 和我将我们最近的领导力研讨会的重点放在为工程领导者提供有效对话的教学工具上。这也是为什么我们将继续我们在[的工作,提高今年工程领导的标准](/blog/raising-the-bar-for-engineering-leadership)。*

*嘶!我们上一次的工作坊一周内就卖光了。[留下您的电子邮件地址,以便提前参加](http://theeffectiveengineer.leadpages.co/serve-leadbox/144e69773f72a2:117f98b5a746dc)今年的现场和远程研讨会。*

还有一个

  1. 当你感激你所拥有的东西时,快乐取代了痛苦。我和妻子开始了一个受雪莉·桑德伯格启发的晚餐仪式,我们每人分享三样东西:一天中最糟糕的时刻,一场我们想要庆祝的胜利(我们将击掌庆祝!)和一些我们感激的东西——无论是大是小。我们会花一点时间闭上眼睛,充分感受对它的欣赏。当我们这样做时,很难不微笑和感到快乐。
*这是我过去一年最喜欢的外卖习惯之一,我想和你分享一下。*

感谢 Diana Kimball 和陈晓阅读本文的草稿。

*

提高自己领导力的标准

通过一年来对 50 多名技术主管、经理、总监和首席技术官的指导,了解更有效领导的框架和工具。*

打破我们编造的关于自己的故事

原文:http://www.effectiveengineer.com/blog/the-stories-we-make-up

这是一个关于我一直藏在里面的盒子以及我如何努力挣脱的故事。

“在过去的一年里,你对自己了解了什么?”一位密友在我的生日晚宴上问道。

这是一个适时的问题。过去的一年是个人快速成长的一年。我越来越意识到我对人们的影响、我有限的信念和我的梦想,我也比以往任何时候都更有动力去塑造我自己的故事。我的旅程就像我想象的那样令人迷惑,尼奥一定是通过学习母体,服用红色药丸,发现隐藏在众目睽睽之下的真相。

我明白了,我讨厌被束缚的感觉。我们发现自己身处的一些最受限制的盒子实际上是我们为自己创造的。我们在这些盒子里感觉更安全,但是这些盒子——这些限制性的信念——也阻止我们玩得更大,生活得更充实。

这是我一直藏在里面的一个盒子,在这里,阳光终于开始照耀。

在过去的一年里,我一直在与“成功创造距离”这一有限的信念作斗争——如果我身边的人知道我是成功的,我会把自己与他们隔离开来。因为我真正想要的是与人交流,我不得不限制人们对我的看法。我必须比我真正的身材小。

所以我避开聚光灯。我藏在我的小保险箱里。


今年早些时候,我接受了《纽约时报》记者的采访,并在中提到了一篇关于人际交往技能如何在软件工程中发挥关键作用的文章

我感到非常兴奋!《纽约时报》提到了有效的工程师!文章甚至谈到了我在教练生涯中的新冒险,这已经成为我工作和生活中越来越重要的一部分。

然而,即使在庆祝活动进行到一半的时候,我内心也在激烈地斗争,是否要把这篇文章分享给我认识的人。我内心的批评家有如此多的判断力。我以为我是谁,把所有的注意力都放在我自己身上?我会成为那种别人觉得不停在社交媒体上发帖吹牛的人吗?没有判断,我不知道如何庆祝我的成就。我与密友进行了多次交谈,并与我的教练通了一个小时的电话,最终找到了勇气来分享一些对我来说显然很重要的事情。

这不是一个孤立的事件。我可以向陌生人推销自己,但我倾向于向我关心的人或密切合作的人隐瞒成功。我想成功,但我不想看起来像是成功了那么多以至于疏远了自己。所以我做了这个笨拙的舞蹈,悄悄地成功了。

几年前,我应邀在谷歌总部做了一次 Authors@Google talk 演讲。我感到很荣幸,也很激动!然而,当我和 Quip 的同事分享这一时刻时,我只是偷偷溜进了“在家工作”聊天室,丝毫没有表现出我的兴奋。最好不要太显眼!

这些年来,在“在家工作”的背景下,不经意地提到一次外部谈话对我来说是一种模式。另一天,我在家工作,在脸书做了一个技术演讲。另一个在 Quora 做问答。另外几个在 Pinterest 教授一系列关于有效工程的研讨会。我从未真正承认过自己的兴奋。

每当有人问我自己出版的书怎么样了,我都会用一句简短的“很好!”然后转移到另一个话题。尽管我的书实际上非常棒,第一年的收入超过了我的创业工资,但我还是这么做了。我不想分享写作和自助出版这本书对我有多重要,也不想分享我有多自豪,因为我知道如何做好的每一件事,从收集故事到写作到排版到寻找编辑到营销再到实际启动这个为期两年的项目。


藏起来可不好玩。我已经厌倦了。仅仅是写下和承认我把自己放进的盒子里,我内心就在流泪。每一次重读最后一段,我都会泪流满面——想着因为那一个有限的信念,我埋葬了自己的哪一部分,而不是去庆祝。

当我让“成功创造距离”这一限制性信念支配我的行为时,我玩的是小游戏。我假装我的成功对我来说并不重要,这样我就能“融入其中”,不会冒险打破一些想象中的平衡,这些平衡可能会使我与其他人隔离开来。

这种信念从何而来?也许是因为我是一个书呆子,在学业上一直名列前茅,却从来没有真正觉得自己适合任何地方(除了我高中的演讲和辩论队)。最终,这并不重要。我编造了一个故事,说我的好成绩造成了孤立,而这只是一个故事。还有很多其他在学术上有天赋的学生,他们似乎也很适合。

在过去的一年里,我意识到我的躲藏对任何人都没有好处。它不适合我出现在这个世界上。它不符合我想要在我周围的人身上创造的雄心勃勃的影响。它不为那些真正尊敬我的人服务。

我最近读了布琳·布朗的书《不完美的礼物》,其中一段引起了我的共鸣,她的观察是假装事情不重要,当它们实际上是最大限度地减少了快乐,这本身也造成了孤立:

[P]放下令人兴奋的事情并不能消除没有发生的痛苦。然而,当它真的发生时,它会减少快乐。这也造成了很多孤立。一旦你降低了某件事的重要性,你的朋友就不太可能打电话来说,“很抱歉,那没成。我知道你对此很兴奋。”

也许成功创造了距离。但这也创造了联系。只有当我让人们知道对我来说什么是重要的是一个真实的,可信的联系,甚至是可能的。


有些看这个故事的人会觉得这种行为不理智。“爱德蒙,我看不出有什么问题。已经分享了!”你可能会想。

但是在我作为一名领导力教练的工作中,我发现了根深蒂固的限制性信念,这是一件棘手的事情。限制信念是非常个人化的,高度情绪化的,很难从逻辑上论证你的出路——即使你是一名工程师——因为它们是如此根深蒂固。对其他任何人来说,这些信念可能看起来很荒谬,但这并不会降低它们的真实性。

我告诉你一个秘密:每个人都有。

每当我们没有说出该说的话,没有做我们想做的事,没有成为我们想成为的人,总有一个局限的信念潜伏在某处,拖着我们前进。我们把自己放进的这些无形的盒子都与一件事有关——我们认为自己不够好。我们编造故事,如果我们真的说了,做了,做了那些事,我们就不属于这里。结果,我们隐藏了自己的一部分。我们没有把完整的自我带到我们的工作或生活中,我们没有尽可能地真实、有效或快乐。

为了逃离一个盒子,我们每个人都需要找到一个替代的视角——一个新的信念——与我们产生如此强烈的共鸣,以至于我们可以用它来取代旧的。

当我与我的这种特定的限制性信念斗争时,我想到的人是雪莉·桑德伯格。在《T4》《向前一步》 中,她分享了一个关于她如何进入福布斯年度全球最具影响力女性排行榜前五名的故事。每当有人走上前来向她祝贺时,她都会感到尴尬,并被揭穿是个骗子。她称这份名单很荒谬,并轻描淡写。一名助手把她拉到一边,告诉她,她的不适和不安全感对任何人都没有好处,最终她转而说了一句简单的“谢谢”。

“雪莉·桑德伯格会怎么做?”每当我内心的批评家告诉我玩小游戏时,这就成了我的口头禅。我钦佩她故事中的脆弱,也钦佩她是世界人民的楷模。我在想,如果她选择了躲藏,而这个世界被剥夺了向她学习的机会,那将是多么悲惨。

这激励并推动我去做大事——真正拥有我是谁,我想要成为的榜样和领导者,以及我想要在我周围的世界中创造的影响。

我们编造了太多关于自己的故事,这些故事阻碍了我们成为真正的自己,成为我们想要成为的人。打破限制信念的第一步是给它命名。越多的人说出这些限制性信念,分享他们编造的关于自己的故事,其他人就越容易这么做。

这是我命名我的一个。


我的朋友 Jean Hsu 和我将共同主持一系列关于真正领导力的研讨会。你将学会如何挖掘内心的勇气,将紧张转化为成长的机会,同时坚持自己的价值观。

在研讨会开始时尽早进入。

参加真正的领导力研讨会

打破你自己的限制信念,掌控你自己的故事,培养你内心真正的领袖。

要学习和成长的东西比你想象的要多

原文:http://www.effectiveengineer.com/blog/theres-more-to-grow-than-you-might-think

我们生来都有固定的智力吗?或者我们的智力是一个可塑的量,可以通过经验和努力提高?事实证明,我们关于智力的信念系统会影响我们为自己设定的目标类型以及我们对学习的态度。

在一项社会科学实验中,心理学家 Carol Dweck 将纽约市几所公立学校的七年级学生分成两组。在 8 周的时间里,两组学生每周半小时会见她的研究小组的一名成员,以了解大脑和记忆是如何工作的。实验组的学生也了解了智力的本质以及如何通过经验和努力提高智力,而控制组的学生则没有额外的课程。额外的心理学课产生了巨大的差异——尽管控制组的数学成绩在七年级时有所下降(反映了美国教育的可悲现状),但实验组的成绩实际上有所提高。

在她的另一项研究中,德韦克发现,在香港一所学校英语不熟练的学生中,73%认为自己可以变得更聪明的人决定参加英语补习班。只有 13%认为聪明是固定品质的人决定注册。基本原理很清楚:如果你相信你的智力是一个固定的量,为什么要投资时间去尝试改善一些不能改善的东西呢?

采取成长的心态

因此,你的心态会影响你对成功和失败的态度。卡罗尔·德韦克在她的书《心态:成功的新心理 》中解释了当人们对智力采取“固定心态”时,他们在面临挑战性问题时更容易放弃。如果你相信你生来就有一定的聪明才智,那么面对失败时你就无能为力了,所以为什么还要尝试呢?思维定势的人坚持解决他们知道可以解决的简单问题,并利用各种情况来展示他们的智慧,而不是学习。

另一方面,当具有“成长心态”的人面临挑战时,他们认为挑战实际上是学习和增加智力的机会,因此不太可能放弃他们的成功之路。他们更关注自己的个人成长,而不是炫耀自己的智慧。

与德韦克一起工作的海蒂·格兰特·哈尔沃森在她的书《成功:我们如何达到目标 中很好地总结了我们心态的影响:

“当我们相信我们自身有一些东西是无法改变的,我们就会追求这样的目标,那就是尽可能让别人看到我们最好的一面。具有讽刺意味的是,这些目标往往积极地阻止改变——这些目标让我们无法学习和成长。”

不要认为你的弱点是固定的

我认识的大多数工程师认为,他们的智力是一种可塑的品质,是他们自身奉献和努力工作的结果。这并不奇怪。他们在学校努力学习以取得好成绩,阅读书籍以增长知识,从事兼职项目以发展技能,或者沉浸在国家中学习新语言。在某种程度上,他们中的大多数人可能对体育运动也有同样的看法。没有长时间的练习,你不可能在跑步、游泳、篮球或网球上做得更好。

令人惊讶的是,虽然我们许多人都承认智力、技术能力和身体技能是可以改善的特质,但我们往往很难将同样的成长心态应用到软技能上。我们可能会认为自己内向,不喜欢闲聊或发表演讲,或者不知道如何结识新朋友。我们可能谈判很差,从困难的对话中退缩,或者思考或反应迟钝。我们可能会对自己在计划或安排项目和活动的优先次序方面的混乱或糟糕感到恼火。或者我们可能在记住名字或讲述引人入胜的故事方面有困难。尽管我们可能会抱怨没有这些我们希望拥有的软技能,但许多聪明人对此却无动于衷。

每当我们认为或说擅长我们认为有价值的技能不是我们的天性时,我们实际上采用的是对这些特征的固定心态。我们正在接受一种习得性无助,这种无助阻碍了我们成长和发展这些技能的能力,就像德韦克研究中的那些学生一样,他们早早放弃,因为他们认为他们只有固定数量的智力。

事实上,如果我们决定有我们想要更好的软技能,并且如果我们采取一种成长的心态去提高它们,很快就会变得很清楚,我们可以想出办法来努力提高它们。我有一个朋友,她曾经非常害羞,但在大学期间,她通过设定目标,比如每周交五个新朋友,基本上训练自己变得善于社交,现在很难相信她甚至很内向。我过去相当没有条理,但在过去的两年里,我通过阅读诸如高效人士的 7 个习惯成事 之类的书籍,并练习如何更注意如何计划和组织我的时间,我教会了自己变得更有条理、更有效率和更有成效。另一个很好的例子是,当人们评论马克·扎克伯格在公众聚光灯下有多尴尬时,他比早年有了很大的进步。

当然,有些人天生更外向,更容易交谈,有些人似乎是天生的活动策划人,就像有些人可能天生智商更高,更容易学习新概念。但是,一旦我们不再把这些缺点当作永久的标签,而是把它们当作我们没有投入时间去发展的技能,我们就会更倾向于一种成长的心态,在这种心态下,我们会控制局面并努力改进。我们开始优先考虑我们认为值得追求的技能,并采取一系列行动来学习和实践这些技能。谈判和即兴表演课、练习演讲技巧的演讲会以及记住名字的记忆技巧都是有助于提高各种软技巧的例子。

我很不擅长记名字,我希望我能更擅长于此,以减少尴尬的“嘿”时刻,然后是尴尬的沉默,我在心里搜索名字,但如果我认为这比记住生物、化学或历史的术语更难,那我就自欺欺人了。我只是没有把它放在首位,没有花时间去实践它。

时间

原文:http://www.effectiveengineer.com/blog/time/

我教授工程师和技术领导者有效创造有意义的影响所需的工具。

我是 Quip 的早期工程师,在 Quora、Google 和 Ooyala 都领导过团队。

成为一名有效的技术领导者意味着什么?

原文:http://www.effectiveengineer.com/blog/what-does-it-mean-to-be-an-effective-tech-lead

在我职业生涯的早期,我第一次担任技术主管时,我对自己在做什么一无所知。

一夜之间,我发现自己突然要负责一家处于劣势的初创公司的四名工程师团队的技术和项目产出——尽管与前一天相比,我对我的新角色没有更多的培训、指导或工具,当时我还只是一名高级个人贡献者。

我的两个选择是下沉或游泳。我一周工作 60 到 80 个小时,忙着解决问题。我犯了很多错误。

有一次,我正在夏威夷度一个急需的假期。在一次和妻子一起在火山上徒步旅行时,我收到了 CTO 发来的一条短信:“日志处理器停机了。”日志处理器是一个关键但传统的软件,它分析我们客户的所有日志数据,并生成他们用于业务决策的分析报告。我是唯一一个熟悉代码的工程师——部分是因为团队分散在许多项目上,部分是因为我不想给其他人增加负担。

很明显,火山上没有无线网络。因此,来自客户和我的团队的期望整天压在我的心头,直到那天晚上晚些时候我可以解决这个问题。那天我学到了一个惨痛的教训,那就是不要成为团队中的单点失败。从那以后,我学到了更多,既有我自己的经历,也有我写《有效的工程师*】和《T3》时与硅谷数百名工程师和领导者的谈话和采访。*

很明显,每个人都经历过类似的技术领先的斗争,这些故事不仅仅是我自己的。

这就是为什么上周 Dropbox 邀请我在他们的旧金山总部参加内部技术领导培训活动时,我感到非常兴奋。在 90 分钟的时间里,我回答了大约 50 名初次接触 Dropbox 技术、经验丰富的技术负责人提出的各种问题:如何定义自己的角色、如何区分个人工作和团队工作的优先顺序、如何尝试新的团队流程等等。

然而,有一个主题贯穿了大多数问题。那就是:

“作为一名技术领导者,成功是什么样的?”

在这篇较长的文章中,我分享了一个思考作为一名技术领导者成功的一般框架。

千面侠科技领军人物

当我回顾我遇到的最有效和最成功的技术线索时,它们并不符合一个单一的模式。

一个是真正有效的技术领导,因为他拥有一些业界最好的前端工程技能(他的其他技术技能也是一流的),敢于钻研 Webkit 或 Chromium 代码库以了解正在发生的事情,并构建工具和抽象,从而显著提高整个团队的生产力和代码质量。

另一个非常有效,因为她与相邻的团队建立了牢固的关系,在团队的项目领域获得了深厚的技术专业知识,并发展了领导对其组织非常重要的跨团队工作的强大能力。

另一个人可以在头脑中掌握非常复杂的细节和想法,通过复杂的案例进行系统推理,然后激励她的团队执行具有高度技术复杂性的雄心勃勃的项目。

还有一个是有效的,因为他可以身兼多职:他可以使用他“足够好”的设计技能快速绘制产品模型,将它们写在引人注目的产品设计文档中以获得反馈,然后与他的团队一起系统地迭代、测试和衡量这些想法的有效性。

成为你所在技术领域的前 1%有可能成为一名有效的技术领导者。但是这很难做到。

在一个特定的领域取得非常好的成绩(前 25%)要容易得多。因此,有效的技术领导力的一个更常见的设计模式是这个三法则,灵感来自斯科特·亚当斯^:

在三件事上变得非常优秀(前 25%)。然后弄清楚如何将这些技能结合起来,有效地推进高杠杆项目。

你选择非常擅长的三件事将强烈依赖于你自己的长期愿望。

你喜欢从事面向用户的产品吗?一些非常擅长的事情可能包括前端工程、用户研究或交互设计。

你想有一天探索管理吗?一些事情可能包括指导或训练,进行有效的回顾,或者让新的团队成员加入。

你渴望做一些更有创业精神的事情吗?有些事情可能包括产品管理、了解业务需求或用户增长。

设计自己的技术领导角色

一旦你确定了你非常擅长(或想要擅长)的三件事,那么你需要和你的队友一起明确地设计如何更好地利用这些技能。

出于多种原因,这是成为一名有效的技术领导者最棘手的部分之一。

这很棘手,因为你可能不清楚自己的角色到底是什么——也就是说,假设你一开始就被正式认可为技术领导者。通常,高级工程师非正式地承担技术领导角色。

这很棘手,因为与经理不同,你领导一个团队取得成果,但你经常在没有任何明确授权的情况下领导团队。

这很棘手,因为尽管与个人贡献者相比,你的职责非常不同——你开始主持会议,为你的团队安排任务的优先次序,提供更直接的反馈,并激励人们——但你可能不会得到太多关于如何成功的培训或支持,如果有的话。

然而,技术领导是一个重要的角色,因为你在某种程度上对技术策略、产品质量、团队生产力和项目成果负有责任。

要想成功,你必须明确设计你自己的技术领导角色是什么样的。这样可以既好玩(哇!有这么多的可能性!)和吓人(救命!有这么多的可能性!)同时。

为了有效地选择你自己的冒险,你首先需要了解什么对航运项目是重要的。

如何定义自己有效的技术领导角色

从高层次来看,有效的技术领导可以确保高杠杆项目顺利进行。

项目可以被宽泛地定义为产品、特性、实验、工具、系统、重构或其他任何东西。在项目发布之前,结果不会实现。

然而,仅仅发布项目是不够的。在 高效工程师 中,我分享了杠杆——你每单位时间投入所产生的影响——是高效工程师使用的核心指导指标。有效的技术领导也是如此。他们运送投资回报率高的项目。

任何项目要想成功,都必须在几个核心方面做得很好:

  • 技术:需要做出哪些技术决策和权衡?最大的技术风险是什么?
  • 产品/业务:从产品或业务的角度来看,为什么这是合适的项目?项目的成功会是怎样的?目标是什么?
  • :谁在做这个项目?你如何让他们对自己的工作感到兴奋和负责?对项目干系人来说什么是重要的?可能存在哪些跨团队的依赖关系?
  • 项目管理:什么需要完成,什么时候完成,按什么顺序完成?谁可能需要了解每件事?

许多技术领导错误地认为他们只对技术层面负责——“技术领导”一词无疑助长了这种想法。

现实是,项目的成功和失败不仅仅取决于它们的技术价值。我的团队可以按照强大的设计模式,用干净的代码构建一个很棒的工具或抽象,但是如果它解决了错误的业务问题,或者消耗了组织无法负担的更多资源,或者如果我的队友对工作体验不满意,那么我们可以更有效。

这并不是说,要成为一名有效的技术领导者,你需要自己涵盖所有这些方面。但是你确实需要确保不同的项目职责被涵盖。

这需要明确地设计你与团队中其他人的联盟

你和你的同事——无论是产品经理、工程经理、项目经理、设计师还是其他工程师——都是项目的盟友。你们每个人都有不同的技能和抱负。你想要的和擅长的会和下一个技术领导不一样。

因此,要扮演一个有效的角色,你需要有一个明确的对话来设计与同事的关系。作为一名技术主管,这是最有影响力的活动之一。

这意味着要问对方:

  • 一起工作对你来说什么是重要的?
  • 这个项目的成功是什么样的?
  • 向你寻求帮助的最好方式是什么?
  • 与您分享反馈的最佳方式是什么?

任何你认为重要的关于一起工作的事情也是公平的。

如果你真的想提升你的技术领导力,你会想参加有效技术领导力的基础研讨会,这是我作为公司领导力的一部分主持的。

本文最初发布在公司领导层上。加入联合领导力社区获取关于有效技术领导力的精彩故事、框架和课程

谷歌教会我如何扩展工程团队

原文:http://www.effectiveengineer.com/blog/what-i-learned-from-googles-engineering-culture

每周,一群谷歌员工会在世界各地浴室隔间的墙上贴满一页纸,分享一周的测试技巧。有一周,一页纸可能会讨论依赖注入,并提供一个如何在各种语言中使用它的简单示例;另一周,它可能会分享如何建立一个工具来测量你的团队代码库的测试覆盖率。“厕所测试”计划是一种古怪而有趣的方式,可以在工程师们工作时教给他们一些新的有用的东西。它还强调了谷歌工程文化的一个关键优势:向一个大型工程组织有效地传播一套一致的、自以为是的最佳实践。

我大学一毕业就加入了谷歌的搜索质量团队,从 2006 年年中一直呆到 2008 年年中,当时公司的员工从大约 8000 人增长到了将近 2 万人。在我的第一个项目中,我与两位非常有才华的工程师一起工作,在短短的六个月里,我们在 google.com 上开发、测试并推出了一个新功能,每天向数百万用户展示与相关的搜索。作为团队中的 token Noogler,在整个经历中最突出的是公司如何快速培养像我这样的新工程师,使其在环境中高效工作。像博格一样,^(公司已经掌握了吸收新工程师的艺术。)

如果不是因为谷歌工程文化的某些关键元素,我的团队在这么短的时间内发布如此规模和影响力的功能将会非常困难。这些元素使我能够在短时间内获得 Google 的代码库、工具和基础设施。它们也是使该公司达到今天拥有 50,000 多名员工的规模的相同因素。一些前谷歌员工可能会抱怨这家公司已经变得多么缓慢或官僚,但不可否认的是,它已经能够在大范围内取得高水平的成功,同时仍然是《财富》杂志 100 家最佳雇主名单中排名第一的公司。

以下是我从谷歌的工程文化中总结出来的六条核心原则,你或许可以从中学习:

  • 将工程资源用于共享工具和抽象。从很早的时候起,Google 就在工具和抽象方面投入了大量资金,如协议缓冲区、MapReduce、BigTable 等,这些工具和抽象在整个工程组织中都有使用。一次很好地解决一个问题,然后让内部每个人都采用它的态度已经有了巨大的回报。每个团队花费更少的精神周期来选择使用哪些工具,专用工具团队可以专注于工程生产力的改进,这些改进很容易传播到已经使用工具或服务的每个人。与每个团队可能使用完全不同的工具链的工程组织相比,这种哲学也意味着一旦你学会了基本的构建模块,理解许多项目背后的设计就容易得多。这种方法的缺点是,有时您可能会感到有压力,要将您的用例硬塞到一个特定的、得到良好支持的工具中,即使它不是这项工作的最佳工具。

  • **投资可重复使用的培训材料,让新工程师上岗。**我能够在谷歌内部迅速变得富有成效的一个原因是,该公司在名为 codelabs 的培训文档上投入了如此多的资源。Codelabs 涵盖了公司的核心抽象,解释了设计它们的原因,强调了代码库的相关片段,然后通过一些实现练习验证了理解。如果没有它们,我将需要花费更长的时间来学习我需要知道的大量有效的技术,这将意味着我的队友将不得不花更多的时间向我解释它们。我在谷歌与 codelabs 的正面经历强烈地塑造了我后来在 Quora 的入职过程中推动 codelabs 的决定。

  • 标准化编码惯例。关于空白、大写、行长度、是否使用智能指针等的每个约定。,单独看起来可能微不足道,但当你触及谷歌的规模时,却有着巨大的影响。我不会第一个承认,当代码评审员因为我不正确地缩进了一行或添加了两个字符超过了规定的行长度而挑剔我的代码时,这是令人讨厌的。但是因为每个人都遵循相同的约定,这使得浏览源代码变得非常容易。当切换团队或从事跨职能项目时,学习新团队的惯例几乎没有开销。当你的团队很小的时候,惯例是很容易被忽略的事情之一,但是当代码库和团队变得足够大的时候,你需要付出越来越多的努力去改变,以至于你实际上希望有一些一致性。如果可能的话,尽早达成一些一致的约定,或者使用谷歌开源的风格指南

  • **通过代码评审提高代码质量。**对每一个变更都要求并以编程方式强制执行代码审查会降低迭代速度,但会优化代码质量。新的工程师收到了他们需要的反馈,以快速获得最佳实践,并集中在可接受的代码质量水平上。总体而言,更高质量的代码也意味着模仿他们周围代码的新工程师也会倾向于编写更干净的代码。因此,代码审查有助于帮助公司大规模维护高质量的软件。

  • 拥有正确的数据(大量的数据)可以解决许多问题。谷歌研究总监彼得·诺维格经常谈到在解决复杂问题时“数据的不合理的有效性”。 ((正确的数据可以帮助你理解用户,剖析办公室政治,解决争论,让你跟踪进展。开发像 Sawzall 和 MapReduce 这样的日志和数据基础设施,使得谷歌的工程师能够筛选海量数据。))

  • 自动化测试来扩展你的代码。Google 有非常强的单元测试文化,“在马桶上测试”只是其中一个说明性的例子。几乎我所做的每一个代码变更都伴随着单元测试,代码评审人员会严格检查它们。这使得开发一个给定的变更变得更慢,但这也意味着成百上千的工程师可以对代码库的相同部分进行可扩展的变更,而不会牺牲太多的质量或可靠性。与谷歌投资共享工具的方式一样,它也将大力投资共享测试框架,并在最佳测试实践中教育人们,以使编写测试更容易。

当我后来在 Ooyala 和 Quora 帮助建立产品和团队时,在谷歌行之有效的实践(以及那些行不通的实践)强烈地影响了我对如何在这些地方形成良好的工程文化的思考。然而,仅仅因为特定的决策在谷歌的规模下运作良好,并不一定意味着它们在不同的成长阶段对不同的组织也会运作良好。每个工程决策都涉及一系列的权衡,但是谷歌的工程文化提供了这些权衡中的一部分,你可以从这里开始。

这篇文章改编自我在 Quora 上写的一个回答

什么造就了良好的工程文化

原文:http://www.effectiveengineer.com/blog/what-makes-a-good-engineering-culture

我问工程候选人的一个最喜欢的面试问题是告诉我他们喜欢和不喜欢他们以前公司的工程文化的一件事。我已经采访了 500 多人——他们中的许多人来自脸书、谷歌、亚马逊、Palantir 和 Dropbox 等顶级科技公司——随着时间的推移,这个面试问题让我了解到优秀的工程师在寻找什么,他们在试图避免什么。回想一下面试的回答,以及我过去七年在 Google、Ooyala 和 Quora 工作的经历,我总结了团队可以为建立良好的工程文化做的十件事。

1.优化迭代速度。

快速的迭代速度增加了工作动力和兴奋度。部署代码和推出功能的基础设施和官僚障碍是工程师在面试中列举的最常见和最令人沮丧的原因。

从组织上来说,快速迭代意味着给予工程师和设计人员灵活性和自主权,无需征得许可就能做出日常决策。当我在谷歌的时候,任何用户可见的对搜索结果的改变,即使是低流量的实验,都需要 Marissa Mayer 在每周的 UI 审查中批准。不用说,尽管这让谷歌保护了自己的搜索品牌,但它极大地阻碍了创新。优化迭代速度也意味着有定义良好的产品发布流程,这样在投入大量时间后就不会意外取消。

在基础设施方面,优化迭代速度意味着建立连续部署以支持快速验证,高测试覆盖率以减少构建和站点损坏,快速单元测试以鼓励人们运行它们,快速和增量编译和重新加载以减少开发时间。值得特别一提的是持续部署,即提交立即投入生产。在 Quora 上使用它之前,我很难接受它对迭代速度的好处超过了网站崩溃的风险,至少对小型工程团队来说是这样。人们对新功能更感兴趣,也更有动力去修复漏洞,因为变化会很快带来实时流量。与一周或更长时间的批量更改相比,对于一个狭窄的提交代码窗口来说,推理和查明错误的来源要容易得多。

对于团队来说,快速的迭代速度意味着有一组强有力的领导者来帮助协调和推动团队工作。决策中的关键利益相关者需要有效地做出决定,并致力于他们的选择。借用带领 49 人队夺得 3 次超级碗的领袖比尔·沃尔什的一句话,强有力的领袖需要“承诺、爆发、恢复”,这意味着承诺一个攻击计划,执行它,然后对结果做出反应。优柔寡断的团队只会导致个人努力的失败。

2.坚持不懈地向自动化推进。

在他的技术演讲“扩展 Instagram”中,insta gram 的联合创始人迈克·克里格(Mike Krieger)将“优化最小化运营负担”列为他的 13 人团队在将产品扩展到数千万用户时学到的关键一课。^(随着产品的增长,每个工程师的运营负担也会增加,这可以通过用户与工程师的比率或功能与工程师的比率来衡量。例如,脸书以宣扬每个工程师支持超过 100 万用户等扩展指标而闻名。)

自动化解决方案和编写重复性任务的脚本非常重要,因为它们让工程团队能够专注于实际的产品。确保服务在出现故障时尽可能自动重启,并在流量高峰时轻松快速地复制服务,是管理大规模复杂性的唯一明智方法。在短期内,总是有一个诱人的权衡,即手动应用快速创可贴,而不是自动化和测试长期修复。

Etsy 的座右铭“测量一切,测量一切”^(及其对开源监控和图表工具的支持,如 graphitestatsd 突出了自动化的一个重要方面——自动化必须由数据和监控驱动。如果没有监控和日志来了解什么、如何或为什么出错,自动化是困难的。一个好的后续座右铭是“测量一切,测量一切,尽可能地自动化。”)

3.构建正确的软件抽象。

我的麻省理工学院教授和本科生研究顾问丹尼尔·杰克逊很好地抓住了软件抽象的重要性:

“挑对了,编程会从设计自然流出来;模块将有小而简单的接口;新的功能不需要大规模的重组就能适应。选择错误的接口,编程将会是一系列令人讨厌的惊喜:界面将变得巴洛克式和笨拙,因为它们被迫适应意料之外的交互,甚至最简单的改变也将难以做出。”

让成千上万的工程师在谷歌构建可扩展系统的部分原因是,像杰夫·迪恩和桑杰·格玛瓦特这样真正聪明的工程师构建了简单但通用的抽象,如 MapReduces table协议缓冲区等等。允许脸书工程扩大规模的部分原因是对类似核心抽象的关注,如节俭抄写员蜂巢。允许设计者在 Quora 上有效地构建产品的部分原因是 Webnode 和 Livenode 非常容易理解和构建。

保持核心抽象的简单和通用减少了对定制解决方案的需求,并增加了团队对通用抽象的熟悉和专业知识。Memcached、Redis、MongoDB 等系统越来越受欢迎,越来越可靠。减少了构建定制存储和缓存系统的需求。将团队的注意力集中在少数核心抽象上,而不是分散在许多特定的解决方案上,这意味着公共库变得更加健壮,监控变得更加智能,性能特征得到更好的理解,测试变得更加全面。所有这些都有助于简化系统,减轻运营负担。

4.通过代码评审培养对高代码质量的关注。

维护高质量的代码库可以提高整个工程团队的生产力。更干净的代码更容易推理,更快开发,更容易修改,更不容易出错。一个健康的代码审查过程使这成为可能。

无论是提交前还是提交后,为及时的代码评审建立一个过程,可以在几个方面提高代码质量。首先,知道有人将审查您的代码,并且提交写得很差的代码可能会让您的团队成员失望,这种同辈压力是对粗制滥造、不可维护或未经测试的代码的强大威慑。第二,代码评审为代码评审者和作者提供了相互学习的机会,以写出更好的代码。

如果代码评审对于工程团队的其他成员来说是容易访问的,那么评审也带来了以下好处:a)增加了及时评审代码的责任,b)允许团队成员——特别是新成员——模仿他人良好的代码评审,以及 c)加速最佳编码实践的传播。

敏捷团队没有时间花在代码评审上的反驳忽略了技术债务,这些债务很容易从糟糕的代码中积累。Ooyala 在创业初期,曾经在没有代码审查的情况下,为推出尽可能多的功能进行优化;结果是,虽然最初的产品可能会更快地进入市场,但最终的代码变得难以修改,我们花了一年多的时间来重写脆弱的代码,以消除技术债务。

以谷歌的规模,它会对所有代码进行预提交代码审查,但较小的团队不需要如此全面或严格,也不是所有代码都需要同样严格地审查。我在的时候,Ooyala 后来通过电子邮件对核心或有风险的变更进行提交后评审。在 Quora,我们在 Phabricator 中进行了所有的代码评审,大部分是提交后的评审,并对模型或控制器代码和视图代码应用了不同的标准;对于敏感的代码或者来自新工程师的代码,我们或者进行提交前审查,或者试图在代码提交后的几个小时内进行审查。

5.保持一个相互尊重的工作环境。

同伴之间的尊重是任何开放交流的基础。一个人们乐于质疑彼此观点的地方是一个通过辩论形成合理观点的地方。人们容易被冒犯的地方是关键反馈被隐瞒的地方。

1948 年,亚历克斯·奥斯本(Alex Osborn)概述了过去几十年在工作环境中流行的常见头脑风暴法,参与者聚集在一起,搁置批评和负面反馈,集体汇集创意,而不用担心被评判。^(尊重地推迟判断是这种头脑风暴会议的关键。最近的心理学研究已经开始推翻奥斯本的方法,表明在头脑风暴会议中鼓励辩论实际上有助于避免群体思维,产生更有效的想法。根据这项研究,一个相互尊重的环境变得更加重要,这样攻击就指向思想而不是人身攻击。)

工程通常跨越广泛的领域(系统、机器学习、产品等。)而且不是每个人在每个领域都有相同的专业知识。事实上,一个强大的团队可能应该有在某些领域特别强大的人,即使他们最终在其他领域有所欠缺。这有时会让系统工程师很难评估产品工程师的熟练程度,但在健康的工程文化中,尊重这些差异而不仅仅基于自己的优势进行判断是很重要的。

6.建立代码的共享所有权。

虽然个人精通代码库或基础设施的各个部分是很自然的事情,但是没有人会觉得他们拥有或者是任何一个部分的唯一维护者。虽然让个人成为拥有特定领域一年或更长时间的专家可能会在短期内提高效率,但从长远来看,这种方法最终会造成伤害。

从组织上来说,共享代码所有权有三个好处。首先,保持总线因子^(大于 1 可以减轻维护者的压力,并在维护者离开的情况下降低团队的风险。这也使得一个人很难无忧无虑地休假。我当然不会怀念我是 Ooyala 的日志处理器的唯一维护者的日子,当我在夏威夷的火山上度假徒步旅行时,我收到了传呼。)

第二,共享所有权让那些在特定领域涉猎不深的工程师能够贡献新的见解。它让工程师摆脱了被某些项目束缚的感觉,并鼓励他们从事多样化的项目,这有助于保持工作的趣味性,并促进员工的学习和积极性。从长远来看,它降低了一些工程师感到停滞不前并决定离开的组织风险。

第三,共享所有权还为多个团队成员在需要更快完成战略目标的时候一起处理高优先级问题(敏捷开发的一种技术)奠定了基础。在所有权孤立的情况下,负担通常会落在一两个人身上。

许多工程组织在早期犯的一个错误是,在团队还很小的时候,将整个团队分成由技术领导组成的子团队。子团队建立所有权之墙,减少跨越这些墙的动机,因为个人可能会被他们的子团队的目标所评估。我在那里的时候,Ooyala 有子团队,我错过了一件事,那就是和其他团队的一些人一起工作的机会;从那以后,他们采用了敏捷开发过程,更加关注共享代码所有权,我听说这在工作快乐和生产力方面取得了很大进步。我喜欢 Quora 早期的一个方面是,我们强调项目胜于团队,我有机会参与从用户增长、机器学习、审核工具、推荐、分析、网站速度和垃圾邮件检测等项目。

7.投资自动化测试。

单元测试覆盖和某种程度的集成测试覆盖是管理大型代码库和一大群人的唯一可伸缩的方式,而不会经常破坏构建或产品。自动化测试为提高代码质量所需的大规模重构提供了信心和有意义的保护。在缺乏严格的自动化测试的情况下,由工程团队或外包测试团队进行手动测试所需的时间很容易变得令人望而却步,并且很容易陷入一种害怕改进一段代码的文化,因为它可能会崩溃。

实际上,随着团队的成长,自动化测试是使连续部署工作的一个需求。随着产品的增长,代码库的规模会随着时间的推移而增长,但是团队成员对代码库的平均熟悉程度会随着新人的加入而降低。测试和验证最容易由原始代码作者在代码记忆犹新时完成,而不是由那些试图在几个月或几年后修改代码的人来完成。鼓励强大的单元测试文化将验证的责任转移给了作者。

8.分配 20%的时间。

Gmail 源于 Paul Buchheit 的 20%项目,他在一天之内就拼凑出了第一个版本。 ^(Google News、Google Transit、Google Suggest 也作为 20%项目开始启动。在谷歌工作期间,我用 20%的时间编写了一个 python 框架,使得构建搜索页面演示变得非常容易。虽然谷歌现在 20%的时间可能比公司早期的效率低,但让工程师花 20%的时间研究他们产品地图以外的东西仍然是小型工程组织创新的摇篮。)

当我在那里的时候,Ooyala 官方没有 20%的时间,但我还是花了一些时间,为 Flex 和 Actionscript 编写了一个命令行构建工具,加快了团队的构建时间。我完成它的时候,Adobe 的 Flex Builder 工具链开始退化,即使工程团队的规模增加了两倍多,这个工具仍然在使用。Atlassian 在试验了一年后采用了 20%时间。^(脸书喜欢的 20%时间的变体是定期的黑客马拉松,这是 Ooyala 后来添加的,这是一种通宵活动,规则是你可以做除了正常项目之外的任何事情。)

自上而下的产品规划方法,虽然对于关注公司的整体方向是必要的,但却不能解释来自更接近实际的工程师的众多想法。只要工程师对他们 20%的时间负责,并专注于可能具有高影响力的变化,这些项目就可以在进展中向前迈出一大步。如果没有官方规定的 20%的时间,工程师和设计师仍然有可能尝试疯狂的想法,但要困难得多——专注的工程师和设计师基本上必须找到周末或假期来做这件事。

9.建立学习和持续改进的文化。

学习和接受足够的挑战是心理学教授米哈里·契克森米哈所说的“心流”状态的必要条件,在这种状态下,人们完全专注于自己正在做的事情,甚至忘记了时间。由更快的迭代周期提供的直接和即时的反馈循环是另一个需求。

每周一次的技术讲座为工程师们提供了分享他们的设计或成果的论坛,为工程师们创造了一个为自己的工作感到自豪的机会,也为团队提供了一个在他们的直接工作范围之外学习更多知识的机会。记录内部流程,如电子邮件服务如何工作或如何对搜索服务进行排名更改,也使工程师能够自己学习和探索新事物,很好地补充了 20%的时间。在 Quora,我们通过运行 Quora 的一个内部实例来做到这一点,在这个实例中,我们会询问与产品和开发相关的问题。

建立学习文化的必然结果是关注指导和培训,以确保每个人都拥有成功所需的基本算法、系统和产品技能。一个工程组织发展得越快,在招聘上花费的精力越多(尤其是大学招聘),在指导和培训上需要投入的精力就越多。对于一个单独的导师来说,在新员工工作的前四周,每天花一个小时似乎是一种负担,但这种投资不到新员工一年总时间的 1%,并且在决定这个人是否成功方面具有重要作用。

10.雇佣最好的。

雇佣最优秀的员工是列出的许多其他理念的基础。如果你认为一个人是 B 级工程师,你很难尊重他。如果你不相信某人的产品直觉,就很难给他们产品开发的自主权。没有足够的工程经验,很难识别要构建的正确抽象。如果没有其他聪明人来挑战你的想法并引导你走向简单,你很容易陷入构建复杂事物的陷阱。

史蒂夫·乔布斯在硅谷首创了一种说法,叫做“A 级玩家雇佣 A 级玩家”。b 玩家雇佣 C 玩家。”专注于招聘和雇佣合适的人对有效发展一个工程组织来说是困难但关键的。曾任脸书工程经理和总监的王宜山(Yishan Wong)认为,招聘必须是工程组织中每个人的首要任务,不仅是经理,工程师也是如此。^(他还非常正确地指出了“雇佣最好的”和“雇佣你面试过的最好的候选人”之间的区别)

在 Ooyala 的早期,我们被大量的入境客户工作压得喘不过气来,以至于我们几乎屈服于降低招聘门槛,这样我们就可以雇佣足够多的人来完成我们所有的工作。我很高兴我们没有这样做,因为来自低质量代码和团队中较弱工程师的技术债务最终会伤害团队和产品。

建立良好的工程文化当然需要大量的工作,但是由此产生的工作环境是非常值得的。

这篇博文基于我最初在 Quora 上写的的回答

正在寻找一位关于工程文化的演讲嘉宾,参加技术讲座或异地工程活动?关于演讲约会联系我。

是什么让一个工程师在这里获得成功?

原文:http://www.effectiveengineer.com/blog/what-makes-a-new-engineer-successful

这是第一次发表到我的周刊 Q &的一份邮寄名单。每周,我都会挑选不同的读者问题,尽可能诚实地回答。

当你刚加入一家公司时,在最初的一两个月里,你可以做哪些事情来加速你的学习和成长?并推动你成为一个领导者?

每当你开始一个新的角色,很容易感到不知所措。你被涌入的新知识轰炸。你担心尽可能快地加速。你对证明自己感到焦虑。很容易就把头低下,奋力向前,相信这是通往成功的最直接的途径。

深呼吸。

当你开始你的新角色时,你可以做的最有价值的事情之一就是慢下来,向你周围的人介绍你自己,并问他们,“是什么让一个工程师在这里取得成功?”

一个简单的问题被证明是一个强大的黑客。

倾听人们重视什么

最优秀的工程师会分享共同的最佳实践——我在我的书中研究并记录了这一点——但是每个团队所重视的特定的权衡会有所不同。而且因为这个问题可能以前从来没有明确讨论过,答案甚至可能在同一个团队中因人而异!

当你问人们这个问题时,仔细听他们看重什么。你得到的答案将描绘出人们最尊重团队中有经验的工程师的哪些品质。您还会对团队随着时间的推移所建立的工程文化类型有更好的认识。

  • 团队是否持有“快速行动,打破常规”的价值观或者更像是“借助稳定的基础设施快速移动?”
  • 团队重视开拓进取和完成工作吗?还是他们看重在设计选择上更加深思熟虑和深思熟虑?
  • 团队在乎做长期投资吗?还是现在更重要的是快速实验和学习?
  • 代码库的不同部分由特定的人或团队拥有吗?或者代码是集体共享的,每个人都应该在遇到问题时解决问题?

这些价值并不总是显而易见的。通常情况下,新的工程人员需要花费个月甚至的时间,通过他们的对话和他们从其他人那里听到的故事,逐渐建立一个成功工程师在团队中所做的心智模型。

通过这个问题,**你希望通过利用其他人的经验来简化整个过程。**你希望澄清你可能从以前的工程经验中得到的、与你当前团队不匹配的任何假设。

如果你能快速建立一个让工程师成功的心智模型,你最终会得到一张你应该在哪里投入时间的地图。你将从公司的技术、产品和管理领导那里了解人们尊重什么。随后的每一次互动、决策和对话都可以通过这些价值观的视角来看待,从而加速你的学习和成功之路。

通过明确阐述团队的价值观来帮助新工程师

如果你已经在这个团队工作了一段时间,你可以通过让这些价值观更加明确来帮助新员工取得成功——在新员工提问之前回答一个关键问题。

最近在 Quip,我们正是这样做的。我们组织了一个小组讨论,主题是“一个新工程师应该知道什么或在这里做什么才能成功?”我们这些在 Quip 工作了很长时间的人已经将我们如何看待工程的各种心态内在化了。如果我们能够清楚地表达我们已经知道是正确的关键想法,它将允许新工程师更快地收敛到更有经验的工程师会做出的权衡。

从我们的讨论中,我们提炼出一小组不明显但可操作的原则,我们希望新工程师能够更快地吸收。对我们来说,这些包括:

  • 我们对团队和公司有长远的看法。
  • 我们重视工作与生活的平衡,鼓励每周工作 40 小时。
  • 我们共同拥有代码库和文档。
  • 我们相信,我们都会对自己的所作所为或所不为承担全部责任。
  • 我们鼓励提问。
  • 我们行动迅速,不会破坏某些东西(比如安全和隐私)。

我们用具体的例子说明了每一个原则,并把这些原则包含在导师与新招聘的工程人员的谈话主题中。

你为自己的团队阐述的原则当然会有所不同。但是结果是相似的:你会让团队中的新工程师更快地接触到让你的团队变得伟大的原则和价值观。

有疑问? 关注每周 Q & A ,问你一直想知道的难题。

优秀的创业工程师需要具备哪些素质?

原文:http://www.effectiveengineer.com/blog/what-qualities-make-a-good-startup-engineer

不是每个优秀的工程师都能成为优秀的创业工程师。在过去的六年里,我在三家初创公司(Ooyala、Quora 和 now Quip)面试过的一些最有前途的候选人会带来来自谷歌这样的顶级工程公司的五年以上的经验,只是在我们的面试过程中表现不佳。通常,候选人不是一个糟糕的工程师;事实上,他甚至可能在目前的工作中表现出色。我们只是认为他不会成为一名特别优秀的创业工程师。

我花了很多年面试候选人,培训和指导其他工程师,我发现某些品质确实让工程师更有可能在创业环境中取得成功。归根结底,这些品质源于在初创公司工作与在老牌公司工作的一些关键区别。在创业的时候,

我所共事过的最有效率的创业工程师都具备有效驾驭这一局面的技能和决策能力。特别是,它们表现出这 7 种品质的某种组合:

  1. **系统化调试技巧。**工程时间的很大一部分实际上是用来调试和理解一个复杂系统中发生的事情。一位客户报告了一个紧急问题,您必须尽快解决它。服务器的 CPU 负载达到峰值,您必须找出原因。数据遭到破坏,您必须找出罪魁祸首。良好的调试技能能让你更快地完成任务。

    有效的调试需要对问题采取严格、科学的思维方式:制定一个关于哪里出错的假设,然后找出最有效的方法或最小可重复的案例来测试该假设。另一部分包括熟练使用各种工具:帮助识别瓶颈的剖析器,逐步执行代码的调试器,git bisect缩小回归的原因,分析发生的事情的 UNIX 命令行 fu。

    然而,调试的主题不仅仅适用于技术领域。一个产品的增长和使用已经趋于平稳——你如何制定和测试关于用户行为的假设并调试这些趋势?团队没有达到他们的项目目标——您如何调试根本原因是糟糕的项目评估技能、团队沟通不足、过多的上下文切换,还是其他原因?招聘并没有带来你想要的那么多的工程人员——你如何判断问题是否出在你的采购渠道、你的面试、你的成交推销、你的报价等等。?(提示:从数据开始)。

  2. **无畏地投身于你不知道的事物。**作为一名创业工程师,你经常需要钻研庞大而陌生的代码库。您可能需要深入研究您正在使用的开源工具的代码,因为该工具的行为不尽如人意。或者你可能需要理解另一个队友的代码,因为他没有时间修改它。快速浏览大型代码库并专注于相关部分的能力变得至关重要。这种能力很大程度上来自阅读大量代码的经验。另一部分来自于熟悉搜索代码库、跳转到相关部分以及在版本控制中查找相关提交历史的工具——所有这些快捷方式都可以减少理解不熟悉的代码所需的时间。这种无畏精神也可以帮助更成熟的公司,但是你通常可以通过专门研究代码库的一部分并非常了解它而获得成功。

    然而,您将要进入的未知领域不一定是与代码相关的。创业工程师处理客户支持、与销售人员合作评估客户请求的可行性、培训新工程师以及许多其他你可能不熟悉的任务并不罕见。在这些经历中采取成长的心态对做好工作很重要。

  3. 对决策的务实态度。对于大公司来说,坚持表面上良好的软件工程实践,如代码审查和单元测试,可能对帮助组织扩展很重要。^(但在初创公司,在权衡取舍时更加务实,做能让团队更快完成任务的事情是值得的。实用主义意味着知道什么时候打重要的仗,什么时候即使你不同意也最好接受一个决定,这样整个团队才能进步。我见过关于编码风格的战争——关于源代码行是否应该有 80、100 或 120 个字符,以及花括号是否应该从新行开始。但是最终会有许多更困难、更重要的决定需要你花费时间和精力去做。)

    评估大多数权衡的指导性启发最终应该是:“什么行动过程将最终增加团队成功的概率?”许多因素可能会影响这个问题:产品选择、架构权衡、团队文化、人员等等。但许多人也不知道。对于那些没有这样做的人来说,最好的办法是限制讨论时间,做出决定,然后继续前进。

  4. 工具制造思维。工具能让你超越最重要的资源——你的时间——的极限。高效的工程师会开发很多工具,这在初创公司更为重要,因为相对于需要完成的工作量而言,你的时间更加有限。较大的组织可能有专门的工具团队来帮助工程团队更加有效。在初创公司,你作为工具构建者的能力越强,你可以自动化的手动任务就越多。如果其他团队成员也采用这些工具,那么这将是另一个巨大的生产力倍增。

  5. **强有力的多面手。**特别是在初创公司的早期阶段,面临的许多问题不需要专业知识。你的技能范围越广——即使只是对各种技能的最低限度的工作熟悉——你在执行过程中发现的瓶颈就越少。拥有一些基本服务器技能的前端 web 工程师将能够更有效地拼凑原型,而不会被繁忙的服务器工程师阻止。一个具有基本 HTML、CSS 和 Javascript 技能的后端工程师可以在她构建的工具前拼凑一个 web 界面,以便更多的团队成员可以使用它,而不会被 web 设计人员阻止。精通基本数据分析工具的成长工程师将能够分析她正在进行的实验,而不会被数据分析师阻止。

    一个例外是,如果你在一个特殊的技术领域工作,比如一家数据库初创公司,需要深厚的专业知识才能有效工作,那么专家可能会走得更远。此外,创业越晚,就越有可能有足够多的人来担任特定的角色,你可以专门去找别人帮忙。

  6. 渴望成为玩家而不是受害者。弗雷德·考夫曼在他的《有意识的商业》一书中描述了我们可以对任何问题采取的两种态度。我们要么成为受害者,将任何问题(项目截止日期的延误、失败的产品发布或与队友的冲突)归咎于外部环境。或者,我们可以成为参与者,确定我们影响范围内的方面,并将我们的精力和努力集中在我们实际可以影响和解决的方面。受害者心态可能会让我们在短期内感觉更好,但最终采取玩家心态是有效取得进展的唯一途径。

    在创业公司工作可能会有压力。在高度紧张的情况下,很容易陷入指责游戏,逃避责任,而不是对你控制下的部分承担个人责任。不幸的是,这条道路只会导致失望和怨恨。

  7. 勇气,加上学习和反思的意愿。对其他品质的一个重要观察是,它们都是可以学习的技能——假设你有足够的动力。学习这些技能的长期动力来自一种叫做毅力的品质。安吉拉·李,在她的 TED 演讲中“成功的关键?Grit 给出了一个很好的定义:

    勇气是对长期目标的热情和坚持。毅力就是有耐力。勇气是坚持你的未来,日复一日,不仅仅是一周,不仅仅是一个月,而是几年,努力工作让未来成为现实。

    如果你愿意花时间定期回顾,你会明白自己的弱点和需要改进的地方。随着时间和经验的积累,你会成为一名更好的创业工程师。早期的一点指导和指引也能帮助你朝着正确的方向前进。

这些技能对于更成熟公司的工程师来说也是有用的;如果你正在创业,它们就更重要,因为时间更有限。此外,缺乏这些技能并不一定意味着你是一个糟糕的工程师。这只意味着你现在可能不太适合创业环境。但是如果你决心成为一名优秀的创业工程师,不要让这阻止你。想出一个行动计划来提高这些技能。

我在谷歌工作期间学到和错过的宝贵经验

原文:http://www.effectiveengineer.com/blog/what-working-at-google-will-teach-you

这篇文章发表在我的每周 Q 邮件列表和 Quora 上。问你的难题。得到我诚实的回答。

问题:作为一名软件工程师,在谷歌工作真的能让你发挥出最好的水平吗?

我大学一毕业就加入了谷歌的搜索质量团队。从 2006 年到 2008 年,在那里的两年时间里,我学到了很多关于如何成为最好的软件工程师的知识。

我从业内资深人士那里学到了编程最佳实践,他们已经将几十年(甚至可能几个世纪)的集体经验提炼为宝贵的文档,记录了该做什么和不该做什么,以及它们背后的基本原理。

我从约书亚·布洛赫(Java collections API 的首席架构师)那里学到了如何设计好的 API,从吉多·范·罗苏姆(Python 的发明者)那里学到了精彩的见解。一直以来都有很多教育技术讲座。

我认识到投资简单的积木有多重要。Google 的大部分内容都是建立在共享的抽象之上的,比如协议缓冲区和 MapReduce,假设这些原语是可用的,那么多繁琐的管道和困难的问题就变得容易了。

我了解到拥有大量数据如何胜过智能算法。彼得·诺维格称之为“不合理的数据有效性”。

当一万多名工程师正在为一个超过 20 亿行的代码库做出贡献,并且任何减少混乱和复杂性的事情都会带来巨大的回报时,我学到了简单、看似琐碎的选择,比如关于如何缩进代码的标准化约定,是多么重要。

我了解到代码评审在衡量代码质量方面是多么有用,以及对我正在编写的代码获得迭代反馈是多么重要。

我了解到它在传播工程文化价值观方面有多么强大。每周,一群谷歌员工会在浴室隔间贴上一页“厕所测试”传单,分享一周的测试技巧。多么古怪有趣的传播知识的方式。

我了解到投资入职材料对培养团队新成员有多重要。我搜罗了所有我能找到的代码实验室、最佳实践指南和设计文档,我很感激这些资源对于一个想要尽可能学习的人来说是如此容易获得。

所有这些都有助于我今天作为一名工程师的效率。

但也有很多东西是我在谷歌没有学到的——这些东西是我在其他地方学到的,我认为它们是作为一名工程师高效工作的核心。

我没有学会如何真正严谨地安排工作的优先顺序。谷歌是一个有趣的游乐场,我的项目从来没有真正的截止日期。从那以后,我在初创公司工作,那里的工程师做出的选择直接影响到公司的生存。这些经历促使我努力思考在哪里我可以用我的时间创造最大的影响。

我不知道在一个小公司里,授权和所有权的程度是可能的——作为一名工程师,你所做的决定和你的谈话可以决定业务的增长和方向。

我不知道拥有一个真正快速的开发循环意味着什么。谷歌的资源密集型问题通常用 C++ ^(来解决——包括它的网络服务器——这意味着对一个网络应用程序的修改可以很容易地花几分钟来编译。现在任何长于几秒的开发循环都感觉很慢。)

我没有学会如何在建立“正确”的东西和更快地行动之间进行权衡。谷歌的大多数东西都是为规模化而设计的。这意味着,为了更快地将产品或功能呈现在用户面前,更难做不可扩展的简单事情,因此您可以了解自己是否正在构建正确的东西。这是我在谷歌时不得不放弃的一种模式。

我没有学会如何突破迭代和部署生产代码的速度极限。在谷歌,我团队的代码每周部署一次。当我在 Quora 工作时,每次提交都直接进入生产,我们每天要部署 40-50 次代码。它让我看到了一种完全不同的工作方式,我以前从未意识到这是可能的。

我没有学会如何用迭代速度来权衡代码质量。在谷歌,每一段代码都被审查,因为受众很大,但这也意味着代码审查经常成为瓶颈。从那以后,在我工作过的每一家初创公司,工程师都会根据风险和影响有选择地审查代码,这让我们可以更快地迭代。

我没有学会如何将用户增长和参与作为一个有待优化的系统进行推理——这是我从 Quora 和 Quip 那里获得的一个视角,它为你的影响提供了一个有价值的视角。

我没有学会如何要求和给予直接反馈来加速我自己和我的团队的成长。谷歌的反馈系统与绩效评估挂钩,一年两次从同行那里获得文本反馈太慢了。在 Quip,我们一直在尝试轻量级的每周反馈会议,它在连接和发展团队方面有着惊人的价值。

所有这些我在谷歌没有学到的东西,我后来都学到了。一些是我在初创公司工作期间学到的——Ooyala、Quora 和 Quip。

其余的是我为写书采访硅谷的工程领袖时,在两年的探索中学会的。我会问人们,“你共事过的最有效率的工程师和其他人有什么不同?”“在过去的一年里,你学到的最有价值的一课是什么?”他们回答中的一些主题与我在谷歌的经历相符。其他人——尽管他们会一次又一次地出现——令人惊讶地没有出现。

如果你想更深入地了解我上面分享的经验——以及我从谷歌、脸书、Twitter、LinkedIn、Airbnb、Reddit 和其他顶级科技公司的一些最优秀的工程师那里学到的东西——我已经免费收集了我收集的最好的资源和行之有效的技术,以成为你能成为的最好的工程师。它们基于我为这本书进行的采访。

这里有什么可能?

原文:http://www.effectiveengineer.com/blog/whats-possible-here

这个故事为我捕捉到了 2017 年可能发生的事情。

一家鞋厂派遣两名营销侦察兵到非洲的一个地区探索业务扩展的机会。一个人报告说,“情况没有希望了。没人穿鞋。”

另一个人热情地回信说:“大好商机!他们没有鞋子。”

完全相同的观察。两种截然不同的解释。

这个故事由 Rosamund 和 Benjamin Zander 在 可能性的艺术 中讲述,说明了我从 2016 年学到的最大一课:我们发明了许多自己的限制。通过这样做,我们无意中成为了自己成功的最大障碍。只有把这些解释重新组织成可能,我们才能为自己创造更多的选择。

你的哪些局限是自己发明的?

我们多久扮演一次第一侦察兵的角色?我们有多少次采纳了限制我们自己的解释,甚至在给他们机会之前就否决了他们的想法?

假设我们看到客户如何使用我们的工作而受到激励,但我们不愿与他们互动,因为那是产品经理(PM)的工作。我们编造了一个故事,说我们的工作只是编码,参与其他活动不会增加足够的价值。

但是这里有什么可能呢?我们的工程和解决问题的思维定势可以带来哪些尚未出现的洞见?对于项目经理来说,与一个深切关心客户的工程师一起工作,而不是仅仅做他被告知的事情,会有多满足?如果我们能更清楚地了解客户的问题,我们还能想出什么更好的主意?

或者说我们有关于如何改进团队的具体建议,但我们没有站出来领导,因为我们的经理没有要求我们这样做。我们采取一种限制性的解释,即必须赋予主动性和责任。

这里有什么可能?如果我们不退缩,我们团队的生产力或我们产品的影响力将如何受益?如果我们的经理真的不知所措怎么办——如果有人主动帮助团队超越目标,他们会有多感激?

或者说我们不会向队友寻求帮助,因为我们害怕浪费她的时间。我们在脑子里编造了一个故事,说我们在拖团队的后腿。

我们可以选择告诉自己一个不同的故事。如果我们能更快成为团队中富有成效的成员,我们能做些什么?我们的队友在帮助我们取得成功的过程中发挥了关键作用,他们会有什么样的感受?

或者说我们羞于分享我们的贡献,因为我们不想宣传自己(这一点我也有错)。我们告诉自己,营销和自我推销是不相称的,工作应该是它自己的奖励。

如果我们的故事引导并激励其他人去争取更多,成为更好的自己,会怎么样?

当然,仅仅提出一种解释并不能使它成为事实。但是——这是关键——只有通过重新构想这种情况,给我们自己一个机会,这种情况才会成为我们可以开始解决的问题。

看到独特商机的营销侦察员不会在一夜之间取得成功。但这确实意味着巴塔鞋业——这个故事所基于的制鞋公司——在 19 世纪末成功地在非洲建立了一个市场,而其他制鞋商认为这是不可能的。

问问你自己,“这里有什么可能?”

在假期里,我想回馈帮助我走到今天的读者和支持者们。特别是,我想给工程师们提供免费辅导,因为我知道少量的辅导——即使是 12 分钟的辅导——也能带来巨大的转变。

但我也知道人们通常不重视免费的东西。我担心教练会议可能会充斥着没有出现或毫无准备的人,我会浪费我的时间。所以我几乎放弃了这个想法。毕竟,这不是我要做的事情,而且因为我还没有和任何人分享我的想法,没有人会知道我是否默默地失败了。

我可以看到教练的价值,但我被卡住了。我给自己讲了一个限制这种情况的故事。

我深吸一口气,问自己:“这里有什么可能?”我怎样才能免费提供一些东西,并确保报名参加培训的人真正重视它?

就在那时,我突然想到了一个主意。我最终组织了一个项目,提供 30 分钟的无偿辅导。作为交换,受辅导者向Code.org捐款——这笔捐款是我和奎普匹配的,这样我们一起就能把捐款的影响力提高 4 倍,让每一笔捐款都具有高杠杆效应。

由于这种重新规划,我有了一个不可思议的机会,在 5 天的时间里指导了 28 位有才华的工程师、经理和首席技术官。这是一次令人精疲力尽的奇妙经历——我的朋友戴安娜称之为“极限教练”——同时也很充实。我们总共筹集了 7200 美元,足以帮助 7200 名儿童学习计算机科学入门课程。

随着 2017 年的开始,我向你发出挑战,问问你自己什么是可能的:

  • 我们做了哪些有助于我们看到的东西并限制了我们能力的假设?
  • 当我们把周围的人视为盟友而不是障碍,当我们共同努力实现我们都想要的东西时,什么是可能的?
  • 我们玩大的不玩小的会怎么样?

2017 年及以后的任务

当我问自己这些问题,思考做大意味着什么时,我意识到我未来几年的使命宣言是什么:

“为工程师和技术领导者提供工具和思维方式,让他们发挥最高水平,从而创造他们力所能及的有意义的影响。”

我想分享我学到的一切,以及其他工程领导者学到的东西,这样你就可以使用这些工具来推动你自己的成功。

这是一个大胆的(当然也是可怕的)任务。我一个人做不到。

对于 2017 年,我已经找到了自己的教练来帮助我围绕我的目标建立更多的清晰度,以便我可以在你们的职业生涯中最好地帮助你们。

我也需要你的帮助。你可能只认为自己是一个读者,但你也是一个盟友。我想和你一起设计我能帮助你在职业生涯中学习和成长的最佳方式。

以下是你可以提供帮助的方式。花点时间,问问你自己,“三年后,也就是 2020 年,你想做什么?那会是什么样子?”

在评论中分享你的梦想,或者在 dreams@effectiveengineer.com 给我发短信。我会牢记你的梦想,来指导我今年的工作项目。


感谢陈晓阅读本文初稿。

当骄傲阻碍了你最好的工作

原文:http://www.effectiveengineer.com/blog/when-pride-gets-in-the-way

Slack 的创始人兼首席执行官斯图尔特·巴特菲尔德希望押注一个名为“机器人团队”的想法,以解决该公司最紧迫的产品挑战之一。

该公司测试版发布一年半后,每天有超过 50 万人在使用其团队消息产品。^(但为了保持这种快速增长,Slack 需要拓展新的受众,并超越技术领域的早期采用者。)

但是,你如何向一个以前没有使用过企业通信产品的新用户传达 Slack 的价值呢?在有人注册他们的团队之前,你如何解释在一个地方拥有直接消息、渠道和服务集成的好处?

这就是机器人团队想法的由来——新客户可以通过与一组计算机控制的机器人聊天来尝试 Slack。通过模拟,他们会对产品的工作原理有更清晰的了解。这是一个合理的假设——毕竟,还有什么比使用产品更好的了解产品的方法呢?

工程团队估计,构建能够与新用户进行基本交互的足够好的机器人至少需要 6 个月的努力。另外,他们在这上面花的时间越多,他们就越有可能成为机器人团队。然而,存在一个风险,即假冒团队可能会迷惑用户——*这些机器人是谁,它们为什么会在这里?*半年后,团队可能会在情感上如此依恋并投入到这个想法中,以至于即使这个想法不太好,也很难改变方向——这个想法会有任何问题吗?还是会有更好的 bot 质量来解决这些问题?

那么——团队应该接受这个赌注吗?

骄傲对于工匠来说至关重要

作为工匠,我们为自己的作品质量感到自豪。

我们希望将我们的名字贴在人们喜爱的产品上,贴在让用户愉悦的体验上,贴在优雅地解决技术问题的代码上,贴在能够可靠地扩展以处理输入流量的系统上,甚至贴在巧妙地解决看似不可能的问题的黑客上。

我们希望能够自豪地指着我们已经构建的东西,告诉人们,“这是我构建的”——而不是躲在角落里,因为他们指出代码是如何充满 bug 或复制粘贴,或者产品体验是如何缓慢或混乱。

对工作的自豪感让我们保持高度的动力,这对于制造高质量的产品至关重要。如果我们不为我们已经建立的东西感到自豪——这可能发生,例如,当业务截止日期迫使我们增加越来越多的技术债务时——我们会感到精疲力竭。

然而,伴随骄傲而来的强烈情绪也会妨碍我们做出最好的作品。

在我们的职业生涯中,我们可能都至少遇到过一次这样的情况,我们承诺做出某个决定——也许是如何构建我们的代码,使用什么架构或设计,或者构建什么功能以及如何构建——却在几周或几个月后意识到我们做出了错误的决定。然而,我们还是会勇往直前,放弃那些不再是好主意、我们不满意的项目。

当我们因为我们构建的“足够好”而有意识地做出这种权衡时,这可能是一个合理的结果。但是当我们拒绝改变方向或放弃工作时——即使那个艰难的决定是更好的选择——那么我们已经让我们对已经建立的东西的情感依恋阻碍了我们。

从心理学上讲,这种情况的发生有很多原因。我们在处理沉没成本方面有困难——承认我们可能不得不放弃我们迄今为止投入的所有工作和努力。

有时候,我们只是想要一个了结——我们只想把事情处理好,然后继续前进。

然而,其他时候,我们担心在我们的同伴面前看起来不好,或者违背我们做出的任何承诺。几个月前,我说服团队中的每个人采用这种方法,我该对他们说些什么呢?如果我违背我的承诺,我会是什么样子?在《T4》的《给予与索取》中,亚当·格兰特将这种现象称为自我威胁,它可能是一种强大的动力,让我们在错误的道路上走得太久。

我们在扭转一个糟糕的决定上的困难大致与我们投入的时间、精力、金钱和情感成正比。当我们在某项努力或决定上投入了个月的时候,简单地放弃它们会很艰难或令人沮丧。即使我们从逻辑上说服自己重新开始可能是正确的事情,摆脱我们浪费了大量努力的感觉可能是困难的。

漠不关心不是解决办法——那只会导致低质量和没有动力的工作。

那么答案是什么呢?而 Slack 团队又是如何用 Bot 团队的想法躲过这个陷阱的呢?

在你过于依赖之前,尽早廉价地验证你的想法

Slack 团队采用了一种聪明的方法来验证 Bot 团队的想法。

作为为期五天的 sprint 的一部分,他们设计并构建了一个新用户体验的外观,他们让团队成员假装是机器人,以准机器人的方式发送和回复信息。这种体验肯定无法扩展,但是对五个用户进行测试来了解这个想法是否有价值已经足够了。

机器人团队的想法失败了。只有五分之一的人喜欢与他们认为是电脑控制的队友交谈,对这种体验的反馈从“她很困惑”到“我不太确定这是什么。”他们最终放弃了 bot 团队的想法,转而关注其他解释产品的方式。

该测试最终为团队节省了至少六个月的工程工作,他们可以轻松地转移到不同的想法,并获得更好的结果。但更重要的是,这种方法意味着团队避免在 Bot 团队想法上投入太多感情——这肯定会发生在由首席执行官支持并工作了半年的项目上。

我们在某件事情上工作得越久,我们的感情就越深厚。因此,如果我们能够减少评估一个想法所需的初始投资,我们就更愿意做出正确的决定,然后离开。

在我们走得太远之前,我们通过尽快用真实的反馈来验证我们的方向。

当我们迭代得更快,当我们将反馈整合到迭代循环中时,我们对任何特定想法的情感投入就更少。毕竟,我们只是在测试不同的想法,看看哪个能坚持下去。我们不太可能将我们的声誉与任何特定的人联系在一起。这给了我们追求最有可能成功的路线的自由和信心。这种情感依赖的减少是快速迭代速度的一个好处,这一点并没有被普遍强调。

那么,我们如何构建工作流来持续获得早期反馈呢?以下是一些建议:

  • 当构建新的东西时,写一个简短的设计文档,突出突出的细节,并在开始构建之前在团队中传阅以获得反馈。在 Quip,这已经成为我们在 Quip 文档上所做的工程流程的正常部分。

  • 当你追求一个有风险的想法时,优化学习未知的东西,并尽早降低项目的风险。不要为如何完成它或扩大它而优化。我在谷歌工作期间,我看到的一个常见的反模式是,许多工程师和产品团队会构建第一个版本来应对谷歌的规模——这意味着更少更慢的迭代和更昂贵的失败。

  • 尽可能构建一个最简单的产品版本来收集用户反馈。或者更好的是,像 Slack 团队那样更进一步,只构建该版本的外观,您可以首先向用户展示,以进一步验证您的产品。

  • 在投入精力解决你认为可能是他们的问题之前,先进行研究,并与真正的用户和客户交谈,了解他们的棘手问题和需求。像对讲机这样的工具让团队更容易与用户互动并收集真实的反馈。

  • 积极推迟任何与在用户面前发布你的第一个版本无关的工作。尽快关闭您产品的反馈回路。

  • 运行持续用户测试来建立一个健康的节奏来验证你正在做的事情。在 Quip,我们有时会每周运行多达 12 次用户测试,以建立对我们选择的信心。

通过采取“验证第一”的心态,我们可以剔除那些最终失败的有希望的想法,并为推出那些我们更有信心的想法而自豪。

我如何告诉我的团队增加工作时间以赶上发布日期?

原文:http://www.effectiveengineer.com/blog/why-overtime-doesnt-work

这篇博文基于我在 Quora 上写的回答

**在告诉你的团队增加工作时间之前,确保你有一个切实达到发布日期的现实计划。**否则,从长远来看,你的最佳策略可能是要么根据你的团队目前的进度,重新定义你的团队在该日期之前可以交付的产品,要么将截止日期重新设定为更现实的日期。

到目前为止,我已经参与了两个主要的、历时数月的项目,其中一位雄心勃勃、用心良苦的工程经理推动团队加班加点,以冲刺项目的尾声。在每一个案例中,团队都由一群有才华、有奉献精神的人组成,他们试图在一个我们认为一旦失败就会影响业务的项目上赶上一个积极的截止日期。我们从每周工作 60 小时到大约每周 70 小时。在每种情况下,经过几个月的冲刺,项目仍然没有完成。事实证明,我们不是在马拉松的最后冲刺阶段冲刺,而是在接近中间的某个地方开始冲刺。

这些经历让一些团队成员精疲力竭,其中一些人后来离开了,其他人需要一段时间才能恢复过来。目前还不清楚在这两种情况下,更多的工作时间是否真的会带来更多的进步,加班的决定虽然在当时看起来是合理的,但从长远来看,对两个团队都不利。这些项目给了我们一个惨痛的教训:仅仅因为你真的希望某个项目在某个日期前完成,并不意味着它会更现实。不要把积极的思考和现实的乐观混为一谈。

为什么加班不起作用

当一个项目落后时,你想的可能是这样的事情:团队落后于估计的进度 25%,所以你需要让团队投入 25%的时间,在接下来的两个月里每周工作 50 小时,而不是 40 小时,以便赶上最后期限。这种逻辑在实践中通常行不通,以及为什么工作更长时间不一定意味着按时发布,原因有很多:

  • 随着工作时间的增加,每小时的生产率将会下降。如果你的团队已经习惯了全年每周工作 40 小时的生活方式,那么额外工作时间的边际生产率很可能会低于平均水平,甚至可能是负数。疲劳和睡眠减少最终会损害认知功能,降低工作质量。

    萨拉·罗宾逊(Sara Robinson)的“恢复每周 40 小时工作制”和埃文·罗宾逊(Evan Robinson)的“为什么紧缩模式不起作用”,很好地总结了 150 年来关于长时间工作会降低生产率的研究 19 世纪 90 年代,当雇主们尝试 8 小时工作制时,他们实现了更高的人均总产量。西德尼·查普曼在 1909 年指出,加班导致的生产率迅速下降;工人们开始犯一些如果他们休息了就不会犯的错误,他们的产量是以随后几天的产量为代价的。^(亨利·福特于 1922 年采纳了每周 40 小时工作制,因为多年的实验表明这能增加工人的总产量。)

    汤姆·沃克在《繁荣契约》中写道:

    “产量的上升或下降与工作时间不成正比,这似乎是每一代人都必须重新学习的一课。”

    边际生产率的下降意味着你不会得到你期望的额外 25%的产出,即使每周总产出确实增加了。但是 1980 年的一项名为“建筑项目的计划加班效应”的研究甚至对每周产出会增加的假设提出了质疑:

    “如果每周 60 小时或以上的工作时间表持续超过两个月,生产率下降的累积效应将导致完工日期的延迟,超过同等规模的工作人员每周工作 40 小时所能实现的延迟。”

  • 很可能你的进度比你实际想的要慢。产生准确的项目评估是工程中最困难的任务之一。进度落后意味着前几个月的工作被低估了。所以要么只是过去的工作被低估了,要么更有可能是整个项目被低估了,包括剩下的两个月。

    使这种影响更加复杂的是,我们往往更擅长估计项目的开始,在那里工作集中在我们理解的具体开发任务上,而不是项目的结束,在那里团队经常低估集成测试需要多长时间,每个意外的问题都会使计划推迟一周或更长时间。

    弗雷德里克·布鲁克斯在 神话人月 中捕捉到了这种效果,他写道:

    “尤其是没有留出足够的时间进行系统测试,后果尤其严重。由于延迟发生在时间表的末尾,所以几乎在交付日期之前,没有人会意识到时间表的问题。”

  • 额外的工作时间会让团队成员筋疲力尽。额外的时间来自于某个地方——也许是本来应该和朋友或配偶一起度过的时间,锻炼、休息、睡觉或其他事情。这种恢复时间是以紧张的时间为代价的,而且有让团队成员精疲力竭的风险,这种风险很难量化。

    Peopleware 中,汤姆·狄马克和蒂莫西·李斯特记录了一种他们称之为“加班时间”的现象,即加班“几乎总是伴随着同等时间的补休时间,而工人们则在赶他们的生活。”^(他们进一步补充道:)

    “根据我们的经验,加班的积极潜力被过分夸大了,而其消极影响却从未被考虑过。这种负面影响可能是巨大的:错误、倦怠、加速流失和补偿性的“时间不足”。”

  • 加班会损害团队活力。可能并不是团队中的每个人都有在额外的时间里投球的灵活性。也许某个团队成员家里有孩子需要照看,不得不长途通勤,不能长时间工作,或者已经计划了在接下来的几个月中进行为期两周的旅行。曾经有一种公平的情况,团队凝聚在一起,每个人通过工作预期的 40 个小时来承担自己的责任,而现在有一种情况,那些工作更多时间的人不得不承担那些不能或不工作的人的责任。结果可能是曾经快乐的团队成员之间的怨恨或怨恨。

  • **可能需要额外的开销来管理赶在截止日期前的工作。**管理额外工作的额外站立和会议往往是相当典型的,因为你会希望团队进行沟通,以确保每个人都在做正确的事情。不幸的是,这种额外的通信开销也是大多数估计中通常不包括的时间。

  • 临近截止日期的冲刺刺激了技术债务。几乎不可避免的是,当你要求一个团队加班以赶上最后期限时,他们会走捷径,抄近路以达到里程碑。也许他们会足够负责任,在项目结束后记录下重新访问黑客,但他们必须优先处理下一个关键项目。项目结束后,团队可能会留下一堆必须偿还的技术债务。

但那不会发生在我身上

尽管有这些长期成本,我认识到改变路线和对发射日期说不的困难。也许组织中的每个人都期待这次发布已经有一段时间了。也许这个项目是如此重要,以至于有些人认为如果它被延迟,企业将会失败。也许你担心如果团队错过了最后期限会发生什么。或者也许你认为你的团队和情况可能会有所不同。

不管是什么原因,如果你仍然想让团队工作更长时间,我建议你把沟通的重点放在以下几个方面:

  • **了解并沟通时间表延迟的主要原因。**发展势头是否真的因为人们的懈怠而放缓,或者项目的某些部分比预期的更复杂、更耗时?如果你不了解原因,那么你就不能自信地说,在接下来的两个月里,同样的问题不会继续存在。

  • **向团队解释一个现实的项目计划和时间表,说明增加工作时间实际上意味着如何以及为什么要按时发布。**仅仅告诉团队他们落后是不够的。如果你真的不能拿出一个详细而现实的计划来达到目标,那么这就是一个危险信号,表明你比你想象的落后了。

  • **确保团队中的每个人都认同你的新时间表。**如果团队中的关键人物不相信你的时间表的某些部分是现实的,那么你需要考虑你可能把你想在某个日期之前完成的事情和在那个日期之前完成的现实的事情混为一谈了。如果你没有得到每个人的认可,那么只有一些人会加班,即使不考虑不公平的团队动态,你也可能无法按时完成任务。

  • 关注项目、团队或组织的总体使命,以及为什么满足启动日期对该使命至关重要。如果你不能把每个人都团结起来,那么这是另一个危险信号,每个人都不会像你一样有动力加班。

如果在这两个月的过程中,你发现自己离修改后的时间表越来越远,准备好放弃冲刺吧。接受这样的事实:你可能在马拉松中途冲刺,而终点线比你想象的要远。要求团队更加努力工作不太可能解决问题。减少你的损失,努力想出下一步该做什么的应急计划。

虽然错过截止日期可能不好,但更糟糕的是耗尽团队的精力,仍然错过截止日期,并且在截止日期到来时没有计划。处理错过的最后期限不会因为拖延而变得更容易。

试图赢得一切的麻烦在于

原文:http://www.effectiveengineer.com/blog/winning-isnt-always-the-goal

我喜欢争论。

事实上,我非常喜欢它,在我的高中和大学时代,我参加了五年多的辩论队。周末,我们会去附近校园参加比赛,和其他同学讨论重要的社会问题。

人类基因工程在道德上是否正当?美国用经济制裁来实现外交政策目标,道德吗?高校是否有道德义务禁止校园仇恨言论?在刑事司法制度下,暴力少年犯是否应该被当作成年人对待?

辩论是我高中时期唯一最有价值的活动。它教会了我如何清晰地表达我的想法,如何在公共场合演讲,如何组织我的写作,以及如何使用逻辑和修辞来说服我的观众。

但辩论也教会了我一个坏习惯——讽刺的是,这个习惯让我在家里和工作中更难有效沟通——我花了好几年才改掉。

辩论教会了我争论每一个观点,并努力赢得每一场辩论——很难说什么最终会动摇法官。它教会了我如何继续争论,即使我不相信我的立场——因为我们在比赛回合之间交替站队,我们的个人立场无关紧要,我们必须擅长争论正反两方面。它教会我永远不要承认我的对手是对的——你不能在一轮辩论中中途放弃。

事实证明,对于生活和工作中我们关心的许多事情来说,获胜并不总是目标。事实上,如果你试图赢得一切,你几乎肯定会开始失去重要的目标。

赢太多的麻烦在于

阻碍领导者进一步成功的最常见的行为特征是他们太想赢了。

这是马歇尔·戈德史密斯在指导了 150 多名首席执行官和管理团队后学到的东西——他们中的许多人在财富 500 强公司——并在他的书 中分享道,让你在这里的不会让你在那里

当有人最终承认他做了一个你曾反对的错误决定时,获胜的欲望驱使他说“我早就告诉过你”的冲动。它导致我们放下或忽视我们的朋友或队友来感觉高人一等。它激励我们隐瞒信息,让自己比别人更有优势。当我们犯错时,它会阻止我们承担责任和承认错误。

正是这种获胜的欲望——不管胜利是否重要——让许多最初成功的人苦苦挣扎。不幸的是,我们在许多关系中的互动——不像辩论——不是事务性的。辩论,你争论 45 分钟,你赢了或输了,然后你继续前进。在我们的个人和工作关系中,今天的互动会影响明天。

我的妻子可以告诉你,我过去常常争论每一个观点,即使我知道我错了,这让她非常恼火。对我来说,这是一次智力锻炼——很有趣,而且我很擅长。

我花了很多年才足够成熟地意识到,这种方式实际上限制了我们谈话的开放性。通过试图赢得每一场争论,我增加了每次谈话所需的能量,减少了她分享想法的动机——毕竟,如果我只是要与之争论,为什么要提供诚实的反馈呢?当沟通中断时,增长就会停滞。

这一课适用于个人和工作关系。关于意志力的研究表明,我们每天的能量是有限的。为了提高效率,我们应该把精力花在最有效的活动上。同样,当涉及到我们的人际关系时,无论是与家人、朋友还是同事,我们可以付出的善意都是有限的。为了有效,我们应该在真正重要的问题上运用这种善意。

关键问题:你的目标是什么?

想一想工作中的冲突,你花费了大量的精力去说服别人正确的 T2 做事方式。

也许你在争论一个特性应该如何构建,或者一个系统是否应该以某种方式构建。也许你正与另一位工程师或产品经理就谁应该领导团队发生冲突。也许你的倾向总是指出队友的提议有什么问题,而不是突出好的地方。

暂停一下,问问你自己,“我在这个互动中的最终目标是什么?”

你的目标是以你的方式完成某事,还是你认为是正确的方式,或者实际上是更大的事情?例如,如果你的目标是发展一个成功的团队,你最好鼓励你的队友为自己思考和学习。如果你的目标是制造一个人们喜欢的产品,也许你的精力应该花在集思广益和倾听更好的想法上,而不是如此执着于自己的想法。

无论你的目标是什么,重要的是要跟进,“赢得互动真的能让你更接近目标吗?”

当你停下来思考时,你会发现赢得争论根本不会帮助你实现目标。在这种情况下,我发现有两种强有力的方法可以帮助消除紧张,有效地推进对话:

  1. “我知道你会怎么想……”从这句话开始,你需要从对方的角度去倾听和思考问题。这表明对话不仅是关于你自己的想法,也是关于他们的想法。

  2. “你说得对。”当别人是对的时候,明确地承认这一点向他们表明,他们的意见被听取了,你并不只是想赢得每一场争论。特别是当情绪高涨时,这有助于建立良好的意愿。

这两种方法无疑帮助了我在家里的谈话——当获胜不是目标时,抑制获胜的欲望使我成为一个更好的倾听者,并导致更健康和更富有成效的对话。

他们也帮助我成长为工作中的领导者。当人们提出与我自己的心理模型相冲突的主张时,理解是什么导致他们得出特定的结论——而不是彻底否定他们的想法——通常会揭示出我没有考虑到的问题。同样,通过首先关注建议或提案有希望的方面,而不是通过指出错误来试图获胜,积极的能量通常会带来比其他方式更高质量的想法。

关系——无论是在工作中还是在家里——都不是输赢的问题。也不是对与错的问题。它们是关于找出什么能实现你关心的目标。

关系是建立起来的,而不是赢得的。

感谢陈晓对本文的反馈。

车间

原文:http://www.effectiveengineer.com/blog/workshops/

我教授工程师和技术领导者有效创造有意义的影响所需的工具。

我是 Quip 的早期工程师,在 Quora、Google 和 Ooyala 都领导过团队。

posted @ 2024-10-31 16:51  绝不原创的飞龙  阅读(12)  评论(0编辑  收藏  举报