人月神话读书笔记01

Posted on 2020-04-10 23:07  九天龙凤  阅读(126)  评论(0编辑  收藏  举报

焦油坑

为什么两个人的创业团队可以超越大公司9倍以上的效率开发任何程序。而大公司的产业化团队效率只有1000代码行/年。程序员,就像诗人一样,几乎仅仅工作在单纯的思考中。程序员凭空运用自己的想象,来建造自己的“城堡”。很少有这样的介质——创造的方式如此灵活,如此得益于精炼和重建,如此得容易实现概念上的设想。 

评论:正因为程序员所做的工作是纯粹的智力创造,不断的推到重来就成为常态。概念设计上的不完善,使得软件架构变得越来越庞大、复杂并且难以为继,成为一个焦油坑,越是挣扎,越是深陷其中。

人月神话

Brooks法则:“向进度落后的项目中增加人手,只会使进度更加落后。”

评论:注明的Brooks法则,人月神话一文的核心观点。用人月这一观念来衡量项目进度带有欺骗性。因为他使得项目看上去好像人力和时间是可交换的。如果时间不够,那么增加人手就可以加快进度。但是这个衡量方式忽略了新增加人手的培训时间、队员之间的沟通时间等等因素,结果就是,盲目的增加人手只会导致项目落后。所以问题是,如何使得项目进度不落后;要想使得项目进度不落后,就要制定出合理的项目进度。所以,问题是,如何制定出合理的项目进度。

外科手术队伍

最好的和最差的表现在生产率上平均为10:1,在运行速度和空间上具有5:1的惊人差异!简言之,$20,000/年的程序员的生产率可能是¥10,000/年程序员的10倍。得出的结论很简单:如果一个200 人的项目中,有25 个最能干和最有开发经验的项目经理,那么开除剩下的175 名程序员,让项目经理来编程开发。

评论:所以说有经验的程序员才是最廉价的劳动力啊

Harlan Mills 的提议提供了一个崭新的、创造性的解决方案2,3。Mills 建议大型项目的每一个部分由一个团队解决,但是该队伍以类似外科手术的方式组建,而并非一拥而上。也就是说,同每个成员截取问题某个部分的做法相反,由一个人来进行问题的分解,其他人给予他所需要的支持,以提高效率和生产力。

评论:有时候民主和平等也许并非是最好的选择:因为首先在人在智力上、能力上就并不平等。外科手术式的团队其实是延续了早期英雄式的编程风格:主要的程序员决定了项目的大部分内容,而其他人则成为他的副手,帮助他完成各项细节性的工作。

贵族专制、民主政治和系统设计

现在让我们来处理具有浓厚感情色彩的问题——贵族统治和民主政治。结构师难道不是新贵?他们一些智力精英,专门来告诉可怜的实现人员如何工作?是否所有的创造性活动被那些精英单独占有,实现人员仅仅是机器中的齿轮?难道不能遵循民主的理论,从所有的员工中搜集好的创意,以得到更好的产品,而不是将技术说明工作仅限定于少数人?

评论:为了实现概念完整性,在软件体系结构设计的时候必须实行贵族专制,让少数的架构师来决定整体的架构,普通程序员毫无发言权。但是Brooks为了安慰那些可怜的普通程序员,就告诉他们:其实实现细节也是需要一样的创造性、同样的新思路和卓越的才华。但是谁都知道,如果能够成为贵族,为何要在制造工艺上费劲心思呢?

画蛇添足

第二个系统是设计师们所设计的最危险的系统。而当他着手第三个或第四个系统时,先前的经验会相互验证,得到此类系统通用特性的判断,而且系统之间的差异会帮助他识别出经验中不够通用的部分。一种普遍倾向是过分地设计第二个系统,向系统添加很多修饰功能和想法,它们曾在第一个系统中被小心谨慎地推迟了。

评论:这个标题起得让人摸不清头脑,其实值得是第二系统效应。认识到第二个系统存在的风险,可以让架构师保持警惕,少犯错误。

借鉴:https://www.jianshu.com/p/da8a68354caa