人月神话阅读笔记1
人月神话1
每次开始读一本新书,我都会从一开始阅读,包括序言部分。其中,作者提到在很多方面,管理一个大型的计算机编程项目和其他行业的大型工程很相似,我认为,他想要强调的就是“工程”这个概念。
在接下来的叙述中,作者把过去几十年的大型系统开发,比作一个可以让大型的和强壮的动物剧烈挣扎无果然后淹没的焦油坑,作者说大多数开发人员确实可以开发出可运行的系统,但各种团队,或大型或小型、或庞杂或精干,一个接一个“淹没”的主要原因就是那些表面上看起来好像没有一个单独的问题会导致困难,每一个都能被解决,但是当它们相互纠缠和积累起来的时候,团队的行动就会变得越来越慢,对问题的麻烦程度,是超乎每一个团队成员想象的。这跟我们在学习的过程中,问题不能积累是一样的道理,不随时解决到后期就变成无从下手的大麻烦。所以,解决问题的办法就是先去理解它,理清思路找到突破点。
人月神话这一章内容,作者主要介绍了软件开发项目在进度安排上经常出现的问题。首先,由于我们对项目开发的进度估计过于乐观,我们估计出来的工作量通常会低于实际需要的工作量,尤其是对测试所需时间的安排往往是进度估算失误的最严重的地方,这应该是很多有经验的开发者会在估时的时候乘以一个固定的系数的原因。其次,人员和时间的关系并非总是反比的关系,如果任务属于可以完全分解的理想状态话,是可能达到人员和时间成反比的,但是,复杂的任务常常难以分解,那任务中的沟通需求也会占用时间,甚至可能导致人员越多,项目所需的时间越长。这是整本书让我印象最深刻的地方,还是应该根据实际情况来确定最合适的方案。
第二章人月神话开始讲进度问题。进度的可保证性和可控制性来源于项目计划的科学性,项目计划对进度预测的准确性又来源于估算的准确性,估算是否准确又涉及到项目规模,根据规模可以得到工作量,根据工作量和人力资源的投入和任务依赖约束可以得到最终的进度。当软件产品的规模增加的时候,复杂度成倍增长,从而导致这些要素之间不是单纯的线性关系。