记得在上大学的时候,就经常听学长和老师讲起《人月神话》,但是却一直没有阅读。记得当时一听到这个书名,还以为是个神马科幻类别的书,结果是个软件工程方面的书籍。这本书是“图灵奖得主、“IBM360系统之父”作者Brooks写的,人们都说它颠覆了项目管理领域,是一本长久不衰的传奇经典,畅销了40多年。的确,在我们熟悉的豆瓣读书上面,它的评分达到了8.6(满分10分),不可不畏是一本好书。最近快速地阅读完后,按照我的老规矩,也需要总结总结,写一篇笔记来日后回顾之用。
“人月”这个词英文原文是“Man Month”,代表一个人一个月的时间内能够完成的工作量,在软件开发项目管理中,常用来估算任务量,比如“这个项目需要多少个人月?”。很多时候我们或多或少都有过这样的经历,很多的项目管理人员总是希望通过增加更多的人手来加快软件工程的完成进度。比如,一个工作量为10个人月的项目,如果只有一个人做,需要10个月才能完成。于是,我们的项目管理人员认为,只要再加入9个人,那么10个人一起做,就只需要一个月啦。然而,实际情况并非如此,因此软件工程的各项工作之间,往往存在着一个前后继承的关系,完成了这一项,下一项才能开始。那么,加进来的人手呢,他并不能立即开始工作。所以,想要通过增加人手来缩短工程时间,其实只是一个“神话”而已。这里,就不得不提经常被拿来举例的一个例子,一个孕妇生一个小孩需要10个月,那么请10个孕妇来就只需要1个月啦?显然是不可能完成的任务。
而“人月神话”反映出的,就是软件开发在项目管理中所遇到的难题:管理人员因为盲目乐观,对项目开发过程中的困难没有充分的认识,在计算项目的工作量和交付时间上采用了错误的计算方法,忽略了细节对整体的巨大影响,而这很可能会导致项目延期。
首先,作者建议,以小团队的方式开展工作。
这里不得不说,作者在当时提出了一个类似于外科手术团队的组织结构来开展工作。外科手术团队的奥秘就在于,它是以主刀医生为核心,其他像负责助理医生、麻醉师、护士等人都是为主刀医生服务的,大家各司其职、齐心协力,从而保证手术顺利完成。那么,反映到软件工程上面,就是以架构师或者高级程序员充当主刀医生的角色,而团队管理者充当副手或者服务人员,其他团队成员则分别负责单元代码编写,功能单元测试,文档管理,工具开发及技术支持等等。即使整个项目团队的人数庞大,但只要根据工作边界,将大家划分到一个个类似于外科手术队伍那样的小团队当中去,就可以保障在一定程度上的效率提升。
其次,要进行行之有效的沟通。
定期召开项目进度例会,对数据结构进行监督和全员反馈等等,都是常见的增进沟通的手段。而近年来流行的敏捷开发模式,例如Scrum这种敏捷开发流派,就特别倡导小团队的高频率的沟通,每个迭代(大概2周一个迭代)都会完整经历计划会议、每日站立会议、项目评审会议、团队回顾会议等,特别是每日站立会议,虽然一般只有短短15分钟,但是确是增进沟通的主要行之有效的方式。
此外,作者还在特别强调了两个点:
最后,要“防微杜渐”
关于“防微杜渐”,作者具体给出了几点建议:
“人月神话”中的一些问题,其根源在于软件工程本身的特性,是无法彻底解决的,这也是广大IT从业人士的共识。其原因归根结底有以下几点:
虽然作者说到上面提到的这些困境是软件开发的根本困难,无法彻底解决。但是,它还是给出了三方面的建议,来尽可能改善这种困难造成的困境:
弗雷德里克·布鲁克斯,《人月神话》
王福强,《喜马讲书:人月神话》
原文:https://www.cnblogs.com/edisonchou/p/mythical_man_month_study_notes.html