前言
在创业公司工作的头几年是我职业生涯中最漫长的几年。那是一段无情磨砺自己的时光,其间我经历了个人的迅猛成长和无数的情绪“过山车”。我和团队基本上每周的工作时间都在60小时以上,而且有几个月我们每周要苦干70到80小时。我会在办公室开始一天的工作,利用午餐时间与团队开会,晚饭后继续在家工作——有时甚至会在办公室工作到深夜。即使在假期里探亲访友时,我也会挤出时间在笔记本电脑上编写代码和回复电子邮件。
毕竟,创业公司的性质意味着我们在与强大的竞争对手的较量中处于劣势。工作越努力,创造的价值就越大,创业成功的可能性就越大,我当时就是这么认为的。
但一些经历让我不得不反思这个观点。我曾用两周时间开发了一个分析模块,但客户却从未使用过;我和团队花几个月时间调整并完善了一些提高网站内容质量的工具,但用户并没有采用。我们的产品每周都会经历流量洪峰,以及随后数小时的服务器连续重启。甚至有一次,我在夏威夷的莫纳罗亚火山徒步旅行时收到短信,被告知客户分析报告的生成系统瘫痪,问我能否看看是什么情况。
我坚持长时间的工作是希望工作能产生有意义的影响力。但我忍不住想弄清楚:每周工作70到80小时真的是确保创业公司成功的最有效方式吗?我们的初衷是好的,但能否更聪明地工作?是否可以缩短一些工作时长,但获得同样的甚至更大的影响力?
在接下来的几年里,我逐渐认识到,延长工作时间并不是增加工作成果的最有效方法。事实上,工作时间过长会导致工作效率降低并产生职业倦怠。当需要修复由于加班和疲劳所导致的错误时,工作产出甚至可能为负数。
要成为卓有成效的工程师,我们需要识别哪些工作能以更少的时间产生更大的影响力。并非所有的工作都能产生相同的影响力。并非所有的努力——无论本意如何——都能转化为影响力。
怎样成为卓有成效的工程师
如何衡量一名软件工程师的工作成效?是看他的工作小时数,付出了多少努力,还是完成的任务量?一位勤奋的软件工程师把所有精力都投入到一个进度延迟且无人使用的功能的开发中,当一天的工作结束时,他并没有产生多大成效。我曾经就是这样的软件工程师,我所认识的很多优秀的工程师也遇到过同样状况。
十多年来,我在许多科技公司做过软件工程师,包括微软、谷歌、Ooyala[1]、Quora[2]和Quip[3]。在此期间,“怎样才能成为卓有成效的工程师”这个问题一直萦绕在我的脑海。我想提升自己工作的影响力,但每周工作70到80小时的状态是不可持续的。所以我开始寻找能够事半功倍的工作方法。
其他人也提过这个问题,特别是在招聘中。我有幸参与了培养工程团队的工作。在这段经历中,我筛选了数千份简历,并面试了500多位候选人,和同事讨论每个候选人的优缺点。每次面试讨论结束时,我们都要做出判断:这个人是否会成长为团队中强有力的贡献者,并高效地完成工作?
我还设计了软件工程师的入职流程和指导计划,并亲自培训了几十名新入职的软件工程师。我所指导的人不可避免会向我咨询:如何工作才会更有成效?找到这个问题的答案,并把技能传授给他人,一直是我孜孜以求的目标。在寻找答案的过程中,我与几十位软件工程领域的领导者进行了深入的交谈。同时,我在过去的几年中花费大量时间阅读了关于生产力、团队建设、个体心理学、商业和个人成长的书籍,尽管这些书大多数并不是针对软件工程师的,但我也从中提炼了一些方法,并进行实验,把它们应用到软件工程场景中。
还有很多提升工作成效的技巧有待学习。但我在自己学习的过程中总结出一个强大的框架,可以用来分析、推断任何工作的有效性。我很高兴能在《卓有成效的工程师》中与大家分享这个框架。这本书研究并说明了如何成为一名卓有成效的工程师,它是我所学到的关键经验和教训的提炼与总结。更为重要的是,它提供了一些可实施且经过验证的策略作为框架的补充,大家可以立即应用这些策略来提高工作的成效。
究竟如何才能成为卓有成效的工程师呢?在直觉上,我们对于哪些工程师能称得上卓有成效有这样一些认知:他们能圆满完成工作;他们能交付用户满意的产品,推出客户愿意付费的功能,构建提高团队生产力的工具,以及部署有助于公司业务扩展的软件系统。卓有成效的工程师会创造出这样的工作成果。
但如果花太长时间来完成这些任务,工程师的效率就可能会被质疑。他们可能很努力,但我们会认为那些使用更少的时间和资源,但取得同样成果的人更有成效。因此,卓有成效的工程师还需要能够高效地完成工作。
然而,效率本身并不能保证成效。假设一位工程师为一个最多只有一百人使用的工具,构建了可以支撑数百万次访问请求的基础设施,那么他的工作成效就很有限。如果一位工程师构建的某个功能只被0.1%的用户采用,而其他功能的使用率可能高达10%,那么他也算不上卓有成效——除非这0.1%的用户带来了超乎寻常的、巨大的商业价值。卓有成效的工程师专注于价值和影响,他们知道选择交付哪些工作成果会更有成效。
因此,卓有成效的工程师是由他们在单位工作时间内创造的价值来定义的。这就是杠杆率,这个概念贯穿全书,我们将在第1章中介绍。
你将从这本书中学到什么
尽管这是一本写给软件工程师的书,但你在书中找不到一行代码。关于不同的软件技术、编程语言、软件框架和系统架构的书和文章比比皆是。然而,技术知识只是卓有成效的工程师必备技能的一小部分。
相对于效率而言,更为重要但往往容易被软件工程师忽视的是元技能。这些技能帮助我们将有限的时间和精力集中在那些成效更高的工作上。本书将详细介绍这些元技能。我向大家承诺,读完本书后你就会得到有一个非常实用的框架,这个框架就是“杠杆率”,它可以帮助我们分析不同工作的影响力。我们可以用本书介绍的实操方法来提高工作影响力,并深入了解软件工程中浪费我们宝贵时间和精力的常见陷阱。
我从自身的经历、与其他工程师的交谈以及对生产力和心理学相关的科学研究中掌握了这些技能。但在本书里出现的远不止我自己的故事。我还采访了硅谷科技公司的高级软件工程师、经理、董事和副总裁,从他们的经历中提炼出提高成效的秘诀。你会读到他们的故事——他们所采用的最有价值的工作方法,以及曾经犯过的最昂贵的错误。尽管每个人的叙述方式都各不相同,但包含了许多相同的主题。
在第1章中,你将了解为什么杠杆率是度量软件工程师成效的标准。在接下来的每一章中,你都会发现一个卓有成效的工程师提升杠杆率的工作技巧,以及对应的研究、故事和示例。你将了解Instagram的联合创始人迈克·克里格(Mike Krieger)遵循了什么样的关键软件工程原则,使一个13人的小团队高效地扩张,并为一个拥有4000万用户的产品提供支持;还将了解Facebook前主管鲍比·约翰逊(Bobby Johnson)在其基础设施工程团队中培养的关键习惯,帮助他支撑Facebook这一社交网络的用户数量增长到10亿以上。你会听到更多来自谷歌、Facebook、Dropbox、Box、Etsy及其他顶尖科技公司的人物的故事,他们分享了关于自己如何成为更有成效的个人贡献者和领导者的理念。忽视这些思维习惯往往会导致惨痛的教训,因此你还会读到一些这样的血泪故事。
本书的主题分为三个部分[4]。第一部分描述了帮助我们更严格地推理以及提高成效的思维模式。首先概述了采用杠杆率的思维模式(第1章),然后展示了优化学习方式(第2章)和定期调整优先级(第3章)如何使我们加速成长并充分利用时间。很多工程实践都是围绕“执行”展开的,第二部分将深入探讨持续提升执行力并取得工作进展的关键策略:提升迭代速度(第4章),正确度量改进目标(第5章),尽早且频繁验证想法(第6章),以及提升项目估算能力(第7章)。卓有成效的工程师不是短期投资者,因此第三部分将转换角度,研究创造长期价值的方法。我们将学习如何在质量和务实之间取得平衡(第8章),最小化运营负担(第9章),以及为团队的成长投资(第10章)。无论你是想增加对世界的影响,更快获得晋升,减少在无意义工作上浪费的时间,还是想在不影响工作成果的情况下节约工作时间,本书都会提供你所需要的工具。本书不是包罗万象的个人全面成长指南,但它提供了一个通用的框架——杠杆率,以此来引导大家将时间投资在成效更高的技能上。我对教学和指导充满热忱,很高兴能与大家分享我所学到的东西。
[1]译注:一家提供在线视频托管服务的公司。
[2]译注:一个在线问答平台,类似于知乎。
[3]译注:Salesforce推出的在线办公协作平台。
[4]编者注:特别提醒,关于原书文后的参考文献,请登录网站www.broadview.com/43588下载。中文版仅保留正文中的参考文献尾注编号,以便读者根据编号查找。