是什么造就了优秀的开发者/工程师文化?

jopen 9年前

        不论你是一位工程师,还是一位软件开发者,亦或是一位厨师,最近你都会听到很多的谈论:是什么造就了一个优秀的“文化”。其实这都是关于找到一个不仅有助于人们顺利地把活儿搞定, 还能让你每天屁颠屁颠地起床去那里上班的工作环境。在这篇文章里,我们将一窥几位优秀开发者的心声,看看他们对“是什么造就了一个优秀的开发者文化”的一 些想法。是额外的报酬吗?还是更多的“极客”味?是寻求那种通常不会出现的相互协作吗?还是在所有这些因素的组合上还得加点别的什么?

        什么叫“开发者驱动”的文化?

        对程序员来说最热门的工作地点之一就是 非死book,这个世界上最大并且最受欢迎的社交网站。这个巨兽为全球超过 6 亿(还在增加!)的用户服务,而这都依靠着一支由软件工程师和开发人员组成的全能团队以保障他们的服务生生不息。即使 非死book 由于一直在未通知用户的情况下不断改变用户界面和隐私设置而饱受指责,他们永不停机的可访问性和所有社会关系的一站式中心的核心价值还是让他们持续繁荣。 而这些绝不是凭空出现的:

“持续的发展一直是一个成长型公司的标记,而 非死book 显然完全满足这个要求。但是抛开其巨大的价值和创新性不谈,也许这个网站一部分的成功连接着开发者驱动的文化–即 非死book 热衷于创造并维护那些让平台运行更流畅,更有活力体验的代码…非死book 的例子确确实实说明了当一些合适的因素存在的时候,开发者驱动的文化可以工作的很好。在有些情况下,公司可能需要用试错的方式去检测模型在那些情况下是否 有效。当然,并不是每个公司都有能力去组建一个充分赋权给工程师的体系的。” — RegularGeek.com, “Developer Driven Culture 开发者驱动的文化”

        “赋权于工程师”(有的情况下或者是开发者)是一个有趣的前提,但是这到底意味着什么呢?拥有一间充满着神秘博士和星球大战珍藏集的办公室,随 时可以享受免费的马杀鸡的休息室,还有一大堆免费的快餐食品当然是最好的,但是如果开发者不得不应对 SB 的办公室政治,或者更悲剧的微型管理中的各种摩擦纠纷的时候,那么上述的一切都于事无补。而 非死book 看上去正确的地方是对想法的鼓励政策,一个富有想象力的环境是不会扼杀创新的。而这要求一系列的事情必须做对:一个互相之间和谐合作的聪明团队,一个有能 力过滤掉什么是必要什么是不必要,而使得程序员们可以完成他们的活儿的聪明管理团队。这是一个很高的标准,但是当你有一个像 非死book 这样炙手可热的产品的时候,你就必须做到这一点。

        是什么促成了一个强大的开发者文化?

        在 Quora 这样一个在线问答网站上,有一个这样的问题被问及《What makes a good engineering culture  是什么造就了优秀的工程师文化?》显然,这些答案来自于工程师的视角,但是很多的答案同样适用在开发者身上。关于是什么造就了强大的开发者文化的答案之一就是快速迭代

“对明智的团队来说,快速迭代速度意味着拥有一组强大的领导来帮助协调并驱动团队努力工作。关键的利益相关者在制定决策时,需要做出有效的决定并且 将其选择付诸实施。借用 Bill Walsh 的一句话,他曾作为教练三次带领旧金山 49 人队进入超级碗,强大的领导需要“commit, explode, recover  承诺、激发、恢复”,即意味着制定一个攻击方案,然后执行它,最后对结果做出反应。一个缺乏决断力的团队只会将个人的所有努力化为乌有。”

        我们所有的人大概都有在一个项目上被其它人束缚的不爽经历;然而这就是生活。快速,有意义的过程对于一个团队来说,是一种使得工作更流畅地朝搞定最终目标的方向前进的东西。伴随着快速迭代而来的,是尽可能多的自动化,构建让事情变得简单的软件的想法:

“选择正确的方式,则编程将自然的与设计衔接;模块将会拥有小巧,简单的接口;而且不需要大量的重组,新的功能便能很好地添加进来。而选择错误的方 式,编程会成为一系列糟糕的惊喜:接口将会变得复杂而笨拙,不得不去适应那些意料之外的交互,并且即使是最简单的改变都将变得困难。”

        K.I.S.S(保持简单,傻瓜)的古训看来在这里是行得通的。那些开发者为了在工作中达成一种禅宗般的朴素而使用的特定工具或者过程,对他们最终想要完成的任务不会有什么影响;而这基本上是一个通往项目终点的无障碍(至少是少障碍)的道路。

是什么造就了优秀的开发者/工程师文化?

        20% 时间

        你可能听说过 Google 的“20% 时间政策”,这个在科技产业界众所周知的东西。这个概念要回过头到 1948 年:

