揭秘平台工程如何减轻工程师的认知负荷

过去几十年来,开发人员创造了无数的流行语,描述了加入和理解公司代码库的艰难历程。除了遵循 DevOps "you build it, you run it" 的口号外,尝试明智地选择工具、框架和方法论也导致软件开发人员的认知负荷飙升,需要投入大量精力和资源来理解、创建和维护日益复杂的软件。

为减轻这种认知负荷过重的挑战,开发人员可采用平台工程这种结构化方法,通过简化流程、提供标准化工具和自动执行重复性任务来减轻软件开发生命周期的压力

本文介绍了以下内容:

  • 认知负荷对开发人员工作效率的影响。

  • 平台工程减轻认知负荷、提高生产力和促进软件开发的方法。

01 了解软件开发中的认知负荷

根据 John Sweller 的定义,认知负荷是指执行一项任务所需的智力努力或信息处理量。就软件开发而言,认知负荷是指处理软件产品时所涉及的分析工作,因任务和个人情况而异。

Robert Martin 也指出,开发人员花费在阅读和理解代码上的时间与花费在编写代码上的时间之比远远超过 10:1。不仅如此,认知负荷是一种普遍存在的困扰,一旦过度就会加剧,从而限制人们有效处理和记忆信息的数量,导致任务完成延迟、错误和次优解决方案,并加重压力,有可能造成职业倦怠,降低工作满意度。

02 辨识平台工程

平台工程是为自助服务功能设计、构建工具链和工作流程的实践,可降低云端原生时代软件开发的复杂性和不确定性。其中最重要的就是内部开发人员平台(IDP),它能可靠地管理应用程序配置,在必要时构建新的全面配置环境,为持续交付或部署提供流水线,更重要的是能确保开发项目的安全。

举个例子,在传统的情况下,启动一个新项目需要花费数小时手动配置开发环境。而现在,想象一下你有一个图形界面(或命令行界面 - CLI)来协调复杂的软件开发流程。如果您使用的是IDP,有了它的功能辅佐,您只需在界面或 CLI 中执行命令,指定您的偏好:IDP 将自动管理所有配置以启动环境。

更重要的是,像平台工程这样的变革性方法能够实现重复性任务的自动化,加快任务的完成速度并减轻软件工程师的精神压力,消除人为错误

03 重新定义开发人员工作流程

近几十年来,技术的发展缓加速了软件开发过程。其中最突出的是革命性的 DevOps 的功能,它通过促进协作、自动化、持续集成和交付,促就了平台工程。令人印象深刻的是,DevOps能够:

  • 通过让自动化在简化任务(例如通过 CI/CD 流水线进行测试和部署)方面发挥核心作用,弥合开发和运维之间的差距,从而实现更快、更可靠的软件发布。

  • 通过自动化代码集成和部署减少认知负荷,使开发人员能够专注于解决问题和创新。

04 平台工程对生产力的影响

根据 Puppet 的调查报告显示,在拥有强大平台工程实践的组织中,37% 的受访者对其产品交付流程的有效性表示 "非常满意"。这样积极的认可说明开发人员的体验得到了增强,也无疑提高了工作效率。

具体来说,平台工程有两个重要功能:

  • 通过一套统一的工具和框架简化开发项目的启动。

  • 通过内部开发人员平台为开发人员提供测试和部署代码所需的一切,最大限度地减少整个开发生命周期中的延迟。

想象一下,你的开发人员在不同的分支上开发同一个项目时,当其中一人提交修改并推送代码时,IDP 会运行所有流水线,检查兼容性,将代码转换为成品,并在所有选定的服务器和环境中运行。在传统情况下,开发人员本应跟踪并监督整个流程,手动启动每个阶段。但在平台工程中,所有这些重复性任务都由 IDP 自动执行,开发人员无需采取进一步行动。

05 利用平台工程的优势

DevOps 的原则强制要求开发人员负责编写、部署和维护生产环境中的代码,无形中加重了技术专业人员的认知负荷。而平台工程通过以下优势克服了这一问题:

  • 降低复杂性:平台工程能够找到并建议正确的抽象层次,使开发人员能够绕过复杂的基础架构设置和配置。

  • 强大的协作和知识共享:平台工程通过同一套工具、实践和方法促进跨团队协作,因此团队之间也可以随时相互学习,开发阶段之间没有任何间隙。

  • 一致性和可靠性:借助标准化的工具、流程和基础架构,平台工程可最大限度地减少测试、部署或维护过程中因配置导致的错误,从而确保开发流水线的一致性和可靠性。

  • 缩短产品上市时间:平台工程的开发流程自动化能力、可重复使用的组件以及跨职能合作伙伴关系的倡导,都加快了产品的交付速度。

  • 延续 DevOps 的自然演进:基于 DevOps 增强软件开发流程的核心理念,平台工程为该流程建立了端到端的自助服务设置。

06 创建可行的平台:为开发人员铺平道路

Golden paths 指的是一种有指导、有良好支持的软件开发技术,它能与可行的平台和谐共处,在这些平台上有标准化的云环境,可简化流程。专门的内部团队负责策划和维护这些平台的底层技术堆栈、基础设施和云空间,使这些平台发挥加速器的作用,从而软件工程师也就无需为每次的项目重新规划。

07 克服认知负荷

Itrevolution 的《2022 DevOps Enterprise Forum Guidance》报告称,76% 的受访企业认为,学习软件架构所需的认知负荷非常沉重,是开发人员焦虑和工作效率低下的根源。

因此,为了克服认知负荷,开发人员可以考虑采取以下策略:

  • 简化:遵循良好的编码规范,确保代码易于理解、维护和调试,例如,优先考虑表述清晰而不是灵敏度,创建描述性名称、注释并记录代码。避免嵌套循环和条件、不必要的复杂逻辑和过度设计。

  • 抽象化和模块化:抽象代码,使其更易于操作。此外,还可以将代码模块化,将其分解为独立的小模块,这些模块可以重复使用和组装,以形成不同的应用程序。这也便于开发人员生成易于理解、维护和扩展的解决方案。

  • 向他人学习:可以考虑加入开源项目和社区,向有经验的开发人员学习解决问题,简化流程和程序的方法。此外,也能通过参与代码审查、与同行合作项目以及寻求反馈,学习编码风格和优秀实践。

  • 注意休息:长时间高强度编码而不休息也是导致认知超负荷的原因之一。通过合理的安排和休息,您可以适当放松身体,重新获得注意力和动力。也可以考虑采用 Pomodoro Technique,在规定的时间内工作,然后稍作休息,以保持注意力,防止精疲力竭。

08 总结

随着技术的进步,开发人员在构建、测试和部署应用程序的过程中必然会承受越来越重的认知负荷,从而降低工作效率,降低代码质量,更不用说承受更大的压力而甚至产生职业倦怠。

平台工程提供自助服务平台,由标准化的工具生态系统、框架和工作流程组成,可抽象出许多底层复杂性,并简化软件开发和交付。这样,开发人员就可以集中精力开发创新解决方案,而不必再去处理管理部署和基础设施这些琐碎的工作。

同时,得益于开发人员可以快速迭代、测试和发布软件,更及时地提供新功能和增强功能,开发周期也变得更加敏捷。更重要的是,由此产生的更健康、更可持续的工作环境不仅有助于防止职业倦怠,还利于开发人员发挥最佳水平,跟上不断发展的技术环境的要求。

你可能感兴趣的:(平台工程,运维)