文中作者主要讨论了在软件工程中理论与实际的存在差异。作者想通过这篇文章告诉我们不要因为理论而忘记了软件工程的实质和目标。“失败的过程也是过程”,无论做任何事情都不要忘记初衷,否则会迷失在途中,无法获得成功。对于一个工程,包括软件工程而言,从需求到最终交互,都是极其巨大的。软件工程里不断演化出像RAD、RUP等模型,是为了适应某些需求和解决某些问题而在某种场景下更完善的方案,或者能够更保险地完成好项目,如此看来,做好工程的本质是很关键的,但是软件开发模型的功能也是非同一般的,项目人员可以利用这一套流程去更快更好地完成每一个项目。
我们应该享受完成任务的过程,这样的话,即使没有成功,但也是一种经历了。在我们完美地实现工程目标时,工程才真正地完成了。我们肯定会遇到无数次的失败,但我们要从中吸取教训,获得经验,做好记录,当以后再遇到类似问题的时候能快速找到解决的方法。 编程语言只是工具而已。软件最重要的应该是它所要反映出的思想,它的产生并不只是为了满足用户的需求,在市场竞争中,软件的产生有时候只是大公司之间相互压制,占领市场的工具。但不可否认的是,大公司之间的竞争促进了计算机产业的迅猛发展。
文中作者还说明了“工程不是做的,是组织的”,一个软件工程项目是由许多过程组织而完成的,也就是说,工程需要把其中的过程组织好,并且完成好。通过引用马援的家书“刻鹄类鹜”与“画虎类狗”希望自己的孩子学习敦厚谨慎的龙伯高,不要效仿豪侠仗义的杜季良。效伯高不得。效季良不得,陷为天下轻薄子。同样,我们学瀑布模型不行,那就什么也做不成了。过程不是做的,是组织的。所以我们不能做工程,而是要“组织”工程。项目经理的工作,就是要去组织这个工程中的各个角色,使得分工明确,步调一致,共同地完成这个项目。这就是项目经理的工作了,去组织工程中的各个角色、各个成员,明确地进行分工,步调相互协同,共同完成项目工程。做过程不是做工程,我们常常会错误的把过程当成工程,过程和工程的本质是不相同的,做过程是每一个阶段按既定的路线进行操作,每个过程的完成并不一定代表着工程的完成。如果工程可以依赖于特定的过程来完成,那么我们只需要一个模型就好。换而言之,无论使用什么样的模型做工程,即使亦步亦趋,也做不好工程。因此做过程并不是做工程的精义,也不是目的。做工程如果每一遍都是过场的话,按照剧本进行循环的表演,而不进行改进,那么项目将是一场无休止的演出而已,最终的结局将是观众与演员受不了而离去。这将意味着工程的失败。过程不是死模式。试着跳出大师们的身影,并没有所谓的经典过程,最经典的过程是可以实现项目的过程。我们可以根据实际大胆的提出我们的新思想并创生并使用。创新是在原本的基础上,再加上自己思想创造出来的东西。创新是现代工作中经常提到的一个新观念,我们应该能够进行更深的理解和应用。所以我们当然不能“做”工程,而是要“组织”工程。项目经理的工作,就是要去组织这个工程中的各个角色,使得分工明确步调一致,共同的完成这个项目。