这部写于1974年的软件工程管理经典著作,至今已有43年历史。但是可惜的是,这样的著作至今少之又少,今天我们重温这部经典。或许它已成为一个时代,但依然给当下人之深思。—imagineXie
一、焦油坑

编程系统产品的演进:

  • 程序要转变成编程产品,可以被任何人运行、测试、修复和扩展的程序,在多种平台上运行,程序必须要按照普遍认可的风格来编写,特别是输入的范围和形式必须广泛地适用于所有可以合理使用的基本算法。
  • 程序要转变成编程系统中的一个构建单元,程序必须按照一定的要求编制,使输入和输出在语法和语义上与精确定义的接口一致。程序还需要与其他系统构件单元一道,以任何能想象到的组合进行测试。
  • 编程系统产品,是真正有用的产品,是大多数系统开发的目标。

现实中,很少人类活动要求完美,所以人类对一种追求完美的方式本来就不太习惯。
所以,学习编程最困难的部分,是将做事的方式向追求完美的方向调整。

产品开发所基于的技术在不断地进步。一旦设计被冻结,在概念上就已经开始陈旧了。不过,实际产品需要一步一步按阶段实现。实现落后与否的判断应根据其他已有的系统,而不是未实现的概念。因此,我们所面临的挑战和任务是在实际的进度和有效的资源范围内,寻找解决实际问题的切实可行方案。

编程,是一个许多人痛苦挣扎的焦油坑以及一种乐趣和苦恼共存的创造性活动。对于许多人而言,其中的快乐远远大于苦恼。

二、人月神话

乐观主义

所有的编程人员都是乐观主义者。你总能看到无论是什么样的程序,结果在年轻人(因为程序员更加年轻)看来都是毋庸置疑的:“这次它肯定会运行”或者“我刚刚找出了最后一个错误。”
所以系统编程的进度安排背后的第一个错误假设是:一切都将运作良好,每一项任务仅花费它所“应该”花费的时间。然而,这种乐观主义应该受到慎重分析。

是什么造成这样的乐观主义的呢?在许多创造性活动中,实施的介质往往很难掌握。例如木头切割、上油漆、电气接线等。这些难以掌握的介质限制了思路的表达,对现实造成了许多预料之外的困难。然而,遇到这样的困难,我们总是倾向于去责怪哪些介质,因为他们不顺应“我们”设定的思路。

计算机编程是一种基于容易掌握的介质,编程人员通过纯粹的思维活动来开发程序。正是由于这样的介质易于驾驭,程序员总会期待在实现过程中不会碰到困难,从而造成乐观主义的弥漫。然而,你总会发现bug,所以,这样的乐观主义并非应该在程序员看来是理所应单的。

人月

人月是一种在估计和进度安排中使用的工作单位。如图,如果你认为人员数量的增加可以替代时间的减少,那么这将是一种危险和带有欺骗性的神话。

当任务由于次序上的限制不能分解时,人力的添加对进度没有帮助。就如一位母亲,孕育一个生命需要10个月。这和许多软件开发工作相类似。

软件开发本质上是一项系统工作,其中包含的实践,沟通,交流的工作量非常大,它会很快消耗任务分解所节省下来的个人时间。从而,添加更多的人生,实际上是延长了而不是缩短了时间进度。

系统测试

由于我们的乐观主义,通常实际上出现的缺陷数量比预计的要多得多。因此,系统测试的时间安排往往成为早期进度策划师非常重要的环节。你可以想象,直到接近项目的发布日期才有人发现进度上的问题,这样的坏消息通常是没有任何预兆的。
所以,从传统项目进度安排的研究发现,很少有项目允许为测试分配一半的时间。

空泛的估算

为了满足顾客期望的日期而造成的不合理进度安排,在软件领域中比其他工程领域要普遍的多。加上非阶段化方法的采用,少的可怜的数据支持,有时还要凭借项目经理的直觉,这样的方式将很难产出生产有力的、看似可靠的和规避风险的估计。

那么有什么解决方案呢?

  • 开发并推行生产率图表、缺陷率图表、估算规则等等;
  • 在基于可靠基础的估算出现之前,项目经理需要挺直腰杆,坚持他们的估计,确信自己的经验和直觉总比从期望派生出的结果要强的多。

项目的时间依赖于顺序上的限制,人员的最大数量依赖于独立子任务的数量。在众多软件项目中,缺乏合理的进度安排是造成项目滞后的最主要原因,它比其他所有因素加起来的影响还要大。

