译者 | 布加迪
审校 | 重楼
大约十年前我是一名CIO,当时我在评估一种技术解决方案,向潜在供应商的代表讲明了我们的主要需求。他展示了该公司的至少三款产品。每种工具都有各自的用户体验、开发方法和学习要求,但是解决我们的业务需求同时需要这三种工具。作为CIO,我认识到我团队的不同成员要么需要协作使用这些不同的工具,要么我必须雇用能够掌握所有这些工具的更高级的开发者。由于牵涉开发的复杂性,后来我决定不购置这种技术解决方案。
开发者体验概念在那时并不是一个主要或可衡量的目标。很少有企业领导人考虑到提高开发者满意度、生产力和幸福感带来的价值。但领先的首席技术官、数字开拓者、交付经理和技术主管都明白其重要性。这就是为什么我们购买庞大的多显示器工作空间、升级桌面以使用功能最强大的设备、添置桌式足球桌以鼓励工作休息,并与开发团队一起庆祝主要版本的发布。
Newgen Software的产品管理主管Varun Goswami分享了Gartner的调查结果;调查显示,58%的软件工程领导者表示,开发者体验对公司高管至关重要。他说:“这标志着越来越需要对用户友好的整洁界面,需要集成式生态系统,为开发、项目管理、文档、代码存储库和无缝协作提供一个集中式中心。”
优先考虑开发者体验的组织中的开发者更有可能通过创新取悦最终用户,按时发布高质量的代码,并努力在软件开发过程中日臻完善。出色开发者体验的一些要素离不开最出色的工具、尽量小的干扰、精简的流程以及知道自己的工作受到赞赏。以下是企业打造出色开发者体验的10种方法。
如何打造出色的开发者体验?
1. 培养多元化的开发者团队
优秀的开发者体验需要一种奖励多样性、创新、协作、持续改进、合理实验和终身学习的公司文化。
Buildkite的创始人兼首席执行官Keith Pitt表示:“以开发者为中心的公司往往过于注重渴望结构和组织的员工。虽然这类员工必不可少,但组织还必须培养一种文化,重视推动创新想法的有创意的开发者。在一个日益自动化的行业,IT领导者需要打造鼓励创造力的环境,而不是惩罚适当的风险,这样有远见的人才能茁壮成长。”
技术领导者推动文化的一种方式是,奖励其行为和影响与组织目标相匹配的团队成员。
2. 实现工具标准化,以提高生产力
一种观点认为,开发团队应该自由地使用自己青睐的工具。另一种观点建议组织专门成立一个小型架构团队,以创建标准并决定使用哪些工具。中间立场是让开发者可以为所需的工具和能力创建自组织标准,同时对带来显著好处的新技术奉行开放的态度。
Couchbase的开发者关系和策略总监Laurent Doguin说:“随着新的工具、语言和流程的引入,开发者体验方面的差异越来越大,这些新工具、语言和流程可能与开发者的原有工作流程发生冲突。真正的胜利来自让他们可以轻松完成工作的工具,尤其是当开发者尝试使用生成式人工智能来自动完成样板代码生成、重构或文档编写之类的任务时,更是如此。”
构建优秀的开发者体验需要开发平台和利用现有工具,而领导者需要创造学用技术、运用最佳实践的机会。他们还需要制定一套透明的流程以遴选和试用新技术,并传达投资标准方面的明确指导原则。
LaunchDarkly的产品孵化高级总监Cody De Arkland表示:“开发者现在比以往任何时候更愿意寻找容易见效的道路,光有先进的功能已不够——构建的时间和下一次创新的时间必须很短。这意味着简化配置、设置智能默认值,并且有设置高级配置的选项。”
预计开发者定制其数字工作空间的一切会妨碍每个人交付新技术和新特性的能力。
3. 系统地处理技术债务
对于开发者来说,继承糟糕构建的代码,然后在紧迫的期限内改进功能面临很大的压力。企业通常过于关注功能开发,而不向开发团队询问应用程序的哪些方面需要升级。
vFunction的首席生态系统官Bob Quillin表示:“在快速前进和保持竞争力的形势下,企业正以前所未有的方式积累技术债务。技术债务(尤其是架构技术债务)会降低团队士气,加大添加新功能并利用生成式人工智能等新技术的难度,耗尽资源,并阻碍开发者留任和保持生产力。”
为了改善开发者体验,不妨为敏捷开发团队设定清晰的目标,以便持续减少技术债务,为明确技术债务问题制定一套清晰的流程,并为团队应该如何优先处理技术债务的补救确立清晰的指导方针。部门应该考虑几种形式的技术债务,包括数据债务、操作债务、安全债务和架构债务。
Quillin补充道:“了解应用程序的当前架构让开发者可以优先考虑烦人的应用程序问题,并及时解决问题,以免酿成中断。架构可观测性促成了一种文化转变,使开发者能够将技术债务补救与项目目标结合起来,更容易抛开一直在拖累发布周期和影响弹性的技术债务负担。”
4. 向开发者寻求架构决策方面的意见
我在《Digital Trailblazer》一书中推荐敏捷回顾会议、包容性解决方案头脑风暴会议和没有指责他人的事后分析,这些是打造出色开发者体验的基本做法。在定义架构和选择开发框架时,我认为主持集体辩论、做出决策、征求反馈和不断完善标准都是开发者应该参与的支持性实践。
摩根大通的工程师平台和体验主管Sandhya Sridharan表示:“如今组织要求工程师是超人,通晓无数技术、基础设施和网络等,这常常导致认知超载。为了有效地简化软件开发,建立强大的基础平台和促进自助服务模式的平台至关重要。”
在获取开发者的意见、促进试验和推动标准之间找到适当的平衡并非易事,尤其在拥有许多类型的平台和应用程的大企业中。统一规定标准降低了开发者体验,因此表明做出架构决策的方式和原因很重要。
Sridharan表示:“虽然这似乎显而易见,但需要领导者回答工程师面临的挑战以及总体业务优先事项方面的问题,确保平台不仅可靠、可扩展和安全,还能够通过提供一套模式和意见来抽取复杂性,从而使开发者始终在‘流程’中。”
寻求最佳开发者体验的公司还必须考虑到技能组合和新开发者入职的难易程度方面的差异。架构师和开发者在何处需要标准、何处灵活性更有利以及创建何种说明文档等问题上应该如何合作出现不同的意见,不足为奇。
Descope的联合创始人Gilad Shriki表示:“在构建开发工具产品时,在‘自成一体’的产品与‘开放’的产品之间保持一种平衡至关重要。过于自成一体可能会限制用户基础,而过于开放可能会吓倒早期阶段的开发者。为了兼顾两者,要确保一种独特的产品方法,有明确的好处和‘最终状态’,以及充足的补充材料、示例代码库、教程和社区支持。”
5. 使用工具和标准以加强协作
开发者往往讨厌频繁或没有成效的会议,更喜欢使用协作工具来介绍项目进展。StreamAlive的联合创始人兼首席技术官Joseph Varghese表示,缺乏统一的团队协作、沟通和文档编制方法的组织可能会影响开发者体验和生产力。
“在引入开发者和技术人才时,许多公司缺乏诱人的工具和资源来打造透明和吸引人的文化来鼓励沟通和合作,这阻碍了开发者体验。由于技术团队和开发人才通常是组织的支柱,因此他们能够与组织内的其他团队成员有效地讨论问题和潜在的解决方案至关重要。”
交付主管应致力于在以下几个方面制定标准:
- 用于编写用户故事的模板,包括验收标准和嵌入的图表
- 记录每周更新而不是安排状态更新会议的标准
- 每个产品版本发布后必须更新文档需求
- 使用虚拟会议和异步通讯技术作为有效沟通工具的最佳实践
优秀开发者体验通过使用连接到开发工作流的标准化工具和设置明确的沟通预期目标,将重点放在协作上。
6. 阐明基础设施和运营职责
大约10年前,我问谁负责Devops,并建议IT运营莫浪费时间。当时的想法是学习云基础设施和Devops自动化工具,以巩固高效、协作、创新和可靠的Devops运营模式。
如今,有许多新工具可以管理、自动化和保护云基础设施,这推动了开发者和运营人员的职责发生转变。
Persistent Systems的首席数据科学家Dattaraj Rao表示:“在今天的云基础设施领域,开发者正在经历一场变革性转变,从单纯的编码转变为负责全面服务。开发者现在编写、发布和运行应用程序,而基础设施是动态编程和配置的。这种向全面负责的演变得益于容易访问的基于云的人工智能服务,它们造就了复杂的解决方案。”
当希望改善开发者体验时,确定谁负责基础设施和其他运营职责很重要。没有一刀切的方法:法规、应用程序类型、使用规模、数据复杂性和安全考虑只是决定组织和团队职责的几个因素。
7. 建立质量标准和度量指标
编程助手和代码生成器是否总是准确、高质量、有用的?我在文章《what’s hype and where to drive results with AI copilots》中引用了一项研究,显示用户接受了编程助手建议的30%的代码,这意味着代码建议在用于应用程序中之前需要审核和验证。
Sonar的开发者倡导者Jonathan Vila问道:“市面上到处都是帮助生成代码的工具,包括IDE、插件和在线服务。人工智能正成为所有工具的标配,但代价又是什么?”
审核工具时,特别是旨在提高生产力的生成式人工智能工具,提高开发者体验的明智方法就需要定义质量标准,并使用自动化工具来验证结果。
Vila补充道:“将AI生成的代码添加到我们的代码存储库之前,有必要进行核查。代码检查器和质量检验关是完美的看门员,可以在不影响代码库的情况下从AI获得最大的价值。”
如果团队在设计和开发应用程序时关注自身开发者体验的质量和效率,更有可能做同样的事情。定义质量标准和度量指标确保了开发者有明确的预期目标和验收标准。
8. 衔接应用程序安全团队和开发团队
落实安全最佳实践并不容易,但是责备开发者发布无意的漏洞、在没有安全审查的情况下添加组件,或者花太长时间来修补应用程序存在很大的问题。旨在改善开发者体验的组织必须想方设法衔接应用程序安全团队和开发团队。
现已退休的Netflix前信息安全副总裁Jason Chan表示:“应用程序安全团队始终出于好意,我们希望将组织面临的风险降到最低,并提高软件质量。然而,我们传统的工作方式与开发体验完全相反。”
Chan针对应用程序安全现代化、注重开发者体验的三个建议包括:尽量减少可能阻碍构建的低优先级安全问题、帮助开发者构建默认安全配置以及只上报经过验证的漏洞或发现的结果。
9. 营造避免技术倦怠的文化
如果工作环境压力太大,开发者精疲力竭,那么致力于工具、文化和协作以改善开发者体验会变得毫无意义。在之前一篇关于减轻DevSecOps团队压力的文章中,我建议领导者培养一种高效的组织文化,摈弃事无巨细的管理方法,并优先考虑如何减轻压力。
JetBrains《2023年开发者生态系统现状》报告指出,73%的开发者在职业生涯中经历过倦怠,45%的开发者使用自我监测应用程序或设备来跟踪身体活动、睡眠质量或健康状况。
解决心理健康问题非常重要,不然可能危及生命。如果你或你认识的人备受折磨,建议寻求专业帮助。
10. 提高开发团队的业务敏锐度
仅仅关注工具、技术、流程、协作和文化是无法改善开发者体验的。只有得到业务利益相关者和最终用户的支持,毕竟他们欣赏开发团队的创新和努力,开发者体验才会得到极大的改善。
赢得这种欣赏的一种方法是鼓励开发者提高业务敏锐度。了解公司是如何赚钱的、为什么客户选择其产品或服务以及不同的部门如何在利用他们开发的技术。只有利益相关者看到开发者理解他们的观点和优先事项,更有可能支持改进开发者体验的工作。
结语
鉴于更多的公司寻求生成式人工智能功能、技术驱动的生产力改进和客户体验方面的进步,开发团队面临的压力在未来几年不太可能减轻。致力于改善开发者体验的数字开拓者将更容易招聘和留人,并从开发团队获得可喜的成果。
原文标题:10 principles for creating a great developer experience,作者:Isaac Sacolick