当我们费尽心思理解标准,建立起自己的一套软件开发流程之后,却发现这些流程并没有给大家带来什么益处。这是为什么?是标准的水土不服还是什么别的原因?
实际上,流程失败的原因是因为我们很少去花时间认真研究它!关于好的流程的那几条原则(详见《什么才是好的软件开发流程》),有几个人在制定软件开发流程的时候会拿它来衡量自己的制定的流程是不是一个好的流程?
流程失败还可能是因为权力的滥用。制定流程通常都会体现上位者的意志在里面。我们推荐流程的制定应当听取受影响人的意见,甚至让使用流程的人来制定流程。可是,实际上流程的制定过程中少不了领导的参与,领导的参与就会改变流程的初衷,使得权利与责任的分配成为领导利益的筹码,而流程也就失去了它的重心,让受影响的人抵制或者消极对抗,流程也就只有走向失败。
流程失败还可能在于盲目的沿袭以前的成果:“X以前有效,所以,我们就做X吧。”很多组织在建立GJB5000A二级体系的时候就是这种心理:把别人的体系拿过来,换成自己组织的格式和组织架构就可以直接使用了。这种做法通常都会失败。并不是看业务领域相差不远流程就能够拿来使用,流程会受到具体项目、使用的人、组织文化等方方面面的影响,单纯地照搬只会水土不服。
流程失败的原因还可能是因为建立的流程过于复杂。流程本来就是对使用者的一种束缚,使用者对它保持着一定的容忍度。太复杂的流程必然会引起使用者的不满,召来各种抵制。而且,复杂的流程就不是一个好的流程。
其实要建立一套好的流程,只需要了解两件事:通常能让项目和团队成功的事项,以及使当前项目和团队与其他项目和团队有所不同的事项。
对于前者,可以通过学习业务的先进实践以及前人的成功经验获得,而对于后者,你必须了解当前团队的文化、个性和习惯,然后再弄清楚哪些事项对团队有帮助哪些事项没有帮助甚至对团队有阻碍。
通常,最好是让团队具有自管理权限,而不是让那些不了解情况的上级来管理。要允许团队修改或创建自己的软件开发流程,而不是简单地复用组织的标准体系模板。
这正是:
流程失败要剖析,滥用权力盲沿袭
避免复杂自管理,好的流程方可期
参考文献:程序之美系列:团队之美、项目管理之美,Andrew Stellman,Jennifer Greene,Scott Berkun,机械工业出版社