发布于 2026-01-06 1 阅读
0

开发者体验的五大理想

开发者体验的五大理想

“开发者体验”这个词经常被随意使用,却鲜少有人解释。你可能在开发者社区里见过它,用来形容使用某些公共 API 有多么便捷;或者你的公司可能参加过各种各样的最佳职场评选。招聘广告或许会承诺提供“天堂般的开发者体验”,比如乒乓球桌或者冰箱里满满的啤酒和披萨。然而,对我而言,开发者体验的真谛在于做好本职工作,同时保持自身在这个行业中的能力。

有两本书深深触动了我,它们对开发者体验的阐述也十分到位,分别是《凤凰项目》(Kim、Behr、Spafford,2013)及其主题续作《独角兽项目》(Kim,2019)。这两本书都试图解决现代软件公司中存在的技术、运营和文化问题。《凤凰项目》着重讲述了一个IT部门如何完成DevOps转型的故事,而《独角兽项目》则从一位女性开发者及其团队的视角讲述了同样的故事。作为一名开发者,我对后一本书更感兴趣。

《独角兽计划》的核心在于作者观察到的众多技术组织痛点中的五个理念。我将在下文中略作修改后列出这些理念。所有观察均基于书中虚构的情节以及我作为软件工程师与不同人员共事的真实经历。它们共同为提升开发者体验奠定了基础。

我将省略中间步骤——消​​除反模式并采用补救措施——因为这始终因企业而异,非常主观。如果您想了解其中的来龙去脉,我强烈推荐您阅读相关书籍。它们可能是我在商业书籍方面投资回报率最高的。


五大理想

1. 保持简单,保持本地化

“如果一个团队需要安排部署,而这需要其他 40 到 50 个团队配合才能完成,那么任何事情都无法完成。如果一个团队在开发单个功能时需要与 2 个或更多其他开发团队协调,只会给所有这些团队带来延误和挑战。”

💀反模式

当开发人员克隆并构建一个现有项目时,需要花费数天时间才能完成,因为他们需要搜索内网以查找不足的文档、配置参数和神奇的 shell 命令,才能使应用程序在他们的环境中运行。

由于巨大的技术债务,该应用程序变得极其复杂,以至于人们开始不惜一切代价避免修改代码。每添加一个新功能都需要在多个不同位置修改代码,而编写测试往往被忽视。因此,每一行新代码都可能导致应用程序崩溃,但直到流程后期才会被发现——通常是在生产环境部署出错并导致关键数据丢失之后。

开发人员必须在一个与实际生产系统完全不同的共享开发环境中工作,而且需要提交大量工单才能获得访问权限。此外,由于一位过于专断的首席信息安全官推行的过于严格的IT策略,该开发环境经常出现故障,并且限制了定制生产力软件的使用。

质量保证(QA)专员在一个完全独立于开发人员的部门工作。他们与开发人员的唯一沟通渠道是工单系统。QA 会收到未经开发人员测试的变更,这迫使他们在花费数小时进行手动测试后,还要花费大量时间填写缺陷报告。由于没有专门的测试环境,QA 必须从头开始构建应用程序来验证功能,这对他们来说也十分痛苦。

开发人员和测试人员都不允许自行执行部署等关键任务,因为这些任务需要向IT运维团队提交工单。从右到左的反馈流程需要数周时间才能完成,这有效地阻碍了学习和实验。

💉补救措施

项目旨在供开发者在自助服务平台上运行,既可以作为云原生无服务器应用,也可以通过 Docker 或 Vagrant 镜像分发到开发者的笔记本电脑上进行构建。所有镜像的设计都与生产环境高度一致。开发者只需克隆项目并使用一条命令即可完成构建。运行测试、修复代码风格问题和部署应用等日常任务均通过任务运行器实现,并且其使用方法已提供完善的文档。

通过积极的重构来降低技术债务,这样开发人员就可以花时间为他们发布的每个新功能编写快乐测试用例和悲伤测试用例。

QA人员还可以利用基础设施即代码(IaC)方法,自助搭建新的测试环境。他们只需借助版本控制系统中存储的几个配置文件,即可安装可移植的测试环境。利用这些环境,QA人员可以执行探索性测试,发现自动化测试未能发现或即使是坐在他们旁边的开发人员也想不到的所有潜在缺陷。

变更部署只需一条命令即可完成,无需依赖其他团队。反馈周期缩短至几分钟,从而可以判断潜在风险的变更是否值得提交,以及是否应该回滚。

2. 喜悦必须流淌

“当开发者能够专注于开发代码,并将依赖项、延迟和障碍降至最低时,就能创造价值流,从而带来快乐。”

💀反模式

开发人员不得不频繁切换工作内容,以至于日常工作几乎没有任何重点或方向可言。办公室已变成一个永无休止的混乱、干扰和焦虑之地。远程办公要么被禁止,要么变得异常困难。开发人员每天需要参加多个冗长的会议才能完成工作。而当会议之外,他们又会被铺天盖地的信息和邮件轰炸,这些信息和邮件都在竭力吸引他们的注意力。

开发人员的工作流程和专注力经常受到干扰,因为他们甚至连最简单的任务都不得不依赖其他团队来完成。结果,任务经常被推迟,个人积压的工作量也越来越大,让每个人都感到沮丧。

💉补救措施

