《人月神话》补遗笔记

  • 编程的快乐在于它不仅满足了我们内心深处进行创造的渴望,而且还唤醒了每个人内心的情感。
  • 在系统设计中,概念完整性应该是最重要的考虑因素。也就是说,为了反映一系列连贯的设计思路,宁可省略一些不规则的特性和改进,也不提倡独立和无法整合的系统,哪怕它们其实包含着许多很好的设计。
  • 由于目标是易用性,功能与概念的复杂程度的比值才是系统设计的最终测试标准。
  • 同工作广泛的水平分割相比,垂直划分从根本上大大减少了劳动量,使交流彻底地被简化,概念完整性得到了大幅提高。
  • 体系结构设计人员必须为自己描述的任何特性准备一种实现方法,但是他不应该试图支配具体的实现过程。
  • 必须明确定义体系结构中与先前定义不同的地方,重新定义的详细程度应该与原先的说明一致。
  • 项目工作手册不是一篇独立的文档,它是对项目必须产出的一系列文档进行组织的一种结构。
  • 交流和交流的结果——组织,是成功的关键。交流和组织的技能需要管理者仔细考虑,相关经验的积累和能力的提高同软件技术本身一样重要。
  • 为了满足目标,每个人都阿紫局部优化自己的程序,很少会有人停下来,考虑一下对客户的整体影响。对大型项目而言,这种导向和缺乏沟通是最大的危险。在整个实现的过程期间,系统结构师必须保持持续的警觉,确保连贯的系统完整性。在这种监督机制之外,是实现人员自身的态度问题。培养开发人员从系统整体出发、面向用户的态度是软件编程管理人员最重要的职能。
  • 文档的跟踪维护是项目监督和预警的机制。文档本身可以作为检查列表、状态控制,也可以作为汇报的数据基础。
  • 任何管理任务的关注焦点都是时间、地点、人员、项目内容和资金。
  • 开发人员交付的是用户满意程度,而不仅仅是有形的产品。用户的实际需要和用户的感觉会随着程序的构建、测试和使用而变化。
  • 系统软件开发是减少混乱度(减少熵)的过程,所以它本身是处于亚稳态的。软件维护是提高混乱度(增加熵)的过程,即使是最熟练的软件维护工作,也只是放缓了系统退化到非稳态的进程。
  • 项目经理应该制定一套策略,并为通用工具的开发分配资源。与此同时,他还必须意识到对专业工具的需求,对这类工具的开发不能吝啬人力和物力——这种企图的危害非常隐蔽。
  • 细致的功能定义、仔细的规格说明、规范化的功能描述说明以及这些方法的实施,大大减少了系统中必须查找的bug数量。
  • 必须有人对变更和版本进行控制和文档化,团队成员应使用开发库的各种受控拷贝来工作。
  • 根据一个严格的进度表来控制大型项目的第一个步骤是制定进度表,进度表由里程碑和日期组成。
  • 里程碑必须是具体的、特定的和可度量的事件,能进行清晰的定义。
  • 即使是完成开发给自己使用的程序,描述性文字也是必须的,因为它们会被用户-作者所遗忘。
  • 为了使文档易于维护,将它们合并至源程序是至关重要的,而不是作为独立文档进行保存。
  • 程序修改人员所使用的文档,除了描述事情如何,还应阐述它为什么那样。对于加深理解,目的是非常关键的,即使是高级语言的语法,也不能表达目的。
  • 我的第一项建议是每个软件机构必须决定和表明,杰出的设计人员和卓越的管理人员一样重要,他们应该得到相同的培养和回报。
  • 创造力来自于个人,而不是组织架构或者开发过程,项目经理面临的中心问题就是如何设计架构和流程,来提高而不是压制主动性和创造力。

你可能感兴趣的:(软件工程,项目管理)