Quora上一名Google工程师Raymond Farias发表的这样一则评论:“我的同事最近和我分享了一个调查,调查指出一名高效的谷歌工程师每天大概会写 100-150 行代码,我认为这个数据绝对远远低估了实际的情况。”为了证明自己是正确的,他统计了自己最高效的日平均代码行数,震惊的发现这个数字是150行。
这个评论在Quora上引起了不小的风波,大家纷纷质疑,每天只能写100-150行代码是不是意味着谷歌的程序员工作轻松、效率低下呢?
其实外界对硅谷公司工作效率的质疑也不是一天两天了。Business Insider上个月还专门对硅谷程序员做了一次专访,揭秘了一群“神秘”的人物:The Coasters。这些人奉行“rest and vest”的原则,不怎么上班也能坐数钞票。
这样的生活听起来是无比美好,但是真相是什么呢?我Google的同事,曾经连续3年获得Top Performer的Yan老师是这样评价的。
Q1. 你对谷歌员工一天只写100-150行代码怎么看?
Yan:用代码行数评价程序员是不公平的。
每天100-150行代码这个数字我觉得还是非常准确的。150行代码已经不少了。在Google这种比较大的公司,程序员解决的问题往往都比较复杂,所以写每一行代码背后的工作量都是很大的。为了写这100多行的代码,你可能要先看懂一个一万多行的code base,然后要参阅很多的reference和document,才能真正理解要做的东西是什么。
另外,Google的风格是比较注重细节,所以程序员往往都是要做到最好这样的一个态度。所以,真正开始代码之前,需要花费的时间是很多的。有的时候,你只看到了他改了几行代码,但是背后花的时间可能是6-7个小时。这也正是优秀的程序员所能带来的价值。
从这个角度看,用代码行数评价程序员其实不太公平,Google内部也不会用这个标准去衡量程序员的工作质量。
Q2. 不看代码行数,那应该如何衡量程序员的工作?
Yan:真正的评价标准是你工作的impact
对于工作质量的衡量,不仅仅用行数来衡量,更重要的还是代码的质量,和工作的impact。比如你做的这个东西对于整个的businees来说到底有什么impact,有什么value。对于用户来说,这个东西是否有用、好用,是不是真正的为用户体验带来提升。或者你能否提供新的产品,帮助大家的工作和生活。
Q3. 那你在Google的时候,工作日常是什么样子的呢?
Yan:程序员每天一半以上时间不在写代码
很多人都以为,一个Software Engineer的工作就是每天不停地写代码,其实在Google工作并不是这样的,每天写代码的时间其实并不是非常多。更多的时间还是花在思考和Design上面。像我每天大概有一半的时间在写代码吧。随着级别的提升,你可能会更多的参与Design和管理的工作,写代码的时间就会越来越少。
如果级别到了manager或者director的级别,那么写代码这样细节性的工作就不再是主要职责了。他一方面需要让组里的程序员都能愉快的工作,并且deliver一个不错的结果。另一方面,更要考虑这产品或者项目到底要实现什么功能,未来走向是什么,与其他Team如何合作完成任务。当然,这不是每个engineer都能做的,需要达到一定的level,有了丰富的经验,才能做这件事情。
Q4. 在Google是否存在“Coaster”这种现象呢?
Yan:Google严进宽出,很少裁人,这是谣言
这种不干活,白拿钱的人,至少我个人是从来没有见过的,即使是在Google。
实际上,硅谷这边的竞争是非常激烈的,这些公司如果要在这样的环境下生存下来的话,就需要跑的非常快才行,基本上不会有机会给这种Coaster。
外面有很多人认为Google是个养老的公司,work life balance特别好,裁人很慎重。但实际上,Google不是不裁人的。只是它会用更加软的方式来解决这个问题,不会像其他公司那么直接和aggressive,不会对他的reputation造成什么影响而已。
大部分人进Google之前,和进去之后看法都有变化。一开始觉得我去了Google之后就轻松了,去了之后才发现其实还是挺忙的。相对来说,Google的氛围的确要更宽松一些,但是工作还是要做好的。Google对工作的评判是有一个非常完整的制度的,还是非常公平的。
所以说,还是要成为一个Solid的程序员,好好工作,不要怀有侥幸心理啊。