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