我眼中的工程师文化

我眼中的工程师文化 现在HR和猎头也懂得,挖程序员不能光讲钱和项目了,多少号称工程师文化的公司花开北京上海,可是到底什么是“工程师文化”?谁能给一个准确的定义?

有人说,什么文化就是什么说了算的意思,工程师文化就是工程师说了算。这未免也太肤浅了。也有人说,工程师文化就是自由上下班、松散管理,做喜欢的项目。我想这依然是不恰当的,这些人只说出了工程师文化给工程师带来的权利,更何况这种对权利的认定还是片面的。

工程师文化的核心是什么:价值观。但是,它不止价值观。我在这篇文章中提到过工程师文化:

  • 首先,这个世界上大部分软件公司采用工程师文化的模式来运作的话,都会死得很惨。
  • 其次,这个世界上大部分号称工程师文化的软件公司,都只是号称号称而已。
  • 最后,这个世界上大部分成功和伟大的软件公司,都不是工程师文化的。

下面我谈一谈我眼中的工程师文化应该是怎样的,每个人的价值取向不同,当然并不是说它一定好,不过它真不容易玩得转。之后你会明白,世界上能真正所谓“工程师文化”的企业寥寥无几。

Just Do It

“身体力行”。我把它放在第一条的位置。什么是身体力行?

  • 创始人Mary Wagner要亲自使用玫琳凯化妆品,以保证质量一流;
  • Zuckerberg亲自评审Facebook的代码;
  • Linus说:“Talk is cheap, show me the code.”。

但是现在多少管理课程都在这样给学生洗脑:“克服亲力亲为的毛病”,“走出亲自去做的误区”。工程师文化的企业中,管理者又该扮演一个怎样的角色?企业的核心人才不应是这些指点江山的指挥者,而是脚踏实地的实践者,是那些动手去做的工程师,并且是那些习惯于马上去做的人。“马上去做”往往可以诞生许多创新的点子,因为这些点子转瞬即逝。

在Google流传着这样一个小故事:每周三在二楼的铁柜上不定期地都会放置一些带有Google徽标的T恤,大家都可以拿取,很快就会拿完。后来有人注意到这个铁柜对面安装了摄像头,索性写了一个分析摄像头监控图像的软件,判断这个铁柜的门是不是开着的,如果是,多半就是新T恤又到了,发送邮件到“T恤警报器”的群组中,告诉大家快去抢吧。这是一种带有黑客色彩的实践文化,少啰嗦、先做事。

硅谷的许多伟大的公司都是从车库里的电脑前开始的,而不是拿出一笔钱,等来一票人然后坐等发财。很多人只看到了硅谷工程师光鲜的一面(比如薪水要高出美国其它地区20%左右),殊不知他们的平均工作时间远远超过其他地区的工程师。所以说,工程师文化,不是只有权力的一面,它对工程师的要求,是每个人都要足够能干,都要做许多的事。

足够小的团队

Facebook自己总结的工程师文化包括这三点:

  1. Move Fast and Break Things
  2. Huge Impact with Small Teams
  3. Be Bold and Innovative

尤其我要说一下第二点,在Facebook,多数功能系统都由1到3位工程师组成的小团队完成。平均下来,Facebook 每位工程师(注意我说的是“工程师”,不是任意员工)服务120 万名用户,Google的这个数则是190万,Amazon是96万,微软是75万。

团队多小才算足够小?有一种说法叫“Pizza Team”,换言之一两张披萨饼就可以喂饱的团队,你说能有多少人?但是团队小并不意味着做的事情小,上面的例子已经说到了。

小团队的好处,在于灵活、快速,极大减少沟通和交流的成本。不用投票,少发邮件多喊话,说做就做。

37Signals是另一家把小团队做到极致的公司,整个公司的工程师遍布全世界,但是也只有35人而已,让全世界的人一起工作,做出伟大的产品,一定要兴师动众吗?

工程师的决策权

首当其冲的是产品的决策权。产品的决策权反映了公司对于工程师对产品观点的认可,这才是最重要的。

在华为,市场部门说了算。市场说什么时候要,什么时候就得给做出来,项目计划全部都是倒排的,程序员基本没有什么可以商量的余地。我经历过这样一则事情,有一位客户发了一封邮件,大致是说要做某某功能该有多好啊,然后,然后市场部门一下需求,研发团队就去做了,过了几个月,该功能上线,客户惊讶地说:“我怎么不记得有这事啊?”。

在腾讯,产品经理是老大。网上有一个腾讯“5000个产品经理”的传闻,实在觉得夸张,不知是真是假,但是我的在腾讯呆过的同事,则告诉了我不少关于产品经理话语权的趣事。产品经理具有很大的话语权,从产品设计到项目进度安排,是整个工作的协调人,掌控全局。

要让工程师去决策产品做成什么样子,工程师必须能够直接和客户接触,否则主人翁意识无从谈起。这也是为什么大部分工程师文化的公司都是互联网公司,因为互联网产品对于工程师来说,就在身边,感触丰盈,理念和想法就很多。

另一方面,工程师文化的公司往往会做出简洁的产品来,因为工程师是喜欢优雅和简洁的群体。

