在之前的文章中,我们详细介绍了平台工程的基本内容,文中指出平台团队应该采用产品的方法构建内部开发者平台,即 Platform as a Product。
内部平台面向的用户则是企业内其他部门的开发人员,因此如果要充分体现平台及平台团队的价值,那么打造优质的开发者体验(Developer Experience,即DevEx)是必不可少的一环。本文将介绍开发者体验的相关指标以及优化方法。
开发者体验是用户体验(UX)的延伸,其重点是受技术方面影响的用户,例如工具、语言和工作流程。当谈论用户体验时,通常指的是外部人员如何与我们开发的软件或网站交互,以及产品的易用性、简单性和直观性。但 DevEx 远不止是“开发人员的用户体验”:它意味着确保开发人员能够轻松地理解并利用 API 来实现他们自己的应用和用例。
开发者体验对每个组织都很重要,内部平台的优质体验可以帮助组织留住优秀的工程师。然而,通常情况下随着组织的规模越来越大,技术越来越先进,技术栈不断扩大,开发者体验通常被削弱。为了解决这一问题,许多企业开始重视内部开发工具/平台的开发者体验,将敏捷性作为其重要衡量指标之一。
为开发者提供良好的体验具体体现为可以让程序员快速上手,并将挫折感降到最低。劣质的开发者体验则是一场无休止的战斗,开发人员需要耗费大量时间和精力弄清楚代码应该做什么,如何让它运行起来,这在某些情况下会造成优秀工程师的流失。当一家公司内部的代码十分折磨人时,一个有才能的开发者就会选择手中其他的优质机会离开。
在改善开发者体验之前,企业需要确定能够准确衡量开发者体验优劣的指标,正如著名的管理顾问德鲁克所言“如果不能衡量它,那么就无法管理它”。
在软件开发中,交付时间是指从项目开始到最终代码交付的所需时间。理解开发团队的交付时间有助于了解该指标的评价标准。此外,如果交付时间缩短且最终代码交付质量很高,这说明开发团队的效率提升,也可以从侧面反映内部开发者平台拥有良好的使用体验。
自动化和协作是提升效率和加速交付的关键。优秀的 DevEx 需要合理的架构设计以及工具来实现,包括尽可能的自动化。
拥有才能的开发人员不应该把他们的时间和精力浪费在琐碎的任务上,而应该在工作流程中充分利用自动化,从而让他们把更多的时间专注在开发过程中。具体而言,这个指标可以衡量某一时期内实施的自动化流程的数量。
开发者速度反映了一个开发者在特定的时间范围内能完成多少工作。企业可以利用开发者速度指标来了解开发者的工作量。在大多数情况下,开发速度是交付一个最终功能或产品所需的全部活动和努力的总和。
观测开发者速度可以帮助团队了解消耗他们时间的常见障碍,包括缺乏持续集成和部署、上下文切换、工作分心以及流程中存在的障碍等。使用速度指标可以确定需要优化的领域。
与用户体验类似,开发者体验也包含多种客观和主观的衡量标准,用户体验的三大支柱:可用性、可寻性和可信度,也是衡量开发者体验的标准。
可用性测试是指开发者使用代码、文档或其他相关工具及产品的简易程度。通过一个内部调研收集反馈可以更充分地了解开发者使用这些组件时是轻松的还是困难的。内部调研问题示例如下:
可寻性是指软件工程师可以轻松地找到他们在工作需要的信息、系统或工具。要构建一个优秀的 DevEx 包括让基本信息有迹可“寻”,以提供最佳的用户体验。这包括提供符合逻辑和上下文的搜索结构和功能、有逻辑的文档以及根据需要不受限地访问工具。平台团队需要密切关注开发人员的反馈,当反复出现任何与可寻性有关的抱怨时,需要利用这些反馈来改善团队的流程。
可信度是指开发人员是否信任产品及其带来的优势。在开发过程中,企业可以通过创建稳定可靠的服务或产品、提供足够的资源以减轻工作压力以及支持工具来获取开发人员的信任。
另外,随着开发人员所采用的技术不断变化,满足内部开发人员使用的各种技术的扩展需求也是一大挑战。而开发人员是否继续采用平台团队的软件或服务,即一致性,是衡量可信度的一个关键指标。
值得注意的是,开发人员的高产出和优秀成果并不完全意味着开发人员对组织有足够的信任。特别是如果工作环境让开发人员感到筋疲力尽、员工流失率高、或者他们需要面对大量的技术债务时,信任度就会大打折扣。
敏捷开发的目的是提升开发速度的同时不牺牲开发质量。在这个框架中,反馈周期指为验证和接收有关软件开发过程的反馈而建立的机制。这包括了代码分析和跟踪、拉取请求和代码审查、持续集成和部署、生产前环境的性能验证、单元测试以及生产中的性能监控。
总的来说,如果能很好地集成到平台团队推出的内部开发者平台中,这个过程对于开发者来说是非常高效的,并能够减少繁琐过程带来的负面影响。例如,代码分析和跟踪以及获得关于代码性能的即时反馈。
从团队工作流程到常见问题(FAQ)以及其他琐碎的要点都要记录下来。我们的目标是创建一个知识库,作为唯一的标准来源。在软件开发过程中,有很多变化的部分,创建技术文档能够有效地跟踪这一切。这样一来,在出现任何问题时,开发人员都有一个可以参考的资料,尤其当团队加入新成员时,有一份可靠的文档可以帮助新成员更好地上手工作。
当一家公司能够培育出良好的开发者体验时,每个团队都会敏锐地意识到他们的责任和目标,以及它们为谁提供服务。因此每个团队也有一个舒适的地方来表达他们的需求和对功能的要求,以帮助他们更好地工作。
在组中中实现这一点很简单。首先要为员工创造机会和空间,通过各种团队活动,让来自不同团队的员工可以走到一起,相互学习,积极分享信息。这将有助于建立一个积极的环境,从而提高生产力。平台工程也可以成为促进理解和协作的好方法。
总而言之,创建优质的开发者体验需要平台团队的持续努力和不断改进。当企业内部拥有良好的开发者体验时,不仅意味着员工之间信任度更高,也意味着建立了一种先进的企业文化。最终,会推动员工积极履行自己的职责,从而为企业带来巨大的发展。