人月神话 - 阅读笔记

avatarplhDigital nomad

前言

随便看看,好吧,再次阅读总章,有了不一样的收获,真的是神作,40年前的书依旧产生深远影响.

基础知识是否完备,决定了你技术能力的天花板.

第一章 焦油坑

编程的5种乐趣:

  • 创造事物的快乐
  • 开发对他人有帮助的事物
  • 组装的乐趣
  • 学习的乐趣
  • 用插件的乐趣

编程的5种烦恼

  • 将做事的方式转变到追求完美是学习编程最困难的部分,
  • 创造过程中的重复劳动。
  • 软件过时

第二章 人月神话

  • 缺乏合理的时间进度是造成项目滞后的主要原因,比其他所有因素的组合还要大.
  • 无法加快速度编程
  • 所有的编程人员都是乐观主义者.
  • 期待编程过程中不会遇到bug
  • bug是难以避免的
  • 是最具欺骗性的两个单位,我们都以为他们之间可以互相换算,但实际上不行,
  • 若干人员分解任务会造成额外的沟通工作量.
  • 进度安排通常是 1/3计划 1/6编码 1/4构建测试 1/4系统测试 , 惊讶于编程时间仅仅只占到1/6
  • 编程缺乏数据统计
  • 我们对自己的估计技术不确定,通常在客户和管理的压力下,缺乏坚持的勇气.
  • 为落后的项目添加人手,只会使得进度更加落后.
  • 增加人手增加了工作量
    • 任务重新分配和所造成的工作中断.
    • 培训新人员
    • 额外的相互沟通

第三章 外科手术队伍

  • 同样2年经验,收到同样培训,优秀工程师是较差工程师效率的10倍.
  • 经验和水平没有直接联系.
  • 小型精干的队伍是最好的.
  • 两个人的团队,要有一个是领导者
  • 人海战术开发的产品通常很差,且无法进行概念上的集成
  • 一位首席工程师可以给产品提供核心思想,提供完整性,又能得到多位协助人员提高总效率,减少沟通工作量.

第四章 贵族专治,民主政治和系统设计

  • 完整的概念性是系统设计中最重要的考虑因素
  • 功能/理解上的复杂度的比值才是系统设计的最终测试标准
  • 为了获得概念上的完整性,设计人员必须由一个人或者具有共同意识的小团体来完成.
  • 对于超大型项目,将结构体的工作和具体实现的工作相互隔绝是获得概念完整性的最佳办法
  • 当然如果想要获得概念上的完整性,就必须执行贵族专制,这是无需歉意的.
  • 纪律有时候是有益的,外部的结构体系规定实际上是增强而不是限制小组的创造性
  • 概念上的统一能够更快的完成开发和测试
  • 结构体系,设计实现,物理实现的之类的许多工作是可以并行进行的.

第五章 画蛇添足

  • 尽早的交流并且持续交流,能够使结构师有较好的成本意识,使开发人员对设计有信心,并不会混淆各自的责任分工,
  • 结构师如何成功的影响实现,:
    • 牢记开发人员承担创造性的实现责任,结构师只能提出建议
    • 时刻准备着为所指定的说明建议

第六章 为什么巴比伦塔会失败

  • 失败原因,缺乏交流以及交流的结果 - 组织
  • 下列组合十分有效
    • 产品和技术主管是同一个人
    • 产品总指挥,技术左右手
    • 技术总指挥,产品左右手

第十三章 胸有成竹

  • 仅仅通过对编码时间进行估算乘以其相对系数,是无法得到工作量的准确估量的.
  • 使用适当的高级语言,生产效率可以提高5倍.

第十四章 祸起萧墙

  • 项目是一天一天的延迟的,,这种延迟更加缓慢也更加致命,
  • 制定里程碑时间,可以有效的进行进度控制,里程碑事件如果定义的很明确,程序员一般不会对此弄虚作假,
  • 慢进度是士气的杀手,