流程和成功不是等价的。没有流程成功不可能得到保证,但有了流程并不意味着肯定能够成功。这恐怕是很多迷信于流程的人所不能接受的。但这的确是个事实。记得有个做了将近30多年的需求分析专家说过:即使是一个已经达到CMM4级的公司,也完全有可能做不好需求分析。为什么?技术,技术是成功的另外一个必要条件。好比现在你要从上海到北京去,流程给你指出了短的路径,技术提供给你快的交通工具。两者结合是完美。

对于软件开发来说,要保证软件的质量,需要掌握多方面的技术,包括分析技术、设计技术、编码技术和测试技术等等。在国内有一个普遍的非正常现象,是大家觉得只有编程能力才是玩电脑的真正技能。好像造一套房子,其它都不重要,只要砖瓦匠有高超的技能行了。尽管这个比喻会打击很多程序员的自尊心,但这的确是一个事实。我们缺少系统级的工程师,在分析和设计方面的工作做得很不扎实。

需求是一个项目的灵魂。模棱两可的需求带来不可避免的后果便是返工?重做一些你认为已做好的事情。返工会耗费开发总费用的4 0 %,而7 0 %~8 5 %的重做是由于需求方面的错误所导致的。

设计是能体系一个工程师能力的地方。一个好的设计基本上决定了产品的终质量。设计是把需求转换成系统的一个关键步骤,它需要从自然语言描述的需求中寻找出设计的基础单元,构建出整个系统的构架。关于设计方面的技能涉及面是很广的,包括传统的结构化设计到面向对象设计。

总之流程很关键,技术也很重要,鱼和熊掌,两者都不能放。