过去几十年的大型系统开发过程,看似都陷入了一个焦油坑,并且在其中拼命挣扎。表面上看起来,没有任何一个单独的问题解决不了,可是当他们相互纠缠在一起的时候,麻烦程度往往令人难以想象。
程序构件需要产品化(通用、测试、文档),同时程序构件需要被整合(接口、系统集成),之后才能形成编程系统产品(Programming Systems Product)。根据经验,编程系统产品的成本是程序成本的9倍,然而这是大多数系统开发的目标。
编程行业乐趣在于:
- 创造新事物带来的纯粹快乐
- 自己的创造物能够被别人需要的快乐
- 编写程序过程本身的快乐
- 任务不重复,持续学习新知识的快乐
- 成为程序员就可以轻松的尝试上面的快乐,比起当一名诗人要简单的多
然而,这个过程并不全是快乐的,编程的苦恼在于:
- 程序相对于人类思维来说是要追求完美的,即使错了一个字符也不能正常
- 工作目标往往由他人来设定
- 为了依靠其他人的程序,往往要委曲求全
- 寻找BUG是重复、枯燥、艰苦的,而且寻找最后一个错误要比第一个花费更多时间
- 在投入了大量辛苦的劳动之后,你的产品可能已经不再被需要了
- 我们所面临的挑战和任务是在实际的进度和有效的资源范围内,寻找解决实际问题的切实可行方案。
以上内容就是原版《人月神话》第一章——焦油坑,所讲述的内容。
作者通过他的经验,试图告诉我们,大型编程项目的成本是几何式增长的,如果不正确处理问题,我们很可能会陷入一个焦油坑中。之后又分析了编程行业的乐趣和苦恼,在我看来分析的很正确。
总的来说,作为第一章,作者从行业和个人两个角度,抛出了几个十分重要的问题。同时也引出了本书的主旨,即解决这些问题,作者试图先带领读者了解问题本质,然后在思考解决问题的方案。
相信作为程序员,面对这些问题或多或少都能引起共鸣。其实,本书首次发行于1975年,早在如此多年之前,这些问题就已经被人深入的讨论过。总觉得,今天的我们还在因为这些问题而困扰,多少是会感到有点羞愧的呢。
我们大谈的OOP编程和MVC思想等内容的同时,是否真的能解决我们所遇到的问题,还是我们可能一开始从根本上就做错了什么?我将持续为大家讲述这本书后续的内容。