什么是敏捷开发?

敏捷 开发是一个术语,用于描述迭代软件开发。 迭代软件开发通过完成短周期的工作(通常称为冲刺)缩短DevOps生命周期。 冲刺通常长达一到四周。 敏捷开发通常与传统或瀑布式开发形成鲜明对比,后者提前计划大型项目,并根据计划完成这些项目。

要在每次冲刺中交付生产质量代码,敏捷开发团队需要适应加快的节奏。 所有编码、测试和质量验证都必须在每一个冲刺中完成。 除非团队设置得当,否则结果可能低于预期。 虽然这些失望提供了很好的学习机会,但开始之前,学习一些关键教训会很有帮助。

本文介绍了敏捷开发团队的一些关键成功因素:

  • 有效待办事项改进
  • 尽早且频繁地进行集成
  • 尽量减少技术债务

认真待办事项优化

敏捷开发团队可应对大量要求,这些要求通常称为 用户情景。 待办事项进行了优先级排序,最重要的用户故事放在最上面。 产品所有者负责待办事项,并根据客户需求添加、更改和重新排序用户故事。

包含多个列的看板的图像。在每个列中,可以看到一些卡片。

敏捷团队工作效率的最大拖累之一是定义不善的积压工作。 团队必须有明确定义的要求,否则无法持续交付高质量的软件。

产品负责人的工作是确保在每次冲刺中,工程师都有明确定义的用户故事可以开展工作。 待办事项列表顶部的用户故事应始终准备好供团队启动。 这种概念称为待办事项梳理。 为敏捷开发团队准备待办事项需要付出努力和坚持。 幸运的是,这很值得投资。

优化积压工作时,请记住以下关键注意事项。

  1. 完善用户故事通常是一项长期活动。 优雅的用户界面、美丽的屏幕设计以及客户满意的解决方案都花费时间和精力来创建。 勤奋的产品所有者会提前两个到三个冲刺细化用户故事。 他们将这些设计迭代和客户反馈考虑在内。 他们努力确保每位用户的故事都是敏捷团队为交付给客户而自豪的。

  2. 除非团队确认,否则用户故事不会被细化。 团队需要评审用户故事,并同意它已准备好开展工作。 如果团队在冲刺的第一天才看到用户情景,可能会遇到问题。

  3. 在积压工作列表中排在后面的用户故事可能仍然模糊不清。 不要浪费时间优化低优先级项目。 专注于积压工作顶部。

早期并频繁地进行集成

持续集成持续交付 (CI/CD)使团队适应敏捷开发的快速节奏。 尽快自动化生成、测试和部署流水线。 将自动化设置为团队在启动新项目时处理的第一项任务之一。

借助自动化,团队可以避免速度缓慢、容易出错和耗时的手动部署过程。 由于团队每次冲刺都会发布结果,因此没有时间手动执行这些任务。

CI/CD 还会影响软件体系结构。 它可确保交付可生成和可部署的软件。 当团队实现难以部署的功能时,如果生成和部署失败,他们就会立即意识到。 CI/CD 强制团队在部署问题出现时加以解决。 然后,该产品始终准备好交付。

显示 CI 生成随时间推移的状态的抽象条形图。大多数生成成功。只有少数失败。

有一些关键的 CI/CD 活动对于有效的敏捷开发至关重要。

  1. 单元测试。 单元测试是针对人为错误的第一个防御措施。 将单元测试视为编程的一部分。 将测试与代码一起提交。 将单元测试纳入每次构建。 失败的单元测试意味着生成失败。

  2. 构建自动化 生成系统应在构建开始时直接从源代码管理中拉取代码和测试。

  3. 分支和构建策略。 配置分支和生成策略,以在团队将代码签入到特定分支时自动生成。

  4. 部署到环境。 设置一个发布管道,该管道自动将生成项目部署到模拟生产环境。

最小化技术债务

处理个人财务时,避免债务要比摆脱债务更容易。 同一规则适用于技术债务。 技术债务包括团队因之前采取权宜之计而需要应对的任何事项。 例如,如果你的日程安排很紧,你可能会牺牲质量来满足最后期限。 技术债务是你稍后必须付出的代价,当你需要重构代码来弥补质量的不足。 示例包括修复以解决设计不佳、bug、性能、操作、辅助功能及其他问题。

管理技术债务需要勇气。 重新编写代码面临许多延迟的压力。 处理功能和忽略债务感觉很好。 不幸的是,有人必须尽快偿还技术债务。 就像金融债务一样,技术债务随着时间的推移越来越难偿还。 出色的产品负责人与团队合作,以确保在每个迭代中都有时间偿还技术债务。 平衡减少技术债务与功能开发是一项艰巨的任务。 幸运的是,有一些简单的技术可用于 创建以客户为中心的高效团队

始终保持敏捷

敏捷意味着从经验中学习并不断改进。 敏捷开发提供比传统项目规划更多的学习周期,因为流程循环更紧密。 每个冲刺都为团队提供了一些学习的新内容。

例如:

  • 团队为客户提供价值、获取反馈,然后根据该反馈修改积压工作。
  • 他们了解到他们的自动化构建缺失关键测试。 他们计划在下一个冲刺中进行工作以解决此问题。
  • 他们发现某些功能在生产中性能不佳,因此他们制定提高性能的计划。
  • 团队中的有人听说新的做法。 团队决定尝试一些短跑。

刚开始敏捷开发的团队应该期待更多的学习机会。 他们是该过程的宝贵部分,因为它们导致增长和改善。

后续步骤

有许多方法可以选择适合团队的敏捷开发流程。 Azure DevOps 提供了各种流程模板。 正在为其规划查找不同基线结构的团队可以使用这些模板作为起点。 有关选择最适合团队文化和目标的流程模板的信息,请参阅 “选择要在 Azure Boards 中工作的进程流或流程模板”。

随着组织的发展,保持纪律可能是一个挑战。 详细了解如何将 敏捷缩放到大型团队