敏捷开发是提供工作效率的利器,但是用得不好效果反而会更差。所以,需要很多的实践去总结它,不能因为项目紧迫就随意而为。
敏捷开发之任务列表
产品列表的核心在于故事。故事的重要性划分,实现故事的人天,如何演示故事等等。而任务列表是对故事实现的一个拆分,内容更加细化,实现更注重技术。
下面是一个任务列表的常用报表。包括:未开始,开始,完成,以及燃尽图四块。
前三块,可以拆分到人天的工作量,在后续每日早会中,统计每日完成情况。后一块燃尽图表是对整个故事完成情况的一个汇总。
燃尽图由时间和任务点两个维度组成,如果任务完成比较快,那么就需要添加一点新的故事;如果任务完成比较慢,相应地就要减少写任务点。尽量保持任务完成线平衡下滑。
敏捷开发之团队设计
团队可以根据项目大小,由一个项目经理和一个或多个技术团队组成。项目经理主要管控流程进度,充当Scrum Master的职责。技术团队还可以根据不同的技术职责进一步细化,划分开产品、前端、后端、QA、实施、运维团队等等。
技术团队,还可以划分一种特殊团队:救火团队。
救火团队的主要职责:解决生成出现的问题。保证开发团队能够在不搜干扰的情况下高效完成任务。
敏捷开发之XP
极限编程跟Scrum很重要的一个区别是它有严格的工程方法,保证进度或者质量。将两者理念做一个融合,是一种非常好的实践。
以下补充一些XP的方法论:
第一点,推广5天6小时工作制,和末尾淘汰制。可持续的开发速度,和精力充沛地工作,是提高效率的重要指标。如何能够保证一天6个小时内,大家能高效率专注的工作,末尾淘汰制是一个很好的补充。
第二点,要有一个统一的代码标准(代码库),并严格实行TDD开发模式,和代码review。标准代码实现,和测试驱动开发,能有效提高代码质量,和保证项目完成进度。如果QA团队测一下就出问题,开发团队经常要返工,毫无疑问,项目进展会十分艰难。
第三点,推行简单设计,坚持代码重构。设计越简单,开发效率越高,程序都是有一个循序渐进的过程,设计时考虑太多、过度的设计,不一定在后续中会用到,这样可能会浪费很多的时间;而代码重构,则能够保证程序的扩展性,和代码的整洁性。让大家开发起来更加得心应手。
第四点,持续集成,和小型发布。我们可以利用一些工具更好地执行这个,例如git+k8s+rancher 或者git + jenkins 等等。