重新点燃编程的热情:Atlassian 解锁开发者潜能的秘密之钥
2023.08.22在我还是一个刚入行的开发者,在 Microsoft 参与 Windows NT 操作系统项目时,我曾见过一些最为卓越的代码。每天工作结束之后,我都会在晚餐过后返回工位,仅为深入挖掘研究那些代码。它的编写水准高超,堪比诗篇。这不仅让我大开眼界,而且与之工作的每一刻都都是一种享受。
大约一年前,当我加入 Atlassian 担任 CTO 时,我设定了一个目标:希望能使 Atlassian 的 5000+ 开发者,都能体验到那种纯粹的编程愉悦,这也是我们努力成为世界顶尖研发企业的驱动力之一。说实话,这个目标不仅仅是追求工作中的愉悦感。最初的想法是提升研发部的整体效率。但仅凭施压让开发者达到更高产出,或是强迫他们采取以后可能会后悔的捷径来提高开发者的生产力是没有意义的。
我与我的团队坚信一个理念:愉悦感是释放生产力的关键。如果你在编码过程中总是被不尽如人意的系统和和信息缺失所困扰,那么效率和创新力都会大打折扣。而当你处于一个畅通无阻的工作流中,就会形成一个良性循环:你工作得更加迅速、对你所创造的感到自豪,个人情绪也更为愉悦。这会让你更加专注于开发的创新方面,而非一再为那些技术障碍所困。
这种方法迄今为止对我们非常有效,我相信它也适用于任何工程组织。
为开发者激发创作激情的三大支柱
为了找到方法消除障碍,让开发者能更长时间地保持在他们的“流状态”中。经过深入探讨,我们总结出了一个经过验证的三部分框架:1)提供顶尖工具;2)赋权团队;3)培育卓越的研发文化。
为此,我们定义了整体开发者满意度、提交到部署的时间、拉取请求周期时间、自助文档以及自助依赖维护的基线指标。因为不衡量,就无法进步。
卓越的工具
在我们确定基线指标之前,我们就已经意识到部署和拉取请求的周期时间过长,所以我们立刻对我们的工具进行了检查与优化。我们定期设定具有里程碑意义的目标,以确保项目的持续进展。近期的优化包括在拉取请求流程中引入新的自动化、迁移至新的测试库、以及外部服务模拟,以在本地开发环境中针对上游服务进行测试。我们设定的目标是将共享服务中的更新时长减少 90%,以便这些更改能够迅速整合到我们的主要产品中,并供客户使用。
我们还注意到,由于整个技术行业的宏观变革,如今的软件不再仅仅是编写代码。现代软件是用新的代码与数百个共享的微服务、库和其他组件组装而成的。(绝大部分 Atlassian 产品都采用了这种结构!)
如果你需要熟悉一个微服务以便在新功能中使用,你可能需要花费数小时寻找所需文档 – 前提是这些文档确实存在。或者,熟悉那个微服务的团队成员可能与你有时区差异,数小时内无法回应你。这是一个实际问题。
随着 Atlassian 在全球开设更多的分公司,然后过渡到分布式工作模式,我们的开发者越来越频繁地遇到这种问题。我们知道,客户同样面临这一挑战。因此,我们推出了 Compass,一款为开发者打造的体验平台,它为所有软件组件建立了一份目录,详细列出了每个组件的所有者、更改日志和健康指标。如此,我们的开发者(以及您的团队)可以自助获取信息,保持他们的高效工作状态。
赋权团队
我们给予团队更大的决策权。从开发团队负责人那里,我们了解到每个团队都有自己特定的问题,但他们并不觉得有权花时间去修复解决这些问题。为了响应这一需求,我的领导团队,与 Atlassian 的创始团队共同决定,允许开发者分配他们 10% 的时间去改善那些影响他们日常工作效率的问题。
例如,在我们推出的这一措施之前,Confluence 团队的拉取请求中只有不到 12% 能在 48 小时内进入生产环境。但通过重新构建他们的代码仓库、提高测试效率和自动化部署流程的组合,他们在一个季度内将这一数字提高到了31%。
同样,Trello 团队删除了 24,000 行冗余代码,并调整了他们的代码分支策略以减少代码冻结。我们的一支核心服务团队通过自动化低风险变更的审核流程,将他们的部署频率提高了 300%。这些只是赋权团队、明确为其划分时间进行问题解决所取得的部分成果。
卓越的研发文化
我们希望 Atlassian 研发以高质量的代码、对质量的所有权思维和强大的敏捷实践而著称。
在编码方面,我回想起我早年在 Windows NT 操作系统上编写内核模式代码的日子。那时的代码带有大量注释和支持文档,让我在第一次阅读时就能理解其结构和意图。但 Atlassian 的代码并不都是这样,所以我们正在补全这部分内容。
同时,我们正在为研发标准制定一个框架,该框架配备有指标确保我们的代码达到一定的质量要求。这包括在合适的时机编写合适的测试,以及把安全性和合规性放在更高的优先级。我们正在培训开发者从一开始就编写安全且合规的代码,这样在功能几乎完成时,我们就不需要进行大量的重写。
但是,我们在这方面的工作并不都是如此有结构。一个出色的研发文化还为开发者创造了学习、实验和分享的空间。为此,我们举办了关注开发者生产力的黑客马拉松,开始了一个每月的内部时事通讯,展示我们取得的进展和我们接下来要做的改进。我们还期待通过启动一个每周的展示,团队呈现他们正在进行的项目来交换想法并专注于迭代,从而加强我们的“演示文化”。
今日之我,胜昨而逊于明
在 Atlassian 的研发团队中,开发者的工作愉悦以及由此带来的生产力已成为日常对话的核心话题。这也被列为公司层面的 OKR,拥有专项的预算,同时也有被授权的团队致力于其实施。
我们还设立了一个核心团队,负责承担部门范围的项目,并逐步推向各子团队——形成了一种“中心-辐射”模型。例如,他们开始逐步推广基于 Cloud 的开发环境。这些环境不仅能在数分钟内启动,极大加速了新员工的熟悉过程,同时也让个人设备在执行如编译这样的处理器密集任务时,能够借助 Cloud 的力量,从而空出资源进行视频通话或是使用协同白板。
持续还清技术债务并自动化手动流程是一项长期的投资。这如同入会健身,开始总是伴随着“重振旗鼓”的决心。一年过去,我们的团队明显地变得更为强壮,工作节奏也更快,拥有更多的空间去试验新技术。我们特别期待与 AI 工具的深入实验,如编码助理,以及在我们的 AI 平台上搭建的各种机会。
确实,开发者在他们的职责中发现了更多的乐趣。当我们推出这一措施时,开发者的满意度指标仅略低于 50%。现在我们已经稳步朝着 9 月份达到 71% 的目标前进,这主要归功于我们赋权给团队的决策。这可能是最为鼓舞人心的迹象。
代码库与人体有许多相似之处:如果你好好照顾它,它就会回馈你;但如果你忽略了它的维护,最终会带来严重的后果。这不仅是一个项目,更是一种生活方式。永远都有下一步等着我们。我为我们能在如此短的时间内走这么远而感到自豪。