书籍是一种凝固的时间,穿过明月清辉与万里河山来看你。

这本书写成十余载后我才出生,半个世纪后我才阅读。可怕之处在于,书中的观点仍然广泛受到认同。软件工程领域与其他工程行业相比大多程序员所认为的还要相似。有些方面右又比我们人所认为的差异还要大。这个领域的知识重在积累,终身学习是很多程序员的觉悟。

0、引言

人月神话是危险性和欺骗性的神话,因为他暗示了人员数量和时间可以互相替换的。进一步说,及时人力(Man)和时间(Month)不是线性关系,使用人月作为衡量标准实际上就是Mythical.

一、程序员不为人知的乐趣与烦恼

YES

1. 创建事务的纯粹快乐。

纯粹指的是处于人类本能的快乐,我们喜欢音乐与美食一样,我们喜欢沙滩城堡与建造房子。这种快乐是上帝兴趣的折射,六角雪花与独特树叶的呈现。

2. 创造帮助他人的的东西。

从内心深处,我们希望我们的劳作能够被他人认可和使用。

3. 操控世界的魔力

软件可以操作硬盘存储,显示器显示图片,我们通过代码级别的咒语操作一些物件产生变化和效果。甚至代替人的思考获取更高层次的答案。这个过程经过百年的积累已经成为一种魔法改变世界。人天生变有控制世界的欲望。

4. 持续学习的快乐。

软件工程综合了科学和工程实践,算法和设计模式能够帮助我们更加本质和透彻的角度看待世界,把复杂的问题简单化。诞生了无数大师的思想,解决了无数问题。程序员可以自我升华到架构师。每个架构师都会具备一定哲学思想

NO

1. 不得不完美的苦恼

我们不得不追求完美,即使懒惰的程序员也不得不按照语法和标点符号完成每一行代码,并完成拼装。经过无数bug才能获取到运行成功。这个过程代表了大量的琐碎时间,以及产出缓慢的苦恼。

2. 他人设定目标

很多时候我们的进展有业务方和需求方决定。自身的发挥收到很大限制。

3. 不断的被淘汰

我们今天的项目可能明天就被淘汰,今天的技术明天就不在流程。这中间的过程并不连贯,花大量时间积累的经验很可能无用

过去十年软件行业犹如一个焦油坑,无数动物在里面挣扎,最终只有程序猿站立执行。

二、人月神话

  1. 每个软件项目进度安排最大的错误假设:一切都将运行良好,每一项任务仅花费‘应该’花费的时间。
  2. 理论上缺陷的数量应该为0.
  3. 只有一个人的项目我们才能较为准确地估计出人月。在一个大规模项目人月是一个乐观主义神话。
  4. 根据经验法则,编码只占整个软件工程中的20%时间,甚至更少。这部分是最容易估计人月的。其他的都不容易。
  5. 向落后的项目添加人手通常导致更严重的落后。

三、 系统设计

  1. 系统设计中,概念的完整性是最重要的考虑因素。为了概念完整和连贯,可以舍弃一部分精美但是无法整合的设计。
  2. 最差的设计往往是那些投入远超预计工时的项目。长时间的投入并不会产生更多创造性。
  3. 创造性活动纷呈三个独立阶段:架构设计、详细设计、物理实现。这三种是可以并行的。
  4. 自律是系统设计的首要原则。我们会不自觉地把很多想法认为是可以直接落地的,这些想法会耗费大量精力在无用的模块上。
  5. 准确地表达复杂结构是必要的困难活动。这些创造性活动并不会影响太多生产效率。
  6. == 卓越的设计人员是无法估量价值的== 和莫扎特、周杰伦一样,伟大的软件系统都是有少数人设计的。
  7. 重用需要良好的设计和卓越的文档。

