每个团队都有它更为适合的软件工程,因此不可一概而论,谈谈自己对于XP以及重型软件工程象CMM这种更为适合的团队。
XP,作为敏捷型软件过程的代表者,我觉得它志在于发挥团队的力量,挖掘团队成员的潜力,共同提升团队成员的能力,快速响应客户的需求,但就自己对XP实施的经验而言,我觉得XP对于团队成员有一定的要求,要求团队成员具备一定的职业水准,象基本的OO思想、TDD、重构技术,同时XP要求团队成员拥有一定的自主能力、足够的上进心以及责任心,如果不是一支这样的团队,实施XP会碰到很多的困难,甚至会导致项目的失败,对于XP,我认为它是一种攻击型的软件过程,^_^
CMM,作为重型软件过程的代表者,它志在强调要做到对于软件过程步骤的可控性、计划性等,它强调的是明确的分工,每个步骤都需要通过一定的标准才算完成,每个步骤的成员和其他步骤的成员的接口为文档,CMM对团队成员的要求则为分开的,各个步骤需要相应的专业化人才,流水线式的作业,对于CMM,我认为它是一种防守型的软件过程。
作为一个技术人员,以我自己对XP和CMM的各自了解来说,我认为一个技术方面的人员会更喜欢XP,因为XP可以让人自由的、快乐的工作着,去享受工作带来的乐趣,而作为公司而言也许会更喜欢CMM,因为公司会认为这样更可控制。
但就像人件而言,我也同样认为软件开发过程中最重要的人,而不是过程,要充分的发挥人的作用,人的作用只有在快乐的、享受的开发环境中才可获得,在那样的情况下往往能发挥人最大的潜力,所以我推崇XP,我向往敏捷式的软件过程。
但事实上来讲,我同样认为,对于一支不具备一定水准的团队来说,XP并不适合,而CMM则更为适合,而且如果团队成员不具备足够的上进心以及钻研精神的话,我同样认为实施CMM更为适合,让整个项目的运作只是变成流水线式的过程,让参与的项目组只是作为工人一般的工作。
想快乐的享受技术带来的乐趣,想快速的响应客户的需求,就让我们拥抱XP吧,而且我认为真正的一支有能力实施XP的团队将是非常幸福的,技术人员的工作将是非常快乐的,同时他们输出的成果必然是高质量、高效的,这样就可以产生“客户满意、公司满意以及员工自己也满意”的良性结果,^_^
但其实我们可以去思考下,国内有多少家公司具备这样的条件去实施XP呢,从业人士中有多少人具备可参与到XP这样的敏捷过程的能力呢....