简单之美:软件开发实践者的思考
上QQ阅读APP看书,第一时间看更新

2.2.2 成熟之路

只有成熟的软件开发组织,才能快速适应组织规模的变化,才能持续不断地递交成功的项目成果,才能最大限度地降低团队开发的成本。

CMM提供了成熟度评估模型。这个模型,可以帮助软件开发组织,围绕着软件开发过程这条主线,通过各种有价值的活动,最终达到软件开发能力成熟的目标。

我相信,在我们这个美丽的星球上,有不少值得尊敬的、成熟的软件开发组织。遗憾的是,我至今还未接触到它们。

这使我充满了幻想。

在软件开发实践中,我们经常会遇见这样的场景。

在项目进行过程中,由于某些原因,项目无法按时完成。于是,为了确保及时交付产品,项目经理会提出两种方案:加班或加人手。

高一级的经理会对这种做法表示赞赏。因为在项目出现延期风险时,项目经理采取了相应的对策。

接下来,项目经理召开了多次会议,讨论软件开发人员的工作安排。由于公司可以提供的资源是有限的,所以往往采用加班这个方案。

类似的会议不断地召开。

最终,项目延期了。

显然,偶尔出现这种场景是正常的。可现实的情况是,这种场景几乎出现在公司的每一个项目当中。我认为,频繁出现上面的场景就是一个软件开发组织不成熟的特征。

我在想,在一个软件开发组织中,为什么没有人对这类问题进行思考并采取行动呢?为什么失败的经验不能减少失败的可能性,而仅仅是增加了失败的合理性呢?为什么有这么多的人宁愿被动地接受项目延期,也不愿到CMM中去努力寻找解决方案呢?

不经历CMM(或类似的工作模式),很难体会到敏捷开发的意义。CMM仿佛是软件开发组织成长中的一个阶段。只有经历过这个阶段,软件开发思想才能更快地成熟。

CMM可以使我们认清软件开发过程中的好与坏、轻与重。

CMM中有解决方案吗?既有,也没有。

说没有,是指当你的项目陷入危机时,它几乎不会提供任何帮助;说有,是指它为你的软件开发组织提供了一个方向,可以确保组织走在一条正确的道路上。尽管你暂时没有好的办法,但是总会在将来的某个时刻拥有解决问题的能力。

这就像武林高手,为了笑傲江湖,必须从马步练起。而马步在临敌之际,给不了你任何帮助。

所以,我更愿意把CMM看作是一条成熟之路。

在这条成熟之路上,最重要的是软件开发思想的修炼。

是的,任何一个软件开发组织的软件开发过程,都是不相同的。当我们的智慧经过积淀和结晶,当这些积淀和结晶被记录在案,当我们拥有了知识基础,当我们的软件开发思想形成体系,我们将可以轻松面对任何变化。