“在 1974 年,3M 公司科学家 Art Fry 想出了一个聪明的发明。他认为如果可以将一种粘合剂(这是在早几年前,他的同事 Spencer Silver 发明的)应用到一张纸的背面,他能够创造一个用在他的教堂赞美诗里的完美书签。他称之为 Post-It 便签。Fry 是在他的“15% 时间”里想出这个标志性产品(他与 Smithsonian 谈论关于这个产品 猛戳这里) 的。“15% 时间”是 3M 公司的一个计划,它允许员工利用他们带薪时间的一部分去做追逐梦想并且孵化他们自己的想法。这看上去只是一个柔性的员工福利而已。然而这些时间却产生出许 多这个公司最卖座的产品。并且为像 Google 和惠普这样一些当今顶级的科技公司开创了先例。”Lifehacker.com, “20% 时间原则让你工作更轻松  Make Your Job Feel Less Like Work With 20% Time

        一些 Google 的最有趣,最有名的产品就是在这 20% 时间里构想的,包括 Gmail、Google News 和 Adsense。显然这个方案对 Google 非常有效,并且很容易获得这样的结论,鼓励开发者去从事令他们激情四射的那部分工作显然是非常明智的:

“举个例子,很多与我在工作中很熟的软件测试人员都是重度硬件极客。但是除非正式地换个工作,目前对他们来说很难找到个地方去从事这些兴趣,尽管整 个公司有好几百个这样志同道合的极客们。拥有一个官方认可的方式让他们去探索这些兴趣,不但会让这些员工很开心,还会将他们塑造成适合于转换到那些事业的 人…这里的关键是,不论你的开发人员感兴趣的是什么,你总有办法去塑造他们,即使在没有很多的预算情况下。” — arc90.com “创建兴盛的开发者文化  Creating a Thriving Developer Culture

        实用性建议

        最近,一位在 Jet Cooper 的前端开发者 Monika Piotrowicz 做了一个报告,就他们公司如何拥抱一个更包容的开发者文化给出了一些非常实用的建议。特别指出的是,调度设计师和开发者在项目上应该更好的合作而不是互搞。

        她们的设计团队和开发团队的相互协作给公司带来了大丰收。在项目期间,他们试着去通力合作而不是在某些问题上将工作丢来丢去;她们发现这样的方式能够激活他们进行更多的研究,创造更多的原型,并且她们可以通过更好的定位从而尝试新技术。

        团队还利用下面几种不同的活动来进行工作项目环境之外的互相协作:

  • 每月演示日:演示日允许每个团队都来秀一秀自己的成果,并且还能得到支持和反馈。
  • 每周的开发者演讲:所有开发者见面分享新的技术,聊聊他们遇到的问题,或者他们想到的任何东西。
  • 创造性休假: 一个月中有两天,整个公司休假并且可以为他们自己的项目工作,当然,这些是自我导向的(这是模仿前文提到的 Google 的 20% 时间政策制定的)

        Piotrowicz 的报告释放了这样一种信念,设计师和开发人员应该提倡更多的公司内部协作,从而拥有一个更强大的团队,而且对他们来说看来这很管用。

        为什么一个健康的开发者文化是重要的

        一个强大的开发者文化对于优秀的工作是非常重要的:

“当你关注文化这个东西的时候,你就会拥有指导原则。人们会因此而了解你。员工将会照它行事。它将帮你度过难关。你将基于这些原则进行雇用和开除的 决定。它有助于让所有的员工为同一个公司使命而工作。在某种意义上,它就是将公司紧紧地粘在一起的胶水。”--Kissmetrics.com. “造就伟大公司文化的四个基本元素  The Four Elements That Make a Great Company Culture”

        不论你在哪里工作——是一个漫画店,一家面包店,或者是一间办公室——它都有着自己的文化。这种工作文化非常重要。如果你每天都像周一一样赖着不愿意去上班,那么这就有问题了。

        乐于搞定工作的员工是有效率的,并且会催生更多的效率。这会使得公司脱颖而出,有助于公司发展,让员工开心,因为他们正是获得收获的人。

        优秀的文化同样让你更容易找到优秀的人才。让我们面对这些吧:那些给开发人员提供更多的报酬,有趣的工作和奖赏创造力的前卫的工作环境的办公室,比起那些期待你吃的是草挤出的是奶的奥威尔式的格子间,前者的 HR 的门将会被更多得敲响。所以说,优秀的开发者文化吸引优秀的开发者,鉴定完毕。

        同样,当你意识到你在一个安全的,具有创造性的,令人鼓舞的地方工作时候,你会有一种惺惺相惜的感觉。那些在公司文化上投入,同时自身的价值被认可的开发人员会更倾向死忠于公司,努力工作并且互相帮助:

“文化指导的是自由决定的行为,并且在员工手册管辖范围外发挥作用。文化告诉我们如何应对前所未有的服务请求。它告诉我们是否需要冒险告知我们的老 板我们的新想法,是去揭露问题还是隐藏问题。员工每天要独自做出很多的决定,而文化则是我们的指南。文化告诉我们当 CEO 不在的房间时我们该如何去做,显然,大多数时候就是这样的”–哈佛商业评论

        关于塑造或者破坏一个优秀的开发者文化你有什么想法呢?

        是时候发表你的意见了。你经历的愉快的和糟糕的工作体验?什么是一个健康的开发者文化需要的基本元素?请在评论中与我们分享你的想法吧。