会议仅在万不得已的情况下才会安排。如果必须召开会议,议程会制定得极其详尽,邀请函也会尽早发出,以便参会人员有充足的时间准备。如果工作进展顺利,拒绝会议也不会被视为禁忌。

大部分信息交流都是异步进行的,以书面形式而非口头形式进行。同事们都明白,少数紧急问题必须立即回复。我们鼓励开发人员关闭消息通知,并预留时间专注于开发。除了火警警报之外,他们不应该受到任何其他干扰。

3. 提升自我和工作能力

“Facebook、亚马逊、Netflix、谷歌、eBay、LinkedIn、微软等FANG(Facebook、亚马逊、Netflix、谷歌、eBay、LinkedIn、微软)等精英企业之所以成功,是因为它们都做出了偿还技术债务的自觉决定。它们竭尽所能确保开发人员的日常工作能够顺利进行,尽可能减少中断和障碍。另一方面,有些公司,比如诺基亚,并没有优先考虑解决技术债务或对其技术和架构进行现代化改造。”

💀反模式

团队没有时间偿还系统中不断累积的技术债务。他们被要求在现有运行不佳的单体代码库之上持续编写新功能,而这个代码库本应早已拆分成多个更小的模块或完全重写。更糟糕的是,业务负责人不断将新功能添加到待办事项列表中,却不了解这些功能会累积多少技术债务。

公司极力反对员工通过读书、看视频或参加课程等方式进行自我提升和技能磨练,而是鼓励他们在紧迫的日程安排下完成业务工作。公司从未派员工参加过任何会议。

💉补救措施

削减技术债务被列为公司的核心战略,即便这意味着所有新项目都必须暂停,直到债务大幅减少。现有团队的组成也会进行调整,以更好地满足每个项目的需求。如果任何工作领域与简洁和本地化的首要理念相悖,都会被列为优先解决的问题。

开发人员会安排时间进行自学,学习各种技巧和方法,以提升工作效率。他们每周还会聚在一起,互相传授新知识,无论是新的编程语言、框架、设计模式还是效率工具。公司会积极派遣开发人员参加各种课程和会议,从中汲取灵感。这些想法会被记录下来,形成提案和概念验证方案,进而催生新的规范和创新。

4. 维护心理安全的工作场所

“心理安全感是团队绩效最重要的预测因素之一。谷歌的研究确定了团队成员在多大程度上感到安全,能够谈论问题,表达自己的想法而不用担心受到责备、嘲笑或指责。”

💀反模式

开发人员害怕因为表达意见或与资深同事意见相左而被贬低和欺凌。他们的提议往往被视为无关紧要或愚蠢而遭到否决。结果,大多数开发人员选择沉默,不再关心如何提升团队的开发效率。

当发生可能造成巨大损失的生产事故时,人们往往会试图找出责任人,并渴望找到理由解雇或调换到其他团队作为惩罚。随后,公司会通过邮件向全体员工宣布事故责任人已被停职,直至另行通知。

在咖啡休息时间,办公室走廊和饮水机旁的聊天室里充斥着针对社会弱势群体的冒犯性笑话,令不同少数群体的代表感到不安。由于向管理层反映文化问题并不安全,最终会导致许多员工辞职另谋高就。

💉补救措施

我们鼓励开发人员将想法写下来并提交给团队,不必担心被嘲笑。开发人员很少会提出愚蠢的想法,他们的想法往往只是因为仓促提出,缺乏充分的研究和实用性的证据。

所有生产事故都会被重现并记录为事件时间线,并在事后进行客观的事故分析,以找出根本原因。所有参与者都一致认为,在事故发生前后,每个人都尽了最大的努力,运用了最佳的技能和知识。即使有人直接导致了事故,也不会受到惩罚,而是接受培训,以避免下次犯同样的错误。

茶歇和饮水机旁的闲聊话题都力求得体,讲笑话也遵循脱口秀的黄金法则:永远要比别人强,不要比别人弱。如果有人违反这种文化,他们的行为将被上报给经理,并以文明的方式进行讨论。

5. 聚焦核心

“核心价值创造持久的商业优势,而其他一切都是次要的。核心价值是客户愿意付费的东西,而次要价值是他们不在乎的东西。”

💀反模式

开发人员被迫使用那些既无助于减少技术债务也无助于提升客户体验的系统(核心问题)。他们每天花费大量时间维护诸如合规、记账和薪资等遗留的内部系统(背景问题),而这些系统本可以完全自动化,或者被外部供应商提供的更强大的解决方案(例如云服务)所取代。

变更提交到生产环境之前,需要经过数周的版本控制,但一旦部署到生产环境,就无法衡量其有效性。市场营销和销售团队无法制定用于实地测试的营销活动方案。最终,企业收入遭受损失。

💉补救措施

开发人员参与各种实验,他们的改动旨在减少技术债务或直接提升客户体验。所有改动都会被实时监控,并通过指标平台生成相关数据,反映团队每日多次部署的影响。与此同时,市场营销和销售团队也在不断探索更具创意、更新颖的收入增长点。

我们会审查并比较花费在重复性办公任务和客户不可见的系统上的时间,以及花费在实现业务目标上的时间。这种差异不会影响核心价值。开发人员可以通过提升公司技术和业务能力的工作来提高效率。


引文摘自 InfoQ于2019 年 11 月对Gene Kim 的采访

照片由 Marco Secchi 在 Unsplash 上拍摄。

文章来源:https://dev.to/nikoheikkila/the- Five-ideals-of-developer-experience-2lh2