虽然最早来源无从考察,但将最佳实践(Best Practices)一词发扬光大的无疑是CMM/CMMI。
以本人接触的先后顺序,CMM是在2001年同方听到的,而极限编程(那时候基本上还没有Scrum)也是同时听到的,所以算是同一时期的东西。但是为何10年来,“最佳实践”在CMMI界很流行,敏捷开发却很少提到这个词汇呢?
“这只是词汇问题而已。”同意,也不同意,表象之内,必有内在的差别。
笔者认为原因如下:
CMMI的本质是美国国防部为了考察其供应商能否从事其军工项目而设立的标准,因此美国,国防部,军工项目,这三个词汇的限定性极高。这种限定有点类似乒乓球中“拉弧圈球的最佳实践”,或者羽毛球中“网前钩球的最佳实践”,或者“C++指针使用的最佳实践”,很容易总结也很容易达成一致。
而敏捷开发要复杂地多,且不说XP/Scrum这些流派的差别,就看应用的领域,“美国,国防部,军工项目”这三个词就要全部突破,国家数量怎么也得乘10(算美国一个大国),甲方数据乘以20(算国防部是个大部),项目类型可能就要乘以50(军工项目大但是太少),我们会迅速得到一个10000倍的空间。在这么大的空间中找寻共同的东西,思想层面的可以(比如敏捷宣言,12大价值观等),但实践层面的就几乎不存在。
昨天会上有家国外企业就提到他们不做TDD,因为他们的项目多数只有200行代码,因此无需回归测试(甚至无需测试)——他提前展示了公司的营业额,直线上升,所以我们不能置生产率数据不顾而妄谈何为敏捷(这里先不谈其业务模式,个人也感觉有问题的)——所以TDD在极小型项目而言,就会不是最佳实践,但在“大型的需要回归测试的项目中”,就会变成最佳实践。
在词汇辨析和根源分析之外的意义,就是在寻求适合自身的敏捷实践的时候,要充分理解那一实践所产生的背景和应用的目的,然后再决定是否以及如何应用到自身环境中。
一些开放问题的答案,比如“如何在企业内部推行敏捷开发”,“如何说服领导进行敏捷开发”,“怎样提高敏捷质量”,都要在其案例环境中进行思考,然后才可以为己所用。
点击下载免费的敏捷开发教材:《火星人敏捷开发手册》
原文链接:https://www.f2er.com/javaschema/287117.html