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