12.29日学习日记
今天下午花一个半小时的时间简单阅读了人月神话的前两章节的内容。
首先说第一个章节“焦油坑”。
岸上的船儿,如同海上的灯塔,无法移动。 - 荷兰谚语
Een schip op het strand is een baken in zee.
第一章节简单的介绍了软件软件开发这个职业,以及充满在这个职业中的乐趣和苦恼。
首先介绍了程序的几个发展方向,从程序到编程产品,需要普遍认可,要有稳定性、可靠性,要有完备的文档,编程产品要求任何人可以运行、测试、扩展
从程序到编程系统需要程序按要求编制,符合预定义的资源限制,同其他构件一道,以任何能想到的组合进行测试
从程序到真正有需求有市场的编程系统产品,需要的往往是九倍于程序的繁琐。
其次介绍了软件开发工作的乐趣与苦恼。
编程的乐趣在于它不仅满足了我们内心深处进行创造的渴望,而且还愉悦了每个人内在的情感。
编程的苦恼在于以下四点
1.需要追求完美
2.由他人来制定目标,供给资源,提供信息
3.概念设计虽然有趣但是寻找琐碎的bug确实无趣
4.产品具有时效性
这,就是编程。一个许多人痛苦挣扎的焦油坑以及一种乐趣和苦恼共存的创造性活动。
对于许多人而言,其中的乐趣远大于苦恼。而本书的剩余部分将试图搭建一些桥梁,为通过这样的焦油坑提供一些指导
第二章,人月神话
初读此部分,不太理解人月是什么意思,特地去了解了其含义,人月是一种表示劳动时间的计量单位。 指一个劳动者工作一个月(季、年)。 是计算月(季、年)劳动生产率的时间单位。 计算时,在该月(季、年)内出勤的工人,不论其出勤天数,均作一个人月(季、年)。
美酒的酿造需要年头,美食的烹调需要时间;片刻等待,更多美味,更多享受。
- 新奥尔良 Antoine 餐厅的菜单 Good cooking takes time. If you are made to wait, it is to serve you better, and to please you. - MENU OF RESTAURANT ANTOINE, NEW ORLEANS
此章的主要讲解内容是项目投入人数和项目花费时间之间的关系,缺乏合理的时间进度是造成项目滞后的最主要原因。
首先介绍了缺乏合理的时间进度的广泛性原因,主要有以下几点:
1.编程人员的乐观主义,系统编程的进度安排背后的第一个假设是:一切都将运作良好,每一项任务仅花 费它所“应该”花费的时间,然而实际上在单个的任务中,“一切都将运转正常”的假设在时间进度上具有可实现性。因为所遇的延迟是一个概率分布曲线,“不会延迟”仅具有有限的概率,所以现实情况可能会像计划 安排的那样顺利。然而大型的编程工作,或多或少包含了很多任务,某些任务间还具有前后 的次序,从而一切正常的概率变得非常小,甚至接近于无。
2.第二个谬误的思考方式是在估计和进度安排中使用的工作量单位:人月。因此用人月作为 衡量一项工作的规模是一个危险和带有欺骗性的神话。它暗示着人员数量和时间是可以相互替换的.
文章中列出了人月关系的四种情况,而第四种情况才是项目的开发中经常面对的情况。因为软件开发本质上是一项系统工作——错综复杂关系下的一种实践——沟通、交流 的工作量非常大,它很快会消耗任务分解所节省下来的个人时间。从而,添加更多的人手 实际上是延长了,而不是缩短了时间进度。

其次是系统测试的时间:在时间进度中,顺序限制所造成的影响,没有哪个部分比单元调试和系统测试所受到 的牵涉更彻底。大 多数项目的测试实际上是花费了进度中一半的时间,因此,在早期进度策划时,允许充分的 系统测试时间是非常重要的。
然后是避免粗略的估算,在基于可靠基础的估算出现之前,项目经理需要挺直腰杆,坚持他们的估计, 确信自己的经验和直觉总比从期望派生出的结果要强得多。
最后要避免重复产生的进度灾难:这一部分的主要议论点在于:向进度落后的项目中增加人手,只会使进度更加落后。
这就是除去了神话色彩的人月。项目的时间依赖于顺序上的限制,人员的数量依赖于 单个子任务的数量。从这两个数值可以推算出进度时间表,该表安排的人员较少,花费的时 间较长(唯一的风险是产品可能会过时)。相反,分派较多的人手,计划较短的时间,将无 法得到可行的进度表。总之,在众多软件项目中,缺乏合理的时间进度是造成项目滞后的最 主要原因,它比其他所有因素加起来的影响还要大
通过今天一个半小时的阅读,这些就是我从《人月神话》一书的一二章中所学的内容。
明天还会继续学习。

浙公网安备 33010602011771号