尚学堂 老师好!

上海:15201841284

广州:020-2989 6995

深圳:0755-23061965

武汉:027-8798 9193

西安:029-8822 8155

高效率程序员都喜欢打盹?

  最近,我一直在为一个矛盾的想法感到烦恼:我感觉某一天的工作效率高得离谱,但我也发现我花在工作上的时间并没有减少.而这又催生了另一个矛盾的想法:我看到一些成功的软件公司追捧神奇的10x程序员,同时也鼓励那些花很多时间在个人事情上从而避免被掏空的员工.

  更多精彩内容以及学习资料,尚学堂论坛bbs.bjsxt.com免费下载。

  加入互联网行业找培训机构就来尚学堂IT培训,首创了先就业后付款模式,为更多的学员提供学习机会, 与阿里、百度、 Adobe 、红帽、微软等签订合作协议,共同制定行业培训标准,所学课程受国际厂商认可.

  这些悖论让我感到相当疑惑,我绞尽脑汁,最后得出一个结论,这个结论很好地解释了这些看起来似乎是对立面的现象.

  我之所以用"似乎"这个词,是因为我认为它们其实并不算是真正的对立面.简单地说,虽然我们使用相同的词汇描述程序员的效率,但其实我们讨论的是两种非常不同的效率.

  一方面,效率是指在最短的时间内交付最多的产出.这个可以通过代码量(提交次数、代码行数等)或与开发相关的工作量(文档页数、其他可交付的东西等)来衡量.工作时间越长就意味着更多的产出.

  另一方面,效率是指使用最短的时间和最少的投入产出最多的业务价值.这个可以通过程序员的工作能够为利益相关者(客户、同事等)带来多少真正的利益来衡量.我一直认为,程序员的职责不在于解决技术问题,而是通过技术手段解决业务问题.

  之所以会出现混淆,是因为大多数工作的投入和产出在一定程度上是呈线性关系的.最简单的例子:如果你在工厂上班,那么你工作时间越长,你就会生产出越多的产品.更多的时间等于更多的价值.但在软件开发工作中,时间和价值不一定划等号,而且我敢说,有时候它们甚至是相互对立的.

  时间和价值之间不能完全划等号,有很多原因.有时候一个问题把你卡住了,你抓狂了整整一个礼拜,感觉一事无成,直到最后找出问题的根源,并在10分钟内解决了问题.你可能花一个小时来自动化一个流程,虽然你因此搁置了其他的一些工作,却为其他团队每周节省了数个小时的时间.你可能突然冒出一个想法,为公司的结账通道引入了一个新的变化,从而提升转化率,哪怕是1%的转化率也可能意味着数百万的利润.

  有时候,时间和价值是相互对立的(更多的工作时间意味着更少的价值产出),因为如果以"业务价值"KPI为前提,那么你的产出将取决于很多难以掌控的未知因素.你可能花了一整天尝试解决某些问题,然后回家休息了一个晚上,第二天早上回来继续工作,居然在5分钟之内把问题解决了,或许你会因此认为充分的休息更为重要.

  现在让我们回到"10x程序员"的话题上来.作为一个"老油条",我认为10x程序员只是神一般的存在,或许你们也是这么认为的.不过,如果是以业务价值作为KPI,那么10x程序员是可能存在的.我可以告诉你们的是,现今有很少工程师能够真正给他们的公司带来业务价值.他们解决技术问题,只是因为它们很有趣或者很有挑战性,他们缺乏这方面的经验,而且不是以价值为驱动,所以他们容易跑偏,而他们的领导也不懂得如何更好地调整他们的工作优先级.如果是以价值作为KPI,那么那些正在创造业务价值的工程师就有可能是Nx程序员!

  如果是以这样的KPI为前提,那么"快速进展并突破"可以理解为"在最短的时间内提升创造业务价值的能力,不要太过满足于已经创造的价值,它们仍然有提升的空间".如果"提升创造业务价值的能力"意味着减少工作量并获得充足的休息以便产出高能的价值,那么"快速进展并突破"也并不会给你带来任何压力或投入更多的工作时间.

  行业现状

  当然,并不是所有的公司都会同意我的观点.有些公司是一个极端,比如Uber、Apple等,他们希望顶级的工程师能够全力以赴,最大化他们的产出,以便达成他们想要的业务价值.而另一个极端,比如Facebook、Salesforce等,他们坚持认为工程师应该知道自己应该在什么时候放慢脚步,在必要的时候减少工作时间,以更聪明更周全的方式工作,因为他们相信他们的工程师因此能够在更少的时间里以更少的投入产出更多的价值.

  当然,也有同时持有两种观点的公司,他们也很成功,所以我不认为它们哪个会比哪个更正确.我的观点的核心在于:

  后者并不是悖论,对于这些公司的员工来说,这样做也并非缺乏职业素养.因为软件工作的特殊性,在某些有利条件下产出高能价值是有可能的.

  作为软件行业的工程师,你有在这两种文化(以及它们的折中)中做出选择的权利,与其他行业的从业人员相比,我们真的算幸运的.

  结论

  或许你会问:"10x程序员都会经常打盹吗"?实际上并不全是,可能是刚好让你给撞上了.不过我所看到的很多"业务价值10x"的程序员反而经常这样,因为他们很清楚自己的极限,他们知道什么时候该做一些与工作无关的事情,在得到充分休息之后继续回来工作,然后产出高能的业务价值.他们当中有些人会选择打盹,长时间的打盹,而对于你来说,你需要找到适合你自己的方式(在适当的时候出去散步、通过玩游戏放空你的脑袋、和你的小孩一起玩……).

  那么接下来该怎么做?如果你不清楚该怎么在实际工作当中应用这些想法,可以参考这些必杀技:注意观察当你使用少量的代码解决了一个很重要的业务问题时都发生了什么;注意观察日常工作中是什么让你的产能倍增;不断地了解你自己的极限,改进你的健康状况和精神状态,提升你的效率;遵循你找到的这些模式.在之前的一篇文章中,Redis之父Salvatore Sanfilippo列出了10x程序员应该具备的9种素质.Salesforce的首席工程师Rudy Rigot从另一个角度解读10x程序员.以下内容翻译自作者的博文.

  最近,我一直在为一个矛盾的想法感到烦恼:我感觉某一天的工作效率高得离谱,但我也发现我花在工作上的时间并没有减少.而这又催生了另一个矛盾的想法:我看到一些成功的软件公司追捧神奇的10x程序员,同时也鼓励那些花很多时间在个人事情上从而避免被掏空的员工.

  这些悖论让我感到相当疑惑,我绞尽脑汁,最后得出一个结论,这个结论很好地解释了这些看起来似乎是对立面的现象.

  我之所以用"似乎"这个词,是因为我认为它们其实并不算是真正的对立面.简单地说,虽然我们使用相同的词汇描述程序员的效率,但其实我们讨论的是两种非常不同的效率.

  一方面,效率是指在最短的时间内交付最多的产出.这个可以通过代码量(提交次数、代码行数等)或与开发相关的工作量(文档页数、其他可交付的东西等)来衡量.工作时间越长就意味着更多的产出.

  另一方面,效率是指使用最短的时间和最少的投入产出最多的业务价值.这个可以通过程序员的工作能够为利益相关者(客户、同事等)带来多少真正的利益来衡量.我一直认为,程序员的职责不在于解决技术问题,而是通过技术手段解决业务问题.

  之所以会出现混淆,是因为大多数工作的投入和产出在一定程度上是呈线性关系的.最简单的例子:如果你在工厂上班,那么你工作时间越长,你就会生产出越多的产品.更多的时间等于更多的价值.但在软件开发工作中,时间和价值不一定划等号,而且我敢说,有时候它们甚至是相互对立的.

  时间和价值之间不能完全划等号,有很多原因.有时候一个问题把你卡住了,你抓狂了整整一个礼拜,感觉一事无成,直到最后找出问题的根源,并在10分钟内解决了问题.你可能花一个小时来自动化一个流程,虽然你因此搁置了其他的一些工作,却为其他团队每周节省了数个小时的时间.你可能突然冒出一个想法,为公司的结账通道引入了一个新的变化,从而提升转化率,哪怕是1%的转化率也可能意味着数百万的利润.

  有时候,时间和价值是相互对立的(更多的工作时间意味着更少的价值产出),因为如果以"业务价值"KPI为前提,那么你的产出将取决于很多难以掌控的未知因素.你可能花了一整天尝试解决某些问题,然后回家休息了一个晚上,第二天早上回来继续工作,居然在5分钟之内把问题解决了,或许你会因此认为充分的休息更为重要.

  "10x程序员"和"快速进展"

  现在让我们回到"10x程序员"的话题上来.作为一个"老油条",我认为10x程序员只是神一般的存在,或许你们也是这么认为的.不过,如果是以业务价值作为KPI,那么10x程序员是可能存在的.我可以告诉你们的是,现今有很少工程师能够真正给他们的公司带来业务价值.他们解决技术问题,只是因为它们很有趣或者很有挑战性,他们缺乏这方面的经验,而且不是以价值为驱动,所以他们容易跑偏,而他们的领导也不懂得如何更好地调整他们的工作优先级.如果是以价值作为KPI,那么那些正在创造业务价值的工程师就有可能是Nx程序员!

  如果是以这样的KPI为前提,那么"快速进展并突破"可以理解为"在最短的时间内提升创造业务价值的能力,不要太过满足于已经创造的价值,它们仍然有提升的空间".如果"提升创造业务价值的能力"意味着减少工作量并获得充足的休息以便产出高能的价值,那么"快速进展并突破"也并不会给你带来任何压力或投入更多的工作时间.

  行业现状

  当然,并不是所有的公司都会同意我的观点.有些公司是一个极端,比如Uber、Apple等,他们希望顶级的工程师能够全力以赴,最大化他们的产出,以便达成他们想要的业务价值.而另一个极端,比如Facebook、Salesforce等,他们坚持认为工程师应该知道自己应该在什么时候放慢脚步,在必要的时候减少工作时间,以更聪明更周全的方式工作,因为他们相信他们的工程师因此能够在更少的时间里以更少的投入产出更多的价值.

  当然,也有同时持有两种观点的公司,他们也很成功,所以我不认为它们哪个会比哪个更正确.我的观点的核心在于:

  后者并不是悖论,对于这些公司的员工来说,这样做也并非缺乏职业素养.因为软件工作的特殊性,在某些有利条件下产出高能价值是有可能的.

  作为软件行业的工程师,你有在这两种文化(以及它们的折中)中做出选择的权利,与其他行业的从业人员相比,我们真的算幸运的.

  结论

  或许你会问:"10x程序员都会经常打盹吗"?实际上并不全是,可能是刚好让你给撞上了.不过我所看到的很多"业务价值10x"的程序员反而经常这样,因为他们很清楚自己的极限,他们知道什么时候该做一些与工作无关的事情,在得到充分休息之后继续回来工作,然后产出高能的业务价值.他们当中有些人会选择打盹,长时间的打盹,而对于你来说,你需要找到适合你自己的方式(在适当的时候出去散步、通过玩游戏放空你的脑袋、和你的小孩一起玩……).

  那么接下来该怎么做?如果你不清楚该怎么在实际工作当中应用这些想法,可以参考这些必杀技:注意观察当你使用少量的代码解决了一个很重要的业务问题时都发生了什么;注意观察日常工作中是什么让你的产能倍增;不断地了解你自己的极限,改进你的健康状况和精神状态,提升你的效率;遵循你找到的这些模式.

  更多精彩内容以及学习资料,尚学堂论坛bbs.bjsxt.com免费下载。

  • 北京校区
  • 西安校区
  • 山西校区
  • 武汉校区
  • 深圳校区
  • 上海校区
  • 广州校区
  • 保定招生办
  • 黑龙江项目办