四、贯彻落地

  1. 看似琐碎问题上统一原则是一件至关重要的事情
  2. 光说不做是不会发生任何事情的
  3. 重视文档的设计。必须清晰完整准确,重复说明必须要素,所有文字要相互一致,精确比有趣更重要。
  4. 会议室必要的。周例会和年度大会是有必要的方式。敏捷管理中的晨会也有其独特的价值。会议目标:交流沟通、解决冲突、达成一致、发现风险、解决问题,跟进进度。
  5. 巴比伦塔为什么失败?上帝为每个国家创造了独特语言,他们之间无法沟通。·交流· ·组织·
  6. 程序猿仅需要了解自己负责的部分,而不需要关注整个系统细节时,效率最高。
  7. 团队组织目标就是较少交叉沟通的渠道,减少沟通的数量。通过职责划分和任务分配是减少沟通数量的重要手段。避免跨团队的直接沟通,每个团队最好有接口人。
  8. 里程碑必须是具体的、特定的、可以度量的事件、必须清晰明确定义达成基准。
  9. 大型设计团队,设计结果也必须由一个或者两个完成,以确保决定是一致的。

五、 团队建设

  1. 产品负责人和技术负责人如果是同一个人,可以有更好的推进效果。在大型项目中,推荐产品经理作为整个团队负责人。
  2. 确保团队成员经验技巧能够不断被培训,而不是依赖于自身经验积累。
  3. 创造性的想法和技能可以最大程度保证项目空间。
  4. 技术需要积累,需要开发更多的公共单元。
  5. 文档能够作为其他人沟通的渠道,只有记录下来分歧才会明确
  6. 进取意味着团队成员比要求跑的更快,从而使开发团队能够处理常规的风险,为项目工期提供了缓冲地带。
  7. 负责人和老板是存在冲突的。真是的汇报可能让老板采取行动取代负责人。虚假的回报可能导致整个项目陷入巨大风险。 (减少角色冲突:老板必须规范自己,不在检查进度时发号施令,仅在必要时做出决策。猛地拉开地毯:里程碑评审,对于项目彻底拉开评审真实进度)

六、系统维护

  1. 系统在最开始是最好的
  2. 熵曾宇宙也是系统最基本的定律。每次版本号的增加都代表系统的混乱程度更高,所有的修改都倾向于破坏现有的设计。
  3. a goog man is konwn by his tools。工具很重要
  4. 架构师会对整个系统做出一些假设。这些假设和真是情况不匹配是大多数致命和难以察觉bug的来源。
    5.开发人员不会说自己不懂。他们会自己创造一条解决问题(生产bug)的方法。

七、没有银弹

  1. No Silver Bullet.成为行业著名口头禅,没有任何工具可以解决所有问题。
  2. 复杂想是软件行业的属性,也是我们的主要限制。 导致技术问题和管理苦难那,让沟通困难,导致产品瑕疵,方案概念完整性,离散出口难以控制,学习负担、让开发变成灾难。
  3. 常常看似简单明了的东西,却有可能变成一个落后进度,超出预算,存在大量缺陷的怪物。
  4. 软禁工程师无法从科学法则上获取一致性、我们必须掌握壕无人性,毫无规律的软件复杂度法则。
  5. 可变性。软件工程遭受着持续变更的压力,可以无限修改可扩展。没有人修改建筑,应该成本太高昂,没人傻子提出这种需求。而软件工程的傻子大有存在。
  6. 不可变性:软件是不可见的,没有空间几何特性。这些如同巴比伦成一样,阻碍了工程师的交流和组织。