在Amazon,每年工程师们都会投票,投那些最烂的项目和工具,投出来位列Top N的几个,都要限期改掉或者废掉(虽说Amazon并不能完全算一家的工程师文化的公司,但是很接近了(【7-19-2014】再次注明:我发现团队和团队差异很大,因此说“很接近了”是不恰当的,有的团队还差得很远很远))。这件事情就是工程师定的,而不是市场营销人员。

当然,决策权方面远不止产品。还包括部分进度、产品特性的优先级等等。不要觉得不可思议,工程师是去最终落实产品的那个人,如果他都没有话语权,那才不可思议。

Geek的工作环境

这部分的观点连我自己都没有百分百想清楚,但是这几点是毋庸置疑的:

  • 代码共享。连查看别的团队的代码都要申请权限的公司就别提什么工程师的文化了。
  • 无障碍访问互联网。不解释。
  • 时间支配有相当的自由度。你可以关注过程,也可以关注结果,但是重要的是关注人本身和做的事,而不是那些制造障碍和降低生产力的规矩。上下班刷卡制度就是这样的一个规矩。另外,平均下来需要有一定比例的时间要留给工程师自己安排,例如在Google这个数是20%。优秀的工程师绝对知道自己该做些什么。一些伟大的产品都是从这样的时间中诞生的。
  • 允许选择喜欢的项目,甚至选择喜欢的产品经理。这样的选择并不是无条件的,但这却是一件双赢的事情。
  • 平等的地位。你是希望有人和讨论问题,还是希望有人附庸在你的话后面?一派和谐是最糟糕的结果。我们需要有争论,项目中需要有足够多的不同意见,不要遮遮掩掩的,直接指出,但是对事不对人,不用在乎你的等级他的头衔,这就是平等。
  • 合适的工作环境。合适的环境可以明显提高工作效率。兴许没有必要像《软件随想录》里描述的那样理想,但是我想要安静的环境、两个显示器以及一个高度合适的椅子,那就可以很快得到。
  • 宽限的着装要求。这一条也列在这里?对,你可以穿着拖鞋去上班,这对曾经的我来说是不可想象的。

本质上,这几条都可以写成“对工程师的信任和尊重”。如果这几点都做不到的话,对于今天的话题,就先省省吧。我经历过不少背道而驰的故事。比如从互联网上下载一个jar包都要申请权限,比如改一点代码需要层层审批,再比如想看别人写的代码都需要偷偷摸摸的……

寻找最好的人才

文化不是领导说了算的,而是慢慢酝酿达成的。招聘不合适的人,就会对工程师文化造成污染,如果不幸招入这样的人,这些人必须清除出去,例如离职或者让他们做非工程师的事情等等。这绝非危言耸听,Google就做过这样的事情。

然而,认可和实践工程师文化只是招聘的一个先决条件。更重要的时候,必须招能干和优秀的人。

来Amazon通常要经过2轮的电话面试和5轮的face-to-face面试,对于所有的面试官中,有一名经验丰富的面试官拥有Bar Raiser的认证,目的是为了保证招聘的人才必须要保持在当前团队的工程师中前50%而设定的,Bar Raiser拥有最终否决权,只要他否定的人,其他人全部同意也没用。

在Facebook,新入职的工程师大概会进行一个4-6周的Boot Camp训练来熟悉项目,修补bug,以及学习来自资深工程师的训练课程,大概10%的新兵无法完成这个过程被劝退。

工程师是一名实践者,这就意味着他要做各种各样的事情,我知道有的公司分门别类了各种职位,SA、SE、QA、SDE、SQA……数不胜数,有的压根儿都不知道是做什么的,甚至有的公司把软件工程师拆分成编码岗位和设计岗位都分开,但是对于工程师文化的公司来说,工程师必须要多能。

多能的直接原因来自于小团队,小团队意味着你没有办法去分配太多的角色,你可以擅长做UI,你可以擅长DBA,但是一个写C++代码人照样可以去画界面……我想你懂我的意思。

另外一个重要的条件是候选人的态度。对技术的态度、对工作的态度,以及对生活的态度。宽限的文化下可以诞生优秀的产品,也可以培养一票懒人,这就是为什么任何制度都要和遵守制度的人相匹配。没有这样的人,你玩不转工程师文化。

当然,工程师文化远不止上面说的这些,但是在我看来这些是工程师文化里核心价值观的其中几个体现。

最后,我想补充一点,一家公司的文化会随着公司的扩张而变味,且看2005年的百度,先别谈哪些方面是符合工程师文化的,起码敢说出这样工程师范儿的话来,可是现在呢?(在2009年中国头号Blogger、著名互联网评论家keso这样说:“今天的百度,据我所得到的信息来看,早就不是上市前那个工程师乐园了。今天的百度,规模比三四年前大了差不多10倍,员工的业绩压力很大,对大多数员工来说,百度跟其他公司没差别。”)

文章未经特殊标明皆为本人原创,未经许可不得用于任何商业用途,转载请保持完整性并注明来源链接《四火的唠叨》

分享到:

