初次听说这本书,是因为老师经常上课的时候提到,朋友买了这本书,既然要写读后感就写这个,抱着这样的心态翻开这本“和软件开发软件工程有关”的书,第一眼,目录让我觉得眼前一亮,不是像其他相关书籍那样简单乏味,它总是以比如“外科手术队伍”“贵族专制”等一些看似毫无关系的词语,以及很多家喻户晓的成语来作为目录名称,这让我有了看下去的欲望。
鉴于之前对这方面没有深入了解过,所以我觉得我需要百度相关知识,原来,作者在20世纪最后一年获得了图灵奖,一个在美国大名鼎鼎的任务,在几十年前把历年来写过的软件工程和项目管理方面的文章汇集成了这本书。阅读这部书的第一感受,应该是它用了很多比喻,来讲解团队中的人和交互,以及项目管理方面的问题,强调了人的重要性。焦油坑第一章就以文字呈现画面感,简单形象说编程这个行业给人创造动手和控制的乐趣但是对于沟通的依赖,完美的追求也是令人苦恼的一面,很多问题虽然在本书上提到,那是多少年前的事,可是读过后会发现,不管时间怎样过去了,有些问题还是没法改变,“向进度落后的项目中增加人手,只会使进度更加落后”“软件开发本质上是一项系统工作,是错综复杂的关系下的一种实践,沟通、交流的工作量非常大。从而,添加更多的人手,实际上是延长了而不是缩短了时间进度”,看过才发现,以前所认为的那些理所当然的“当然要加人手了,那样更快了”的想法是多么不合逻辑,完成工作的人数和时间不能进行简单的互换,因为沟通需要额外的成本,“一切都将运转良好”在软件工程中是不适用的,所以一个项目中间会出现很多问题,而这些问题的解决需要所有参与人员的共同沟通,共同解决,成本很大。这本书里面的内容大部分都和团队,人的沟通有关,在大型软件工程项目中仍然强调人的重要性,开篇以及后面通过巴比伦塔阐述的沟通的重要性,外科手术一章中团队的组建和分工,甚至是最后的没有银弹,说明开发是一件非常需要智力的工作,它包括了太多太多方面,作者在讲巴比伦塔的时候,说明了大型软件工程应该有不同层次的沟通,“’他们只是一个种族,适用一种语言,如果他们一开始就能建造城市和高塔,那么以后就没有什么难得到他们的了。来,让我们下去,在他们的语言里制造一些混淆,让他们相互之间不能听懂。‘这样,上帝把人们分散到世界各地,于是他们不得不停止建造那座城市。”,而外科手术队伍的相关对应分析,明确且一针见血地说明了,专业的分工良好的小规模团队的架构的重要性。
开发一个软件不容易,开发一个大型项目不容易,不仅需要合理的时间进度,需要参与人员保持充分的沟通,要重视概念的完整性,由少数人完成系统的体系结构设计时,要遵守底线,设计师不能被诱惑着开发过多的功能,开发人员要定期有不同层次的交流,坚守手册,当然,程序的规模也要和时间一样作为成本被预算所控制,两者进行一定的折中,甚至在两方面同时进行优化,程序开发人员同时要做好要抛弃的准备,上面说过,“一切都将良好运转”是不可能的,开发过程中,永远没有“我刚修完最后一个BUG”,缺陷修复会引入新的BUG,而且到了最后必然会不能再进行改进。
也许,增加开发和卓越的高智商设计团队可能可以缓解根本问题所在。