大规模敏捷软件开发与精益思维
Agile软件开发可以通过使用自服务API、基础设施配置、实时协作软件和分布式版本控制系统等技术实现大规模扩展。精益思维可以通过诸如Obeya、系统化问题解决、单件流和节拍时间、以及持续改进(Kaizen)等技术来补充和扩展敏捷文化。Fabrice Bernhard在FlowCon France上分享了他们公司如何结合技术和精益思维进行大规模敏捷软件开发。
敏捷宣言与大规模组织的挑战
Bernhard指出,敏捷宣言并不适用于大型组织。领导者在寻找扩展软件组织同时保持敏捷文化的原则时,需要从其他途径获取指导。然而,目前市场上充斥着许多称为“大规模敏捷”的方法,其中许多非常官僚化,因此并不符合敏捷宣言的精神。
精益思维与敏捷扩展
Bernhard认为敏捷是可以扩展的,许多组织在保持敏捷文化的同时实现了扩展。他们在精益思维的知识体系中找到了扩展组织并保持敏捷宣言精神的原则。Bernhard与Benoît Charles-Lavauzelle合著的《精益技术宣言》探讨了精益思维提供的原则、系统和工具,以扩展敏捷宣言的原则。例如:
- 价值模型、Obeya和价值流:通过确保“客户价值”成为整个组织的北极星,扩展“客户协作”。
- 系统化问题解决(PDCA和5S):通过团队领导者的支持和技术协作,扩展“个体和互动”,将组织转变为“技术驱动的团队网络”。
- 自働化、断トツ、防错、拉动、单件流和节拍时间:实现“一次性正确和准时”,扩展“可工作的软件”。
- 标准、持续改进、技能矩阵和实践社区:通过“构建学习型组织”扩展“响应变化”。
Linux开源项目的扩展经验
Bernhard提到,他们发现精益思维并未完全解释一些大型敏捷组织成功的原因。因此,他研究了Linux开源项目及其社区如何从1名贡献者扩展到55,000名贡献者,并利用技术解决了扩展过程中面临的问题。
- 1996年的第一次扩展危机:Linus因邮件过多而“被活埋”,通过引入可加载内核模块和创建维护者角色来解决,维护者帮助贡献者确保其贡献符合高质量标准。
- 1998年至2002年的第二次扩展危机:通过采用BitKeeper(后来被Git取代)解决了问题,将贡献合并的工作分布到维护者和贡献者网络中。
在这两种情况下,技术都用于减少团队之间的依赖,帮助贡献者保持高水平的自主性,并使其贡献易于合并回主仓库。
技术减少组织依赖
Bernhard提到,技术可以减少团队之间的沟通需求,尤其是在他们依赖其他团队完成工作时。典型的组织依赖,如团队依赖其他团队的数据,可以通过自服务API和适当的技术架构来替代。这可以扩展到更复杂的依赖关系,如基础设施配置,AWS在发明EC2时提供的自服务API就是一个例子。
此外,处理对同一文档(如图表、文本或源代码)的贡献合并挑战,在过去15年中通过Google Docs等实时协作软件和Git等分布式版本控制系统得到了极大改善。
结论
Bernhard总结道,他从Linux社区解决扩展问题中学到了很多。虽然最初的敏捷方法论(如Scrum或XP)专注于单个软件工程团队,但精益思维在大型组织中经过了几十年的实战检验。任何试图扩展敏捷组织的人都应该研究精益思维,以从几十年的经验中受益,同时保持敏捷宣言的精神。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。