敏捷 开发是一个术语,用于描述迭代软件开发。 迭代软件开发通过完成短周期的工作(通常称为冲刺)缩短DevOps生命周期。 冲刺通常长达一到四周。 敏捷开发通常与传统或瀑布式开发形成鲜明对比,后者提前计划大型项目,并根据计划完成这些项目。
要在每次冲刺中交付生产质量代码,敏捷开发团队需要适应加快的节奏。 所有编码、测试和质量验证都必须在每一个冲刺中完成。 除非团队设置得当,否则结果可能低于预期。 虽然这些失望提供了很好的学习机会,但开始之前,学习一些关键教训会很有帮助。
本文介绍了敏捷开发团队的一些关键成功因素:
- 有效待办事项改进
- 尽早且频繁地进行集成
- 尽量减少技术债务
认真待办事项优化
敏捷开发团队可应对大量要求,这些要求通常称为 用户情景。 待办事项进行了优先级排序,最重要的用户故事放在最上面。 产品所有者负责待办事项,并根据客户需求添加、更改和重新排序用户故事。
敏捷团队工作效率的最大拖累之一是定义不善的积压工作。 团队必须有明确定义的要求,否则无法持续交付高质量的软件。
产品负责人的工作是确保在每次冲刺中,工程师都有明确定义的用户故事可以开展工作。 待办事项列表顶部的用户故事应始终准备好供团队启动。 这种概念称为待办事项梳理。 为敏捷开发团队准备待办事项需要付出努力和坚持。 幸运的是,这很值得投资。
优化积压工作时,请记住以下关键注意事项。
完善用户故事通常是一项长期活动。 优雅的用户界面、美丽的屏幕设计以及客户满意的解决方案都花费时间和精力来创建。 勤奋的产品所有者会提前两个到三个冲刺细化用户故事。 他们将这些设计迭代和客户反馈考虑在内。 他们努力确保每位用户的故事都是敏捷团队为交付给客户而自豪的。
除非团队确认,否则用户故事不会被细化。 团队需要评审用户故事,并同意它已准备好开展工作。 如果团队在冲刺的第一天才看到用户情景,可能会遇到问题。
在积压工作列表中排在后面的用户故事可能仍然模糊不清。 不要浪费时间优化低优先级项目。 专注于积压工作顶部。
早期并频繁地进行集成
持续集成 和 持续交付 (CI/CD)使团队适应敏捷开发的快速节奏。 尽快自动化生成、测试和部署流水线。 将自动化设置为团队在启动新项目时处理的第一项任务之一。
借助自动化,团队可以避免速度缓慢、容易出错和耗时的手动部署过程。 由于团队每次冲刺都会发布结果,因此没有时间手动执行这些任务。
CI/CD 还会影响软件体系结构。 它可确保交付可生成和可部署的软件。 当团队实现难以部署的功能时,如果生成和部署失败,他们就会立即意识到。 CI/CD 强制团队在部署问题出现时加以解决。 然后,该产品始终准备好交付。
有一些关键的 CI/CD 活动对于有效的敏捷开发至关重要。
单元测试。 单元测试是针对人为错误的第一个防御措施。 将单元测试视为编程的一部分。 将测试与代码一起提交。 将单元测试纳入每次构建。 失败的单元测试意味着生成失败。
构建自动化 生成系统应在构建开始时直接从源代码管理中拉取代码和测试。
分支和构建策略。 配置分支和生成策略,以在团队将代码签入到特定分支时自动生成。
部署到环境。 设置一个发布管道,该管道自动将生成项目部署到模拟生产环境。
最小化技术债务
处理个人财务时,避免债务要比摆脱债务更容易。 同一规则适用于技术债务。 技术债务包括团队因之前采取权宜之计而需要应对的任何事项。 例如,如果你的日程安排很紧,你可能会牺牲质量来满足最后期限。 技术债务是你稍后必须付出的代价,当你需要重构代码来弥补质量的不足。 示例包括修复以解决设计不佳、bug、性能、操作、辅助功能及其他问题。
管理技术债务需要勇气。 重新编写代码面临许多延迟的压力。 处理功能和忽略债务感觉很好。 不幸的是,有人必须尽快偿还技术债务。 就像金融债务一样,技术债务随着时间的推移越来越难偿还。 出色的产品负责人与团队合作,以确保在每个迭代中都有时间偿还技术债务。 平衡减少技术债务与功能开发是一项艰巨的任务。 幸运的是,有一些简单的技术可用于 创建以客户为中心的高效团队。
始终保持敏捷
敏捷意味着从经验中学习并不断改进。 敏捷开发提供比传统项目规划更多的学习周期,因为流程循环更紧密。 每个冲刺都为团队提供了一些学习的新内容。
例如:
- 团队为客户提供价值、获取反馈,然后根据该反馈修改积压工作。
- 他们了解到他们的自动化构建缺失关键测试。 他们计划在下一个冲刺中进行工作以解决此问题。
- 他们发现某些功能在生产中性能不佳,因此他们制定提高性能的计划。
- 团队中的有人听说新的做法。 团队决定尝试一些短跑。
刚开始敏捷开发的团队应该期待更多的学习机会。 他们是该过程的宝贵部分,因为它们导致增长和改善。
后续步骤
有许多方法可以选择适合团队的敏捷开发流程。 Azure DevOps 提供了各种流程模板。 正在为其规划查找不同基线结构的团队可以使用这些模板作为起点。 有关选择最适合团队文化和目标的流程模板的信息,请参阅 “选择要在 Azure Boards 中工作的进程流或流程模板”。
随着组织的发展,保持纪律可能是一个挑战。 详细了解如何将 敏捷缩放到大型团队。