【经典传颂】人月神话The Mythical Man-Month相关推荐

  1. 《人月神话(The Mythical Man-Month)》2人和月可以互换吗?人月神话存在吗?

    美酒的酿造需要年头,美食的烹调需要时间: 片刻等待,更多美味,更多享受. --新奥尔良 Antoine 餐厅的菜单 Good cooking fakes time. If you are made t ...

  2. 《人月神话》(The Mythical Man-Month)2人和月可以互换吗?人月神话存在吗?

    美酒的酿造需要年头,美食的烹调需要时间: 片刻等待,更多美味,更多享受. --新奥尔良 Antoine 餐厅的菜单 Good cooking fakes time. If you are made t ...

  3. 《人月神话》8 胸有成竹(Chaptor 8.Calling the Shot -The Mythical Man-Month)

    实践是最好的老师. - PUBILIUS 实践是最好的老师,但是,如果不能从中学习,再多的实践也没有用. - <穷理查年鉴> Practice is the best of all ins ...

  4. 《人月神话》(The Mythical Man-Month)3 外科手术队伍(The Surgical Team)

    研究表明,效率高和效率低的实施者之间具体差别非常大,经常达到了数量级的水平.These studies revealed large individual differences between hi ...

  5. 悼念《人月神话》(The Mythical Man-Month)作者 Fred Brooks

    Fred Brooks 于 11 月 17 日去世.他是计算机科学领域的巨人,鼓舞了我们许多人. Fred Brooks passed away on November 17. He was a gi ...

  6. 读《人月神话》(The Mythical Man-Month)

    花了几天时间略读完了<人月神话>(The Mythical Man-Month),并没有什么很深的体会,这有可能是并没有接触太多关于软件工程学方面的东西吧.总的收获就是,知道了优秀程序员和 ...

  7. 《人月神话》(The Mythical Man-Month)5画蛇添足(The Second-System Effect)

    聚沙成塔,集腋成裘. - 奥维德 Adde parvum parvo magnus acervus erit. [Add little to little and there will be a bi ...

  8. 《人月神话》(The Mythical Man-Month)1 看清问题的本质:如果我们想解决问题,就必须试图先去理解它...

    第一章 焦油坑(The Tar Pit) 史前史中,没有比巨兽在焦油坑中垂死挣扎的场面更令人震撼的了.上帝见证着恐龙.猛犸象.剑齿虎在焦油中挣扎.它们挣扎得越是猛烈,焦油纠缠得越紧,没有任何猛兽足够强 ...

  9. Mythical Man-Month, 人月神话

    Ref <人月神话> Chapter 15 另外一面 15 另外一面 不了解就无法真正拥有 *. 哦,赐予我朴素的评论者吧,他们不会因过于深奥而让人困惑不解. What we do not ...

  10. 1480_人月神话阅读笔记_开篇

    全部信息汇总: GreyZhang/The_Mythical_Man_Month: My reading notes of The Mythical Man-Month. (github.com)e ...

最新文章

  1. 局部特征(3)——SURF特征总结
  2. centos7 转换为lvm_[转] centos7 调整XFS格式的LVM大小
  3. 零基础学Python-爬虫-5、下载音频
  4. 线段树求逆序数(单点更新)
  5. 华为android升级国内版,华为EMUI5.0系统升级成为国内安卓升级的标杆
  6. 聊聊Interlocked.CompareExchange吧?
  7. 【Luogu1393】动态逆序对(CDQ分治)
  8. 2021中国企业招聘科技趋势报告
  9. windows PE 文件格式图(AI实现)
  10. [Web Chart系列之三] 图形布局-Layout
  11. 去海南旅游什么时间段去最好,哪里最好玩?
  12. [Laravel]配置路由小记
  13. .Net报文请求转义
  14. c语言表达式1 33的值是,2015年计算机二级C语言测试题及答案(1)
  15. 正菱台体积在线计算机,正四棱台体积,表面积,棱长,质量在线计算器_三贝计算网_23bei.com...
  16. 快捷餐饮之店家后台评论管理及餐桌管理实现
  17. 51单片机学习——中断
  18. Python基于time库对时间分钟等级进行运算
  19. IG NZT 安装使用过程中可能遇到的问题解决办法
  20. mysql数据库权限赋予

热门文章

  1. 译文 [ROM][多国语言][2015.06.11] Lenovo S750 (MTK6589) - andrea_d86-lenovos750-4.2.2
  2. C#中使用SHFileOperation调用Windows的复制文件对话框
  3. 计算机国际标准编码,【计算机基础】常用编码格式
  4. 计算机开机错误62,请问主板诊断卡错误代码62怎么办啊 ?
  5. js下载activex
  6. C++常见设计模式之工厂模式(简单工厂模式、工厂方法模式、抽象工厂模式)
  7. java 僵尸进程_僵尸进程ZOMBIE
  8. 古风宣纸背景教学课件讲座PPT模板
  9. 膜拜高手!Python竟然开发命令行版网易云音乐!
  10. HTML将广告关闭的JS代码,js实现可关闭的对联对联广告代码广告效果代码