《人月神话》(P1)提出问题

过去几十年的大型系统开发过程,看似都陷入了一个焦油坑,并且在其中拼命挣扎。表面上看起来,没有任何一个单独的问题解决不了,可是当他们相互纠缠在一起的时候,麻烦程度往往令人难以想象。

程序构件需要产品化(通用、测试、文档),同时程序构件需要被整合(接口、系统集成),之后才能形成编程系统产品(Programming Systems Product)。根据经验,编程系统产品的成本是程序成本的9倍,然而这是大多数系统开发的目标。

编程行业乐趣在于:

  • 创造新事物带来的纯粹快乐
  • 自己的创造物能够被别人需要的快乐
  • 编写程序过程本身的快乐
  • 任务不重复,持续学习新知识的快乐
  • 成为程序员就可以轻松的尝试上面的快乐,比起当一名诗人要简单的多

然而,这个过程并不全是快乐的,编程的苦恼在于:

  • 程序相对于人类思维来说是要追求完美的,即使错了一个字符也不能正常
  • 工作目标往往由他人来设定
  • 为了依靠其他人的程序,往往要委曲求全
  • 寻找BUG是重复、枯燥、艰苦的,而且寻找最后一个错误要比第一个花费更多时间
  • 在投入了大量辛苦的劳动之后,你的产品可能已经不再被需要了
  • 我们所面临的挑战和任务是在实际的进度和有效的资源范围内,寻找解决实际问题的切实可行方案。

以上内容就是原版《人月神话》第一章——焦油坑,所讲述的内容。

作者通过他的经验,试图告诉我们,大型编程项目的成本是几何式增长的,如果不正确处理问题,我们很可能会陷入一个焦油坑中。之后又分析了编程行业的乐趣和苦恼,在我看来分析的很正确。

总的来说,作为第一章,作者从行业和个人两个角度,抛出了几个十分重要的问题。同时也引出了本书的主旨,即解决这些问题,作者试图先带领读者了解问题本质,然后在思考解决问题的方案。

相信作为程序员,面对这些问题或多或少都能引起共鸣。其实,本书首次发行于1975年,早在如此多年之前,这些问题就已经被人深入的讨论过。总觉得,今天的我们还在因为这些问题而困扰,多少是会感到有点羞愧的呢。

我们大谈的OOP编程和MVC思想等内容的同时,是否真的能解决我们所遇到的问题,还是我们可能一开始从根本上就做错了什么?我将持续为大家讲述这本书后续的内容。

上一篇:《人月神话》(P2)错误的进度估计


下一篇:从零学springboot——springboot快速集成mybatis