【人月神话】01 人月神话相关推荐

  1. 手机游戏再造创业神话 80后月入过百万

    手机游戏再造创业神话 80后月入过百万 2012年05月05日 00:54 来源:中国网 <!--mainContent begin--> 一个1987年生的创业者,公司成立半年多,6个员 ...

  2. 俄媒:美国“龙-2”型飞船载人发射推迟至7月

    中新网1月15日电 据俄罗斯卫星网15日报道,俄罗斯航天领域消息人士透露,美国"龙-2"新型飞船前往国际空间站的载人发射推迟至7月. 据报道,美国宇航局此前表示,太空探索技术公司( ...

  3. hive sql系列(二)——统计每个人每个月访问量和累计月访问量

    每天分享一个sql,帮助大家找到sql的快乐 需求:统计每个人每个月访问量和累计月访问量 建表语句 CREATE TABLE visit( userId string, visitDate strin ...

  4. 月圆茶润.人婵娟 小茶控·2021中秋茶礼 如“月”而至

    "每逢佳节倍思亲,又到中秋团圆时!" 在经历了疫情冲击的我们,品尝了两地分隔.人与人距离的滋味,眼睁睁看着本该团聚的端午佳节溜走,错过了情侣共度甜蜜的七夕.仍未摆脱口罩的我们,&q ...

  5. 珠穆朗玛币王:11月25日人无信不立,业无信不兴(空军肆虐,多头溃败)

    珠穆朗玛币王:11月25日人无信不立,业无信不兴(空军肆虐,多头溃败) 币王有话说: 平日里在网上异常高调的王思聪,这两天连上热搜,即便清空微博也是无济于事,而其原因则是他被京沪两地3家法院" ...

  6. 人一生平均900个月

    说在前面的话 我二十五六岁时,读到一句话:人一辈子平均900个月左右,你可以画出900个格子,已经过去的划掉,看看你还剩多少格子.通过这种简单明了的方式,记录自己的生命,我震惊了!!! 1.一辈子,时 ...

  7. 6000万美国人相信阿波罗登月是骗局(组图)

    宇航员站在阴影里,浑身却雪亮,身后难道有单独的人造光照耀? 当登月车通过反推火箭降落月球表面后,地面上压根没有火箭冲力形成的浅坑. 宇航员有影子,美国国旗"没影子",这种现象显然只 ...

  8. 12月27日云栖精选夜读:实人认证 - 阿里云实人认证(公测)发布

    2019独角兽企业重金招聘Python工程师标准>>> 产品介绍: [""实人认证"服务是阿里巴巴从自身业务发展出来的一项在线身份校验服务,为您提供一套 ...

  9. linux人必须知道之人

    Linux之父(李纳斯·托沃兹/Linus Torvalds) 导语:28岁的芬兰青年李纳斯创造了一个全新的世界:就是一种名为Linux的操作系统.它所产生的力量决定了编程领域的新氛围,正如我们的环境 ...

  10. 分享Silverlight/WPF/Windows Phone/HTML5一周学习导读(11月28日-12月4日)

    分享Silverlight/WPF/Windows Phone/HTML5一周学习导读(11月28日-12月4日) 本周Silverlight学习资源更新 Silverlight HttpUtil 封 ...

最新文章

  1. SAP Forecasting Replenishment (SAP FR)(中英双语)
  2. GC DevKit 快速入门 -- 游戏概览(三)
  3. java switch小程序,小程序自定义switch组件
  4. fms安装教程 linux_FMS安装
  5. Data for set COM_LOCAT_ADDR may only be changed in the original system CRQ_100
  6. 2019年2月25日 Range Sum of BST
  7. Linux的链接工具 putty 以及一些命令。
  8. ubuntu下的snappy安装配置以及测试
  9. fiddler 使用
  10. 软件考试网络工程师系列博文索引
  11. python的常用标准库
  12. myEclipse10破解及过期处理
  13. Photoshop基础照片美化
  14. C++——球的表面积和体积
  15. yocto 知:BitBake用户手册
  16. 根据六边形边长求六边形面积
  17. 高性能Excel操作工具
  18. 线性规划python
  19. mysql charset=utf-8_mysql数据库charset=utf-8
  20. 如何尽量不用百度等远离流氓软件随笔

热门文章

  1. 机械工程matlab课程设计,浅论MATLAB在机械课程设计中的应用方法和技巧
  2. 【龙印】以程序员的角度整定3d打印机的pid实现控温
  3. Mac下安装Eclipse
  4. 很搞笑的一个病毒--还能提问 “死亡问答”(Sola)宅男病毒
  5. 华三路由交换配置命令_h3c路由器配置命令
  6. Echert 缩放后切换再数据,缩放大小没还原的解决办法
  7. 贴吧一键签到机selenium自动化
  8. 各个排序算法(^_^)
  9. 【前端小技能】Vue集成百度离线地图
  10. C++遇到错误蓝屏电脑代码底层分享!