《人月神话》十日读书笔记 day1

751 阅读7分钟
原文链接: mp.weixin.qq.com

回首软件工程40多年的发展,软件工程一代宗师Jackson哀叹软件行业普遍缺乏专业性,充满了业余人员,“手中有一个锤子,看到什么都是钉子”,谁都可以开发性命攸关的软件。

这就是我们面临的严峻而复杂的现实!然而在大师布鲁克斯(FrederickP.Brooks.Jr.) 的眼里,一切是那么的平静,因为早在44年前,他就在《人月神话》这本不朽著作中对这些内容作了深入论述。

——汪颖 代序

中文版全书316千字共19章,计划10天慢慢看,强烈建议入手纸书

拉布雷亚焦油坑 远古动物的“墓地"

一望无际的沙漠,炙热的太阳烘烤着大地。

一只象猪一样的动物正在寻找食物,它用那短平的鼻子在一棵小树周围挖掘着。它用鼻子移去了一些的沙土,但是仍然找不到任何食物。就在这只猪想要离开时,它却发现怎么也移动不了自己的脚。地上有一种稠密的黑色物质,这只猪好不容易从中拔出了一只脚,但其它的脚却陷得更深。它越挣扎,就陷得更深。在空旷的沙漠中,它恐惧地吼叫着,竭尽全力的试图挣脱。

在不到一公里远的地方有一头身躯巨大的猫科动物,一种嘴中长着二颗长长獠牙的剑齿虎。它也正饿着,听到了猪的吼叫声,便以极快的速度跑来,接近了正在为生命挣扎的猪。剑齿虎跳上了猪的身上,用利牙咬住了猪的脖子,很快猪就死去了。于是它开始进食,不到一小时就吃完了。然而当它想到离开时,像猪一样,它也寸步难行。现在轮到剑齿虎为生命挣扎了,但是越挣扎,它陷入那可怕的黑色物质越深。

黎明前,剑齿虎死了。它的尸体和猪的残骨,逐渐地沈入那乌黑黏稠的坑中。……

科学家们说,这样的故事曾经在一段长达许多万年时间里一再发生着。而那黑色物质实际是从地层中冒出来的石油。当石油乾涸后,只留下半固态的焦油沥青。烈日照射下,焦油变软--无论什么东西接触到它,就永远的陷在其中。

1769年,有一支西班牙探险队,由Lower California 州长Gaspar de Portola率领,考查了覆盖地面的黏黑物质。他们称呼这地区是“La Brea",西班牙话就是"焦油"。这也是“拉布雷亚"的由来。

第 1 章  焦油坑

作者将过去十几年大型系统开发所面临的遭遇比作焦油坑,大多数项目最终不能满足目标,开发团队像跳进了焦油坑——垂死挣扎、欲罢不能。系统没有任何一个单独的问题看起来是困难的,但是当它们纠缠在一起,团队行动就会变得举步维艰。

媒体上经常大肆宣传两个程序员在简陋车库,就能编出超过大型团队工作量的重要程序。后来的程序员心中萌发了神话——他们坚信自己能以超过产业化团队的生产率来开发任何程序。然而在现实中,任何一个系统产品,其成本至少是独立程序的9倍。

职业的苦与乐

☺快乐的来源:

1、创造事物

2、开发对别人有用的东西

3、精妙的程序代码如期运行

4、持续学习理论与实践交织非重复性

5、灵活易驾驭的代码介质创造想象中的神秘"城堡"

☹痛苦的来源:

1、计算机执行程序苛刻要求

2、缺乏对项目的话语权任人指挥,有时依赖别人糟糕的代码

3、寻找Bug的过程琐碎、枯燥、重复无趣,实现程序的过程也是如此

4、开发的项目最终没有投入使用,没有产生实际使用价值,一首凉凉

第 2 章  人月神话

缺乏合理的进度安排是造成项目滞后的主要原因,当意识到项目延期追加人手是灾难的开端,正视导致延期的原因。

错误的假设:一切都将运行良好,每一项"任务"仅花费它所"应该"花费的时间。

创造性活动三阶段:构思、实现、交流。

编程人员具有盲目的乐观主义。编程轻松上手,然而构思总有缺陷Bug不断,实现过程中总有意想不到的问题出现,评估的工期只是最理想完美情境下的。

人月——一个编程人员一月的代码工作量。人员数量和时间不能简易相互替换,用人月衡量一项工作(软件开发)的规模是一个危险和带有欺诈性的神话。无论哪位母亲,孕育一个生命需要10个月,不是两个母亲就能5个月生孩子。

关于进度安排,作者使用了多年的软件时间经验法则4:2:3:3,试着画出了实际工作中的对比。书中特别强调不为系统测试安排足够的时间就是灾难。想清楚要做什么非常重要,然而管理层总希望尽快让工程师投入编码,最后看似实现了系统,结果往往偏离了开发系统最初的目的

某项任务的计划进度,可能受限于顾客要求的紧迫程度,但紧迫程度不能控制实际的完成情况。5分钟的煎蛋非要2分钟内完成,看上去可能进行得非常好,但当它无法在2分钟完成时,顾客只能选择等待或者生吃。软件客户也是类似的。厨师为了压缩时间可以把火开大,不过结果常常是无法"挽救"的煎蛋——一面焦了,另一面是生的。

简化的Brooks法则:向进度落后的项目中增加人手,只会使进度更加落后。

项目的时间依赖于顺序上的限制,人员的最大数量依赖于独立子任务的数量,这两个推算出进度表,这就是除去神话色彩的人月。

第 3 章 外科手术队伍

高配版打团阵容,给编程队伍扮演角色定位。

与传统团队的区别:

1、外科医生和副手了解所有设计和实现,确保工作概念上的完整性

2、团队共同利益和目标确立,减少成员之间冲突,保持整体一致性

3、团队中人员职能专业划分,成员之间采用高效简洁的交流模式

想起曾经工作的团队,采用前后端分离模式开发,非常美好的时光:

团队组成:

开头的代序是Dave Wang写于2002年,原文中是"早在28年前"。现在已经是2018年的过了16年就是44年了,直至今天,这本书中描绘的项目惨案和问题居然还是普遍存在,丝毫没有脱离时代,不得不佩服大师的底蕴和深度。越来越觉得计算机领域藏着最先进的管理学知识

人物:布鲁克斯博士,图灵奖得主,创立了北卡罗莱纳大学计算机系,商学院的计算机科学教授,被认为是“IBM 360系统之父”,教学和研究方向是计算机体系结构、分子模型绘图和虚拟环境设计。

有缘下期见


想打上原创标签,不过引用了一些内容,内容不完全属于创作

参考来源:

拉布雷亚焦油坑 远古动物的“墓地" 2006-10-22

http://www.chineseinla.com/f/page_viewtopic/t_1181/view_next.html

部分配图

http://pic.netbian.com/