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