最近在做咨询和培训的过程中,经常听到这样的问题:
l 敏捷和CMMI、IPD冲突吗?
l 敏捷能用在大规模软件开发吗?
l 用敏捷替代我现有的开发流程会有什么好处?
这些问题多半出于对敏捷的误解,即将敏捷看成一种具体的实践,或者更狭义地将敏捷理解为极限编程。其实,敏捷应该被看成一副眼镜,它阐明了一组原则(敏捷宣言),它认为根据这组原则能够更好地开发软件。
所以采纳敏捷的方式不是用“敏捷”来替换现有流程,而是戴上敏捷的眼镜去审视现有流程,你可能会因此发现一些浪费点或不合理之处,当你确认这些点需要改进之后(即改造不会对质量、进度、CMMI、IPD等造成影响),再用一些具体实践(如测试驱动开发、持续集成、迭代开发、用户故事等等)来改造现有流程。所以说,敏捷可以用于大规模软件开发,也不会与CMMI、IPD向冲突。
所以说,Be Agile rather than Do Agile!