北京京南校区:北京亦庄经济开发区科创十四街6号院1号楼 赛蒂国际工业园
咨询电话:400-009-1906 / 010-56233821
面授课程: JavaEE+微服务+大数据     大数据+机器学习+平台架构     Python+数据分析+机器学习  人工智能+模式识别+强化学习   WEB前端+移动端+服务端渲染

地址:陕西省西安市高新区西安软件园西区创新信息大厦A座三层尚学堂

电话:029-88228155 / 18291433445

山西学区地址:山西省晋中市榆次区大学城大学生活广场万科商业A1座702

武汉学区地址:武汉市东湖高新区光谷金融港B22栋11楼
咨询电话:027-87989193

深圳校区地址:深圳市宝安区航城大道U8智造产业园U6栋3楼
咨询电话:0755-23061965 / 18898413781

上海尚学堂校区地址:上海市浦东新区城丰路650号
咨询电话:021-67690939

广州校区地址:广州市天河区车陂街道大岗路5号中侨广场2栋321室(四号线车陂站D出口,或brt车陂站)
咨询电话:18948349646

保定招生办公室

地址:河北省保定市竞秀区朝阳南大街777号鸿悦国际1101室

电话:15132423123

黑龙江项目办
地点:哈尔滨市松北区博文路青年部落孵化器1层
电话:15321415678
Copyright 2006-2021 北京尚学堂科技有限公司  京ICP备13018289号-19  京公网安备11010802015183   营业执照
网站维护:北京尚学堂科技有限公司昌平分公司