在《Rework | 重来:更为简单有效的商业思维 》这本书里,Basecamp 的 David Heinemeier Hansson 和 Jason Fried 说要“开除工作狂”,但《从 0 到 1》的作者 Peter Thiel 却说绝佳的工作条件,(比如像Google)是需要超过十倍的技术力来支撑的,没有其他捷径。
比尔·盖茨在 1983 年说过:
你必须觉得这个行业很好玩。你得晚上回到家还找电脑杂志来看,否则你的波长会跟不上(在微软的)这些人。
所以我们应该相信谁呢?你的人生一定要活在程序设计中才能当个好的程序员吗?
每周 40 小时工作时间
许多研究都指每周 40 小时是最有生产力的工时,不过 Malcolm Gladwell 在《异类:不一样的成功启示录》中也提到,要迈向成功需要一万小时的练习。而我的合气道教授则说,练习愈多你就会变得愈强。
约翰·索内兹在《软技能:代码之外的生存指南》一书中,一样强调努力的重要性。尽管他认同“聪明工作”就够了,但也承认他比寻常付出了更多努力,才在在职中创造了惊人的改变。
在一场对谈中,Ruby on Rails 作者,知名程序员 DHH 也曾和连续创业者 Jason Calacanis 一同探讨工作和生活的平衡。Calacanis 认为创业必须全心投入,而最后他们俩都同意“热情”才是最重要的。
以我个人的经验来说,当我做自己热爱的事时,我会:
更有生产力
觉得充满活力而非被工作淹没
我周围的优秀程序员都充满热情,而且每周工作超过 40 小时。我也观察到,热情和努力是发展未来技能的关键指标。
但是一个充满热情的人要怎样在每周工作超过 40 小时的状态下,依然维持生产力?
加入一点创新点子来维持活力
在《程序员思维修炼》一书中,Andy Hunt 提到了我们平常在背景执行的 R-mode 工作之外,还要找一些空闲来做一些“跳出常规思维”的创意方案。
极限编程鼓励大家维持可持续的开发步调,《代码整洁之道:程序员的职业素养》作者 Robert C. Martin 又叫我们每周工作 80 小时才能保持“专业“。
对我来说,持续在一个项目上做结对编程(Pair Programming)6 到 8 小时就是极限,超过的话,造成的瑕疵就会大于做出的贡献,让我变成「净负生产力程序员」(Net Negative Produced Programmer)。但如同我们同时做一点业余项目(Side Project),那我一天可以坚持写程序的时间就会变多。
我猜有热情的人大概就是这么做,他们会在主要的工作之外安排一些不同的主题来点缀。
他们看关于程序设计的书。
他们有自己的业余项目
他们会读程序设计的文章。
他们可能还会写程序相关的博客,他们可能会参加、举办或是主讲一些聚会。
大部分的时候,做这些都不是为了完成更多工作,而是为了学到更多。我发现身边的杰出程序员都充满热情,而且尽力去增进自己的技术,同时也注意到纯粹过劳的工作狂通常生产力都不高。
为人父母的挑战
我认为比尔·盖茨 1983 年的那段话还没有错。如果你没有热情,那程序员很难做得久。
保持热情的好处在于,我们可以拥有一个活力四射的工作环境,充满变化和新奇,但反面来说,要跟上这样的节奏可不容易。
当程序员愈来愈有经验,就会开始对麻烦的工作失去耐心,然后想要拥有:
强大的编程语言和技术
有效率的工作环境
聪明的同事
不幸的是,当你为人父母,你可能只想有份稳定的薪水来养家,还有一些自己的时间来陪孩子。
这个时候就开始有点棘手了。你既不能跳槽到很酷却高风险的新创公司去做一番事业,你也没办法熬夜挤时间出来增进你的技能。雪上加霜的是,尽管你拥有 10 年的工作经验,懂得各种语言和技术,你的简历上要是没有亮眼的关键字,很多公司连看都不看一眼,这简直就是程序员版本的创新者窘境(创新者的困境),你就像那些老牌公司一样要保证自己不会被新技术挤出市场。
缺乏热情和养小孩,这两点应该能解释人们停止当个程序员的部分原因,而且我马上就想到这种现象带来的两种后遗症:
我们常常要重新发明像轮子一样基本的要素(就是你,那边那个在写 JS 框架的)
随着老手的离去,我们可能会在没有意识到的状态下,忽视了一些可以让我们更有效率的人际互动流程。