成为高效开发者这件事你可以通过经验、书本、或者试验和错误来学习。但成为高效开发者的**有效方式之一是直接向高效开发者学习。我访谈了 Facebook 的几位**高产的工程师,想找到这些开发者实现**高生产力的基础结构是什么。
**级:减少不必要的干扰
这一点似乎很明显,但是正是这些累积起来的小事情**影响我们的生产力。
避免开会
我尽量少开会。例会我一般都不参加。这条未必适合每一个人,因为经理喜欢安排例会,你也不想把经理给惹毛了,但我建议给他看看开会的成本:(10 工程师 x30 分钟)/ 周 +10 分钟任务切换开支=浪费工程师半天时间 / 周,这可不是小数。我总是努力争取用有议题的讨论或者站立会议来代替例会
—匿名
许多工程师都强调必要的时候会议是有用的。但是必须对开会保持批评性的眼光,不开不必要的会。
准备好做小任务
在生成或者修订的时候我会迅速清理邮箱保持收件箱为 0— Michael Novati
有时候在你完成手头任务之后到开会之前会有 5 到 15 分钟的间隔,或者你进行的试运行可能需要花费 1、5 或 15 分钟的时间。对此通常的反应是 “这种时间里面做不了什么大事的。” 这种说法当然没错,许多任务可能都要花 30 分钟到 1 小时的时间才能集中注意力,但并不是所有任务都这样。许多工程师提到自己会做一份小任务清单,这样在每天稍微闲暇的时间里就能把那些事情处理掉。比如处理邮件、diff(参见附注)评审,回复内部帖子,或甚至可以进行小规模的 diff/ 重构,从而提高一天的工作效率。
戴上噪音消除耳机
如果你在成立时间不久的软件公司呆过,你就会注意到那里的办公区域设置是如何的空旷。对于工程师来说这是一把双刃剑。一方面你跟团队的距离可以更加靠近。团队成员间的协作和友情可以一直保持很高水平,问问题很方便,跟同事关系也可以很融洽。不好的是你宝贵的专注度被环境噪音干扰了。当你正在思考棘手问题的时候,声音很大的讨论会赢影响到你的生产力。这时候噪音消除耳机就可以派上用场了。这种耳机的技术已经非常**了,远不止是在你的耳边竖起一道屏障,调大耳机音量。真正的噪音消除耳机能够排除环境噪音并且抑制周边低沉的交谈声。跟 Michael Novati 谈过以后我也买了一副他推荐的耳机,说实话要没了它我都没法干活了。很显然,戴上这样一副耳机进行对比之后,你就会知道办公室的环境噪音有多大。
在别人没法干扰你的时候工作
(关于如何应对干扰)2 年前搬到纽约去可能对我的帮助很大
—Adam Ernst
我通常把更困难更复杂的任务留到星期三(那时候我可以在家工作不受干扰)
—Bob Baldwin
实际上 “正常” 工作时间内我干不了什么事情,只有靠加班时间才能完成事情
—匿名
我通常在早上 6 点到 9 点间能够干的事情比一天其他时间能干的都要多,长时间的不受打断至关重要
—匿名
我得承认,跟这帮工程师聊的**发现之一是他们当中许多都工作很长的时间。为什么他们要干那么久呢?原因挺有趣的。因为只有在早上、深夜、周末这些时间才没人打扰他们。通过寻找一天当中受打断**小的时间,这些人得以推进自己的重大任务,把代码给弄出来。
减少烦人的邮件 / 通知
我会关闭所有非紧急的邮件提醒。只接受需要行动的邮件,并且强迫自己按照合理的频率来检查任务 / 邮件页,把其他东西当成垃圾邮件实际上对我是有帮助的,我错过的东西反而更少了。
— Ari Chivukula
每次收到新邮件时都要停下来去看看的话,你一整天都会被各种干扰打断了。通过减少和过滤通知到只保留必要的那些,你就能在不受干扰的情况下工作更久。
不要失去状态
我被打断(或者必须去洗澡)的时候会在脑中 “保存状态”,就像在 Gameboy 模拟器中保存状态一样,这样回头继续的时候我就可以尽快恢复了。
— Michael Novati
**要在一项相当简单或机械的任务中结束一天。这让你第二天很容易就可以捡回来恢复工作状态,而不是又要从头开始。
—Adam Ernst
对于我来说,当我在认真思考问题时、被打断时、忘记自己在想什么时就会在编程方面会失去状态,也就意味着我需要重新把整个思考过程再过一遍。
当你在工作状态时遇到干扰**的办法之一是推迟干扰。如果你在全神贯注的时候被干扰,那就告诉那个人你稍后会处理,速记一下此事,然后继续工作直到你到达合理的停止点。一旦到达停止点,马上处理完堆积的那些事情。
如果干扰无法推迟,也有很多办法可以 “保持状态”。比如写下自己当前的思考过程,写下失败测试,或者简化正在思考的问题。
第二级:写出 “更好” 的 Diff
好代码意味着很多东西。好代码应该是功能性的,容易评审的,经得起时间考验的,等等。
写更小的 Diff
许多小的 diff 就像是在解决工程问题时 “展示你的工作”
—匿名
我访谈的每一位工程师都非常强调把代码变更拆分为逻辑模块,这样可以让其他人更容易理解,更快接受。通过减少 diff 带来的认知负荷,评审者对于接受变更会更有信心。此外,通过减少 diff 的规模,变更对于评审者来说也没那么令人望而生畏,这样评审效率也会更高。
可以告诉你们的是,这篇文章问到的工程师都是过去 6 个月 Facebook 里面提交 diff **多的人。可能会有两种风格的工程师群体,一群是提交很多小的 diff 的,一群是提交数量较少但规模较大的 diff。
QQ:2290909800 QQ交流群:493076664;97682894;咨询电话(Phone):0371-55397597 15838221845
地址(Address): 郑州市高新区莲花街牡丹路教育科技产业园区B座
蓝鸥HTML5培训 http://hn.lanou3g.com/zt/h5Web/