28 comments

  1. [...] > 我眼中的工程师文化 上一篇 【转】10 个软件过程管理的最佳实践 【转】程序算法与人生选择 [...]

  2. 菜鸟要飞 说道:

    [...] SE(System Engineer,相当于现在大多数公司的产品经理)负责从市场部门等地方承接需求,然后做“系统性设计”,这个系统多数指的是业务系统,也指有时候软件系统。之前我在一篇文章里面介绍过,同在基层,不同的公司会有不同的角色当老大。 比如在腾讯,产品经理是老大;而在我所在的公司,市场部门是老大,研发体系要弱不少。一个项目一般只有1~2个SE。虽然负责业务设计和软件设计,但是SE的出身可以说是鱼龙混杂,有工程师,有测试,甚至有一线维护人员。 [...]

  3. 刀尖红叶 说道:

    好想去工程师文化的公司!

  4. [...] 本文转转载于raychase,原文链接。 [...]

  5. [...] 纵使目标再大,人的精力有限,于我来说,早些时候远大目标隐约是“成功的软件工程师”这个样子,但是目标是需要逐渐细化的。这些年我渐渐对自己的定位和未来有了一个清晰一点的认识。确实我有很强的观点,觉得软件工程师需要有足够的全面性,在《我眼中的工程师文化》中我也说“工程师文化,不是只有权力的一面,它对工程师的要求,是每个人都要足够能干,都要做许多的事”…… [...]

  6. [...]   纵使目标再大,人的精力有限,于我来说,早些时候远大目标隐约是“成功的软件工程师”这个样子,但是目标是需要逐渐细化的。这些年我渐渐对自己的定位和未来有了一个清晰一点的认识。确实我有很强的观点,觉得软件工程师需要有足够的全面性,在《我眼中的工程师文化》中我也说“工程师文化,不是只有权力的一面,它对工程师的要求,是每个人都要足够能干,都要做许多的事”…… [...]

  7. [...]   纵使目标再大,人的精力有限,于我来说,早些时候远大目标隐约是“成功的软件工程师”这个样子,但是目标是需要逐渐细化的。这些年我渐渐对自己的定位和未来有了一个清晰一点的认识。确实我有很强的观点,觉得软件工程师需要有足够的全面性,在《我眼中的工程师文化》中我也说“工程师文化,不是只有权力的一面,它对工程师的要求,是每个人都要足够能干,都要做许多的事”…… [...]

  8. [...] 纵使目标再大,人的精力有限,于我来说,早些时候远大目标隐约是“成功的软件工程师”这个样子,但是目标是需要逐渐细化的。这些年我渐渐对自己的定位和未来有了一个清晰一点的认识。确实我有很强的观点,觉得软件工程师需要有足够的全面性,在《我眼中的工程师文化》中我也说“工程师文化,不是只有权力的一面,它对工程师的要求,是每个人都要足够能干,都要做许多的事”…… [...]

  9. [...] 我眼中的工程师文化 [...]

  10. 小S的困惑 说道:

    [...] 我眼中的工程师文化 [...]

  11. [...] 我眼中的工程师文化 [...]

  12. [...] 我眼中的工程师文化 [...]

  13. [...] 发表在《工程师的生活》工程师的生活 发表在《我眼中的工程师文化》任兵兵 发表在《关于四火》潘多拉猫 [...]

  14. 工程师的生活 说道:

    [...] 我眼中的工程师文化 [...]

  15. [...] 本文转转载于raychase,原文链接。 [...]

  16. 墨水 说道:

    今天在微信敏捷一千零一夜中看到这篇文章,很不错的说。分享了。好的背景,好的背景,好的文化。最重要的是选择。

  17. 杨云龙 说道:

    我还在念大学呢  嘿嘿  看了文章  多了一些对未来的设想  还有大概知道了自己该培养和加强哪些方面的能力了  呵呵  要努力的还好多啊     谢了  ”唠叨“前辈。。。。。。。。

  18. skzr.org 说道:

    深有感触,选择对的人:技术能力、责任心、小。
     

  19. [...] (特别说明:文章来源于《四火的唠叨》) 除了文章中有特别说明,均为IT宅原创文章,转载请以链接形式注明出处。 本文链接:http://www.itzhai.com/engineer-culture-in-my-eyes.html arthinking if(art + thinking == arthinking){     bug知时节,上线乃发生。随风潜入夜,404无声。野径云俱黑,孤窗火独明。晓看公司处,一只程序猿。} 分享到: document.getElementById("bdshell_js").src = "http://bdimg.share.baidu.com/static/js/shell_v2.js?t=" + new Date().getHours(); 赞 上一篇:JavaScript设计模式笔记 – 享元模式 代理模式 未分类 该分类的更多文章 [...]

  20. [...] 本文转转载于raychase,原文链接。 [...]

  21. leeon 说道:

    一直向往FB的工作,努力吧

  22. tekka 说道:

    最后亮了,百度开始走下坡路了

  23. 熊猫人 说道:

    这种文化只有国外才能出现,国内的行情很难

发表评论

电子邮件地址不会被公开。

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>


Preview on Feedage: