读书笔记--学习人月神话的金句及感悟1

《人月神话》是计算机领域的经典著作,甚至可以说是圣经,该书虽然创作于20世纪,但对今天我们正在开展的软件建设项目或数字化转型项目同样有借鉴意义。书中阐述了大型项目建设过程中的各种坑,要时刻关注产品或系统的概念完整性和易用性,更不能片面的利用人月替换工作量或增加进度,甚至神话人月,提出了类似于外科手术队伍的软件编程队伍,最后阐述了巴比伦塔建造项目的失败,总结形成了三种组织搭配方式。通过阅读,让我们反思软件开发项目遇到的各种问题、问题的原因,以及对应的处理机制是否合适等。以下是摘自书中的一些金句,值得我们在工作中、项目设计实施过程中进行实践参考和避坑。

1、大型编程项目碰到的管理问题和小项目碰到的管理问题区别很大,关键需要维持产品自身的概念完整性。

2、在焦油坑章节中提到职业的快乐与苦恼,快乐有创建事物快乐、开发对他人有用的东西、整体过程体现强大的魅力、持续学习的快乐和易于驾驭的介质。苦恼主要有追求完美、需求方(他人)来设定目标、有趣的概念设计及琐碎重复的bug工作、调试查错有时是二次方增长的、当产品终于完成时已经过时。特别时第2条苦恼体现了目标、供给资源和提供信息的责权不对等。因此,我们经常面临的挑战和任务时在实际的进度和有效的资源范围内,寻求解决实际问题的切实可行的方案。换句话说,编程是一个多人痛苦挣扎的焦油坑,以及一种快乐与苦恼共存的创造性活动。

3、在人月神话章节中提到我们场景估算技术中人月互换,即错误的将进度和工作量互相混淆的问题,其实用人月作为衡量一项工作的规模是一个危险和带有欺骗性的神话,只有完全可以分解的任务才有效,人员的数量依赖于独立子任务的数量,但实际工作中很多任务是无法完全分解的。软件开发本质是一项系统工程-错综复杂关系的一种实践、沟通和交流的工作量会非常巨大。在大多数项目中,缺乏合理的进度安排是造成项目滞后的主要原因。

4、在外科手术队伍章节中描述了不同类型程序员的生产率或效率的差异,有时候能达到10倍以上,其实在大型项目建设过程中,需要协作沟通的人员数量影响着开发成本,因为成本的主要组成部分是相互的沟通和交流,以及更正沟通不当所引起的不良结果,尽量让更少的人员来参与开发。类似于外科手术团队,提出了标准的10人程序开发队伍的沟通模式包括外科医生、副手、管理员、编辑、程序职员、工具维护人员、测试人员、语言专家和两个文秘(支持管理员和编辑,负责非产品文件或使项目协作一致的工作),这种分工方式明确了问题不需要分解,也不存在上下级关系,外科医生是首席程序员,是全能型人才,副手是某一个方面的全能型人才,是外科医生的后备,其他人员是按照专业化分工的,从而形成的高效的团队,团队交流模式非常简单,但这种团队模式对于小型项目非常适合,对于大型项目,比如5000人年的项目,就需要扩建,就需要整体考虑概念的完整性,需要用到各种分解技术,相当于要有一个系统结构师从上而下进行所有的设计,并且体系结构设计与实现之间要有明细清晰的界限,这个本身就是具有实践性的难题。

5、在专制、民主和系统设计章节提出了系统设计最重要的因素是概念完整性,软件开发是一个创造性活动,主要包括三个独立阶段:体系结构、设计实现和物理实现。每个阶段都有创造性活动,都有其价值,同时明确了规范化是增强了相应阶段的创造性活动,而不是限制,是的该阶段的人员将注意力更加集中到需要解决的问题上。体系结构重点关注的是产品或系统的概念完整性、系统易用性问题、实现用户的核心利益 ,实现人员重点关注的是产品的成本性能比,同时很多物理实现阶段的工作可以与体系结构和设计工作并行开展,比如电路、线缆、机箱、电源和内存的设计实现等。因此,在产品的概念完整性方面需要一两个高级人才的专制设计,在实现阶段需要集思广益,民主实现。

6、在贯彻执行章节提出了问得好规格说明(即手册)的重要性,手册需要清晰、完整和准确,实际项目开展过程中,手册的形式化定义主要有两种:形式化描述和叙述性文字。

7、在巴比伦塔建造失败的章节中提出了多项管理教训,其实巴比伦塔建造项目中,有清晰的目标、人力、材料、足够的时间和技术,但缺少了交流和组织,体现出了大型项目中如何组合和如何交流的重要性,交流内容要结合第6条形成的项目工作手册开展,明确是什么、为什么和对应的处理机制、以及如何入手等。提出了一般大型编程项目的组织架构是一个树状队伍,基本要素包括任务、产品负责人、技术主管或结构师、进度、人力的划分和各部分之间的接口定义。

团队的搭建需要根据参与的人员来组织,主要有三种可能的关系:

产品负责人和技术主管是同一个人:这种方式要求人员既有管理技能,又具有技术技能,非常适合小型项目。

产品负责人为总指挥,技术主管充当其左右手:这种方式需要前者支持技术主管的所有技术决定,要对技术主管的技术才能从内心和管理方面表现出足够的尊重,同时在团队中树立其威信。这种模式下,项目经理可以借助不擅长管理的技术天才来完成工作。这种搭配方式对工作很有成效,但对人性是一个大的考验。这种类型的项目适合大型项目,但管理要求更高。

技术主管作为总指挥,产品负责人充当其左右手,这种方式使得工作非常有效,适合小型项目开展,类似于第4部分的外科手术队伍。

因此,在巴比伦塔建造失败的案例中得出,在软件项目中,相比于软件技术本身而言,项目的交流和组织方面的技能与经验积累同样重要,是项目能否成功的关键。

猜你喜欢

转载自blog.csdn.net/hhue2007/article/details/128746020