vlambda博客
学习文章列表

瑕不掩瑜:《大规模敏捷开发实践》

这是一本被严重低估的书,比我读过的大部分书,干货与精华更多。在网上下单后,老板说只有影印版(图片是黑白的),买回来读完后,我觉得真的超值了。介绍了HP LaserJet产品线敏捷转型的成功经验。如果你正为此困惑,并认为推荐理由合适,墙裂建议一读。

推荐理由如下:

  1. 典型传统组织的通病、各种研发常见的顽疾都有剖析。

  2. 团队参与者编写的,翻译者也是参与者,深刻独到。

  3. 400人的规模,小团队到中型组织数字化进程中的障碍多有涉及,可预见未来。

  4. 给他们服务的咨询师是业界顶级牛人:Jim Highsmith、Jez Humble。

  5. 极致的务实接地气,不是scrum但非常接近。

  6. 架构演进、持续集成、自动化测试、持续交付的实际落地。

  7. 四年的周期揭示了做到优秀需要付出的投入。

  8. 涉及分布式团队。

  9. 涉及硬件。


--------以下是部分精华摘录--------

采用的敏捷\精益原则:

  1. 减少开支和浪费(保持简洁):分析日常活动是否合理,改善所有事的效率。

  2. 量力而为:限制WIP,少承诺、多出活。

  3. 打开瓶颈:愿意暴露问题以打开瓶颈。

  4. 越早越多地集成:多次提交少量功能的代码,并做增量测试,简单/自动化。

  5. 让计划有规律:四周一迭代。

  6. 让参与者定义敏捷/精益实践:制定流程的人跟着流程走一遍。


达成的共识:

【起点】需求在不同阶段应该有不同的粒度,不可能面面俱到。

【终点】代码经常性地集成,确保任何时间点都可交付可工作、高质量的软件。

【过程】时刻遵循原则,不停回顾原则是否过界了,这是成功的一个关键点。


整体思路:

  1. 让架构支撑业务目标。

  2. 用敏捷的理念稳固新架构。

  3. 持续集成:减少编译资源和时间。

  4. 质量系统:自动化分层测试。

  5. 自动化发布流水线:带来生产率的提升。

  6. 最优化预测的流线型计划。

  7. 识别并管理劣势项。


关于架构:

  • 代码可自动识别运行在什么样的硬件上并自动进行硬件配置。

  • 架构专注于支持多功能打印机,嵌入了基础功能(任务队列管理、性能、并发登录/运程用户操作)。

  • 功能可开关,支持将新的功能被授权后,直接应用到整个产品线。

  • 一旦架构确定下来,就不惜一切代价保持它的方向性。

  • 创建一些标准、工具和团队来长期维护架构:没有自动化的单元测试会非常难以维护。

  • 迭代地重构架构,4周一次架构演示,持续了两年。

  • 有一个强力的架构师、原型小组频繁审查以增强部门对架构的责任感和信心。


关于计划与跟踪:

  • 用初略预测和趋势观察预测:预测每周期有多少请求,有多少交付力量。

  • 清晰的优先级:由PO维护,应考虑计划外工作,变更分三级响应,冲刺目标就是高优先级任务。

  • 及时的用户故事定义:新的、已筛选、已分配、已研究、审核过、开发中、已实现、测试中、已验证。

  • 让业务也支持敏捷计划:仍有长周期承诺、业务决定哪个功能先做、接受任何时间的变更、用交付而非计划做承诺、交付前尊重开发团队的权利。



路线探索:

  • 自上而下:“被敏捷”永远无法组建起一个真正的团队。

  • 自下而上:开发人员理解并坚信敏捷的好处,但没人引导或者没有管理层支持。

  • 真正的秘密:关注群众,所有的事,都与人以及如何管理有关,流程是第二位的。

    • 尽可能减少指定业务目标的人数,以帮助大家将注意力集中到生产率上来。

    • 根据群众意愿而改变:人的感受以及感受的程度更有影响力。

    • 沟通始于度量,探求事实,终于行动。

    • 小里程碑目标。

    • 将目标关联起来跟踪。

    • 学习并按节奏调整。


研发改进效果:

  • 最初每天执行1次构建,最终实现每天执行10-15次构建。

  • 最初每天由总构建人进行大约20次代码提交,到每天所有开发人员有超过100次的代码提交。

  • 开发人员每天更改和添加的代码行数达到了7.5-10万行(400人团队)。

  • 回归测试的周期从6周缩短为1天。


最终业务收益:

  • 开发人员用于创新和新特性开发的时间从5%增加到40%。

  • 总开发成本降低约40%。

  • 处于开发状态的项目增加了约140%。

  • 每个项目的开发成本降低了78%。