以目标为中心的项目开发可以为达成目标而不择手段或者说不采用任何手段, 只要最后项目成功,项目人员可以使用任何办法。而以过程为中心则以过程为主要依据,要求过程步骤完美,最后结果如何都是成功的项目。按儒家的中庸说法, 两种观点看起来都是不正确的, 能够相互补充那时最好了。
首先, 软件项目刚刚开始出现的时候,人们完全不知道需要如何对付它, 所以那时候是只能以目标为中心, 采取个人主义,仅仅需要一个人或者几个人就能完成一个伟大的项目, 当时其中的领导者一定是能力超强, 不仅技术令人折服,而且充满了人格魅力,管理能力也是必不可少的。这样可以说靠着他一个人的能力和意志带领着大家完成项目。就像很多传奇中的研发项目,就是靠着个人能力领导着整个团队。
中国的很多中小企业就是这一阶段的以目标为中心, 虽然使用了一些先进的工具,但是思路还是没有脱离原始的状态。在这样的公司你往往能听到这样的话,“我头头说这个东西必须在这个星期完成”。 然后项目就在无序中进行,如果项目有一个杰出技术专家,可能会侥幸成功。但更多都是糊里糊涂的失败了,但是即使失败了,很多项目也会被公司当作成功项目,因为没人愿意承认失败。所以如果去找工作,如果一看要招一个XX高手这样的人,这个公司一定就是这一类型的公司,经历过很多次失败以后,它只能把希望寄托在一两个高手身上。
慢慢的随着业界对软件的需求越来越大,项目也越来越大,开发人员也越来越多,这种模式再也无法承受使用了。仍采用这种模式的项目的失败率也越来越高。然后一些聪明人发明了瀑布模型,从本身看这并非是一个创举,它把一个大目标分割成几个小的目标步骤,一个一个次序完成。他们的一小步是人类的一大步,他们开创了一种可行的文化。这样随着目标越来越大,越来越细化,模式也从瀑布变成了增量,模型也从以目标为中心转变成了以过程为中心。理论上,只要把最简单的瀑布模型每一个步骤都严格完成,那么项目一定会成功。这个时候,软件业也从混沌转变到了有序的阶段。
国内很多企业做的形似而神不似,项目虽然使用了一些过程,但是这些过程只是用来摆样子,全无实用价值。在过程中,对各个阶段的控制和审核是最主要的,不然就失去了分阶段的作用,其实就是退回到混沌的阶段。在很多的项目中,这一阶段虽然完成的不好,但是还是会往下面走,原因就是根本没有认识到为什么要采用过程方式。
在过程为中心的开发中,一般来说采用一个适合的过程模型,然后适当的裁剪,我认为是成功系数很高的, 当然需要一个合适理解这个过程的项目经理,很多公司的失败是因为项目成员并不理解这个过程,只是为了拥有过程而过程。业界的过程模型已经经过长时间的检验,如果问题出现了,很大愿意是使用的人的对这个过程理解得不够。
任何过程都会带来一个副面的影响:太耗费资源。大家应该深有感触,过程中的那些文档的确是让任何人都非常害怕,尤其是对这些文档的维护,更是恐怖。但是这是减少点对点交流的非常好的解决途径之一。对于这个问题,只有大量采用裁剪,毕竟实用才是大家追求的。人们开始对动不动就是资源消耗极大的过程开始反感,重新开始了对过程的思考。他们希望有特别针对与中小项目的适合的过程,即使是瀑布也太复杂。他们需要在保持一定过程的前提下,采用最为节省资源的做法。保证项目成功并不一定需要繁琐的步骤,在每一道关口设卡检查。完全有可能在主要的关口设卡,在内部如何方便通行就采用哪种路线,这样就能保证能最快最正确的通过。这就是以目标为中心和以过程为中心的结合体。于是XP等新的想法诞生了。
像任何行业一样,软件业也从无序进入有序,有从有序进入了过度繁琐的有序,然后再从繁琐进入精简,进入了实用的有序。在反反复复后,我们会看到一个成熟的工业,像其他所有的行业一样,实用是最重要的。