文化编码(Coding Culture)
英文原文:Coding Culture: How To Build Better Products by Building Stronger Teams
译/丛一
软件开发人员通常会付出大量的时间和精力在如何构建最好的产品上。我们常会纠结应该使用哪种Web框架,是用NoSQL数据库还是SQL数据库?不过,尽管这些问题十分重要,开发人员通常会忽视掉软件开发过程中与这些问题同样重要的一个方面——文化。本文将与读者分享在Atlanssian公司中如何保持健壮的创新和协作文化氛围的经验。
产品时刻都在发展变化。在之后的几年中,一个你倾注过血汗和眼泪的产品可能会不复存在。不过,如果你能同时专注于创造健壮的团队和编码文化,你就能够时刻准备着,抓住出现的机遇(克服障碍)。而且,发展强健的文化需要对团队所代表的立场达成共识,而这种凝聚力也会正向地反映到团队所构建的产品上。伟大的文化促成伟大的产品。
那么什么是“伟大的文化”?人们通常会将文化可见的外部标志——免费食物、免费饮品、瑜伽课程、Aeron电脑椅、电视游戏、Nerf 玩具枪——错误地等同于文化。的确,许多公司,特别是科技企业都会提供这些很棒的福利,但是这与文化没有半点关系。文化是我们如何交流、工作、组织、荣辱与共。文化无法准确描述,但是它能够让员工更加快乐、更有生产力。如果员工害怕失败,公司等级森严,雇主把利润看得比员工更重要,即使有再多的免费食物和公务津贴也无济于事。
当今的职场已经不再由朝九晚五,打卡上下班,流水线式的心态所主导。对于知识型劳动者来说,如软件开发人员,并不是用容量或时间,而是用创造力和质量衡量产出的价值。如今,只要有需要,我们可以自由选择在办公室工作还是在家工作,或者是在酒店的房间里工作。这会创造无数令人激动的机会,培养一种能够让所有员工都受益的文化氛围。
创新文化
在科技界有一个耳熟能详的故事,小型创新公司随着规模的增长会逐渐失去创新的能力。的确,大型组织与初创企业相比会更加结构化,缺乏灵活性,这会导致难以孕育开创性的想法并使之浮出表面。文化如此重要的一个原因就是无论公司规模多大,它都可以帮助公司始终保持创新。创造一个创新的文化氛围不只是说“好吧伙计们,创新的时间到了。”或者开辟一个专门的“创新部门”那么简单。我们不可能命令创新,也不可能将创新隔离在一个孤立的群体中。
在我个人的经验中,鼓励人们创新的最好方法就是给予他们充足的时间开创想法并尝试实现这些想法。在Atlassian ,我们每个季度会将所有员工集合到一起,开展一次名为”ShipIt Day”的24小时黑客马拉松活动。所有对如何提升部门和产品有好的想法的人都可以加入到ShipIt Day中。围绕着那些最有影响潜力的想法,组成多个团队(或者也可以独自奋战),然后在周四下午三点,启动ShipIt Day。除了到周五下午三点必须要有交付物之外,没有任何其他规则。这是一项全球范围的Atlassian办公室活动,所有人最终会投票选出一个全球优胜者。
在24小时内所取得的成就令人惊奇。许多来自于ShipIt Day的很棒的产出物最终都融入到了我们的产品中。此外,这些活动能让人们心情愉悦,因为他们有了一个可以将想法实现的渠道。ShipIt Day激励公司中的每个员工不断鞭策自己并且思考用不同的方式解决问题。
快乐文化
去年出现的一项重量级研究证实了我们之前的感性认识——快乐的员工更加多产,通常也就能促使公司盈利更强,发展更迅速。ShipIt Day成为人们保持快乐的一部分不仅是因为他们能够将自己的想法实现,还因为它将人们聚在一起。在快乐的团队中员工互相了解,互相尊重并且一同享受共度的时光。雇主可以通过开辟专门的社交时间,让员工可以休息和放松,从而培养快乐的工作氛围。
公司欢乐时光、夏季户外派对和主题假日活动都是可以将不同部门的各类员工汇集到一起的很棒的手段。共同庆祝团队的胜利也是个好主意,例如举办版本发布派对,因为这对出色工作的认可非常重要。与人分享胜利的感觉更加甜蜜。此外,也可以组织像漂流或者攀岩这样的活动,员工能够进行团队合作并且更加深入地了解同事的优缺点。这类活动可以增强一起共事的员工之间的关系并且能够让那些没有太多交流机会的员工之间建立联系。在坦诚相见和相互交流时,有助于人们感觉更加舒适,同时还可以突出作为一个团队荣辱与共的感觉,这有助于避免负面态度或相互指责。
目前许多公司已经在开展这类活动,并认为营造快乐的文化氛围,这就是他们需要做的全部工作。但实际并非如此。
为了确保员工能够快乐努力的工作,经理需要建立快速方便的检查机制,快速得到员工关于当前工作方式以及工作改进意见的快速反馈。Atlassian构建了一个名为MoodApp的iPad应用,放置在办公室的每个出口,这样当员工离开时就可以分享他们的感触,是否能感受到他们的经理的支持等。我们发现尽管超过90%的员工都比较满意当前的工作,仍有大约30%的受访者认为,在他们出色地完成某些工作时,并未因此得到认可。我们将这一比例告知团队领导,并发起一项促进荣誉计划(Kudos program)的运动:很简单就可以让员工互相赏识各自工作的方法。员工只需要在内部服务台填写一张单据即可。几天之后,被大家认可的员工就能够得到一张小礼品卡,里面有亚马逊代金券或者电影票。在荣誉单据数量增加的同时,感觉工作不受认可的员工数量却下降到了10%。在了解到有91%的员工感觉快乐之后,Spotify也做了类似的工作。尽管91%已经是相当不错的一个比例,Spotify仍希望了解剩余9%的员工不快乐的原因。他们与这些员工交谈,并做出一些微小的调整,最终这一比例上升到94%。
当然,不可能每个人都一直保持快乐。某段时间可能会比另外一段时间压力更大,工作之外的私人问题随时可能发生,而且可能会有超出我们控制范围的事件发生,例如生产服务器上的一块磁盘损坏会导致成百上千的客户服务中断。起伏不可避免,但通过构建强大的团队,当遭遇不顺时,员工可以相互分担痛苦。
由价值观驱动的文化
文化不仅是组织层面所应关心的问题,内部团队同样也要考虑文化问题。健壮的文化氛围基于整个组织层面的强力的价值观。价值观可以指导文化。Atlassian围绕五个强力价值观构建了自己的文化,例如‘不要#@!%客户。’对于工程团队,这意味着每个人都需要能够了解客户。
虽然这已经是老生常谈,但仍然值得再重复一次。所有人都应该了解客户,而且客户也应该参与到产品开发的过程中。我们可以通过视频访谈,在投票系统中新增功能请求,故事映射,在办公室甚至是浴室张贴用户角色完成这项工作。意识到客户是团队运作的中心可以提醒所有成员构建产品的原因和目标。这能够确保员工理解所要处理的问题,明白功能与产品直接相关的。
顾客意识还能够帮助团队保持对产品的热情。除了热情之外,另一个重要的工程价值(engineering value)就是追求卓越。蹩脚代码永远都是不可接受的,即使是由于时间原因。创造一个可以让开发人员或团队充分估算项目周期的环境,因为突击工作并非好事,之后很有可能需要重新返修。
Atlassian的另一个价值观就是‘欲求改变,先变自身’,这句话的含义是作为工程师应该不断寻找更好的做事方式。要牢记只有变化才是永恒不变的,昨日的最佳实践并不适用于今天。各个团队应该乐于尝试新的方法或使用不同的技术,不过不要掉进‘因为有能力做到,就实施最新的框架’的陷阱。另外,要当心团队中妄自尊大的人,他们可能会做出一些超出既定目标,或者对整个团队或产品不利的事情。保证所有人都能够齐心工作,达成目标。同时,这也需要与架构调整的需求做出平衡。如果总是在调整架构而没有发布任何产品,这无益于任何人。不要对产品过度设计。我们需要足够好的产品,但并不需要完美无缺的产品。发布可用版本,获取反馈,不断优化产品。要在对代码的热情和用户的需求之间做出平衡。
工程师正在利用这些价值观为客户构建日常使用的软件,在版本发布时,向客户展示工作成果的感觉非常棒。不过,并不是组织中的所有部门都有这样的特权。例如,服务部门可以追踪服务过程并基于处理的支持案例数量举行庆祝,但这并不像发布一个自己亲手构建的产品那么有满足感。几年前,我们的服务团队决定从他们的角度解读‘不要#@!%客户’这类价值观的意义,并做成海报贴在每天进入办公室的必经之路。海报中包含了像“期待每一位客户”,“在问题还小的时候就解决掉它们”,“不断学习”以及“让客户敬佩”等口号。这培养了团队共同的使命感,并且让支持团队认可拥护这些价值观并按照这些价值观行事的“文化摇滚明星”。
公开透明的文化
公司很自然会划分成多个团队,文化需要营造一个这样的团队环境:1)有效率和凝聚力,同时 2)与其他团队之间沟通顺畅。我们争取将小型团队的平均规模控制在4-8人。在这种规模的团队中,无需复杂的沟通工具,每个人都能了解同事的工作内容。他们之间的联系也比较紧密。
然而,随着企业规模越来越大,这些团队和部门往往会被分割成为多个难以打破的孤岛。构建强健的组织文化的一部分就是尽量保持群组之间的界限越低越好,方便人们能够在需要时互相学习,互相帮助。无论组织规模多大,从根本上来说,全体人员都是朝着同一个目标努力,强调这一点十分重要。例如,开发人员可能会觉得十分沮丧,因为他们认为法律部门不允许他们使用某个开源库,只是因为说‘不’比找解决方案更容易。而法律部的人可能认为开发人员不能理解使用特定的软件许可证所带来的法律问题。
越过这些孤岛最好的办法就是将来自不同部门的员工彼此相连。上面所谈及的活动就是这一努力的一部分。此外还可以让新员工写一篇关于自己个人信息的介绍性博客,以及实现健壮的便于共享的合作平台。通过博客或公告,员工还应该能够随时了解到其他部门正在发生的事情。例如,将设计团队赢得大奖的新闻与整个组织分享。分享失败并发起讨论——你永远都不知道谁会贡献出有价值的想法。透明是保持文化有活力的关键。
我们会记录所有想要在协作平台Confluence上讨论或保留的内容。我们会讨论想法,将想法变成功能,并共同开发这些功能。这种方式要比电话沟通的方式更好,电话沟通时所讨论的内容无法自动文档化,也比电子邮件的方式要更好,讨论内容很容易被淹没掉。聊天也是非常好的手段。通过团队沟通平台HipChat,聊天已经成为我们的神经系统。每个团队都有自己的HipChat聊天室,聊天记录可以及时保存,如果某个成员正在旅行,在一个长时间的会议中或者想要更专注,可以选择关闭通知,稍后再查看之前的聊天记录。我们还将聊天与其他的系统相连。例如,如果某次构建失败,我们就会收到一个聊天通知并且可以立即发起一次讨论。除了每个团队内部的聊天室之外,还有跨部门的聊天室,可以让组织中不同部门的员工建立联系。例如,法律部的员工和HR部门的员工可以加入一个足球主题的聊天室,讨论选拔赛计划或回顾周末的一场职业比赛。
透明和沟通对于分布式的团队来说尤为必要,这已经成为常态。这些聊天室能够连接不同时区的人们,让他们达成共识,并且可以相互讨论。聊天室还能够消除组织内的层次结构。任何员工都可以评论首席财务官发表的一篇博客,反之也是如此。在这些流畅的沟通中,会产生许多可能非常伟大的观点,但同样重要的是,要保持所有的对话恭敬有礼。
文化规模化(Scaling Culture)
随着公司规模越来越大,在整个组织中传播和保持文化氛围会变得越来越有挑战。当我三年半以前加入Atlassian时,整个公司大概有350人,而现在有超过1300人。我们清楚,随着公司规模的增长,我们的文化氛围会有所变化,但我们也知道如果能够正确行事并保持员工的责任心,我们的价值观会帮助保持文化氛围完好无损。
我们通过创建包括设计人员和QA人员在内的小型跨职能程序员团队实现文化规模化,如果在下一个Sprint中不再需要设计人员,他就可以转到另外一个需要他的团队中去,反之亦然。另一个挑战是组织多个团队为同一个产品服务。我曾经见过一些公司通过创建前端团队、性能团队和数据库团队等多个团队来解决这一问题。在我的经验里,这会产生协作问题,因为某个功能或用户故事可能会横跨所有的团队。
我们发现让每个团队各自负责一个特定场景的工作方式收效良好。例如,我们的Confluence产品有一个“轻松入门”团队,集中精力研究如何将用户带入平台。然后,我们还有一个企业团队,主要负责大型的客户,不仅仅是在性能方面,还要研究如何在管理员屏幕上展示1000个用户。这些团队各自独立地工作,同时在需要时也能够相互获得支持。每个团队自行决定问题的解决方案以及所要使用的个人工具。我们将这种方法称之为“行动主义(do-ocracy)”,每个团队都拥有授权,可以采用最适于他们的工作方式。
各个团队各自独立的同时,我们也鼓励团队在需要时从其他团队寻求支持,与其他团队分享他们可以实施的好想法和功能。如果轻松入门团队说,“我们计划按照功能构建新的Confluence页面布局,”我们会将这个想法与所有其他的团队分享。其他团队可能会说“从企业的角度来说,你可能需要注意这点或那点。”所有的事情都会经过讨论,这能够创造出一个集体所有制的环境。集体主义需要透明度。为了在代码级别达成这一目标,我们会在Stash和Bitbucket中做代码评审。不过有时候很难找到最合适的代码改动评审者。因此我们还编写了一个免费的Stash插件Stash评审人推荐器(Reviewer Suggester),根据之前是否修改过该文件或者是该文件的原作者,进行评审人推荐。他们是评审改动的最佳人选,因为他们对这段代码最为了解。我们发现这种方法的扩展性十分良好,能够让组织更加扁平化,从而引领更多创新。
挑选合适人选
如果不能雇佣到适于公司和各个团队的人选,即使在文化氛围培养上付出最大的努力,最终也会功亏一篑。在人员雇佣方面,可以吹毛求疵,拒绝妥协。挑选合适的人选有助于保护辛苦创建的文化氛围。Atlassian在最终确定一个候选人之前,会经过筛选性问题,在线编码测试和多次现场面试。每个候选人都需要有合适的技能并且能够与公司价值观及其他员工相容。
也就是说,你不应雇佣只适应某种特定模式的员工。在我说你不想要一群兄弟程序员时,最好相信我,而如果你只雇佣你的朋友,那这种情况就很有可能发生。你的文化和生产力会随着多样性一同增长。如果新的影响者不能使之焕然一新,文化迟早会消亡。雇佣女性,雇佣有着不同年龄,不同背景,不同教育和工作经验,不同种族的员工,并确保他们受到欢迎。我们通过为每位新员工指派一个伙伴达成这一目标——为他介绍周边情况,在重要的环节帮助他们,并让他们知道每周的聚会等。我们的旧金山办公室有一项“啤酒自行车”的活动,每周五新员工会骑着自行车,驮着啤酒,为大家分发啤酒,作为一种自我介绍和促进交流的方式。我们还会组织为期四周的训练营,每天早上资深员工会为新员工培训需要了解的知识,新员工可以选择不同的课程。
回想文章开篇我们所提到的——伟大的文化从何而来?正如我们在这儿所探讨的,文化来自于让员工的创造力茁壮成长,来自于让员工为了乐趣走到一起。来自于重点发展的共享价值体系,让所有人都可以为了目标而工作,都可以开放的沟通。文化是关于透明和诚信的强化,尊重自主权及鼓励合作。文化是关于无论组织规模成长多大,都要保持所有这些不变,并且通过雇佣可以保持文化的员工来保护这种文化。文化是所有其他成长的基石——所以,确保你的组织有一个强健的文