“神话人月”还有多less?
这本书是在分时系统,程序编程和软件工程经验less于30年的时代写的。 随着诸如现有图书馆,高级语言,IDES以及互联网上可用的文档和示例的数量等诸多方面的改进,这本书还有多less成就呢?
虽然我可以相信给一个项目添加新人最初可能会减慢速度,但我认为诸如unit testing,关注点分离以及其他forms的自动化和devise改进之类的事情,可以让团队的新成员在假设之后变得更快在本书中,假定项目具有良好的devise文档和stream程。
我没有大型项目的经验,也没有大型团队的经验,所以有兴趣听听那些有经验的人的想法。 编辑:我想知道是否新的通讯工具,如维基,即时通讯和互联网通常减less了沟通的时间。 基于每个人的回答,我会说任何通信效率的提高已被复杂性增加所抵消。
这本书还有些东西要告诉我们,而我一个人也经历过增加团队规模带来的沟通问题。 你应该知道unit testing,关注点分离等并不是新概念。
但有些事情还没有经过时间的考验。 我不相信在你的代码中编写ASCIIstream程图是一个好主意,而build议的“外科手术团队”方法已经被好几个人尝试过了(最着名的是MS的Charles Simony),发现工作不太好。
今天依然如此。 这是因为从事同一项目的人员之间的沟通基本上是相互关联的,过去30年来的进展都没有发生实质性的变化。
当然,我们已经在这30年中学到了很多东西,但是根据布鲁克斯的“没有银弹”的预测,我们的工具和经验的所有改进都是渐进式的。
因为我们有现代化的设备,这不就是问孙子的战争艺术是否还适用于战争吗?
这个想法并不是说“大型团队不行”,而是“把问题抛给别人/钱不是答案”。 诸如unit testing,关注点分离等事情正在做其他事情,而不是仅仅把问题抛给人们。 这些其他的东西可以让你在适当的地方 小心地增加更多的人来加快速度。 如果有的话,你提出的观点支持这本书的想法。
着名的布鲁克斯着作“无子弹”和“神话人月”分别是对编程语言和项目pipe理的基本局限性的解释。
尽pipeTMMM中的一些章节比TMMM中途稍远一些,但是与当时的技术相比,其余的章节在今天依然与写作时相关。
在TMMM中,布鲁克斯遵循“勾勒问题”,“展示一些错误的开始”和“提出自己的解决scheme”的技巧。 上面一些评论家指出,他自己的解决scheme在这一点上可能被认为是过时的,但是他对大型项目固有问题的简洁描述使得这本书值得一读。
他不断回来的一个主题是通信开销,作为大型团队的限制因素。 作为一个思想实验,考虑因特网作为程序员的通信媒介的效果,以及对大型开源项目的催化剂。
就我个人而言,我只是为了“工艺的快乐”一节而读这本书。 我从来没有读过任何能够优雅地描述最好的编程方式的东西。 (如果您好奇的话,请看第7页,在amazon.com的“Look Inside”function中可以看到)
我当然认为像“无子弹”这样的东西今天和几十年前一样是适用的,尤其是当我们看到越来越多的年轻人进入这个行业,并且认为x是最新和最伟大的杀手语言/技术和所有其他技术将因此而死亡。
诚然,对Ada或共享计算机的引用是陈旧的,但意外和基本困难的概念,购买与构build,由于我们不重复部分,所有其他理论主题仍然是完全准确的和相关。
为什么TMMM是相关的另一个论点是,它不是关于软件本身,而是关于程序员如何完成工作。 这样就很难过时了。
我脑海里浮现出来的两个:“版本2”仍然适用,“添加更多人不一定更快”。
Spolsky以他自己的方式讨论“版本2”。 我不记得他是否专门与MMM联系,但在概念上非常相似。
沟通已经变得比MMM更有效率,但是,我认为这一切都是成比例的。 软件生产比写MMM要花费更多的时间。
有人说,计算机科学的一切都是在1960年发现的,从那以后一切都是衍生的。
阅读TMM是一本概述软件工程问题的书,也许是问题,它不是技术,而是人! 你所提到的所有改进都源于这一核心实现。 他们都解决了布鲁克斯所提出的问题。 这本书肯定了肯特·贝克和沃德·坎宁安以及阿尔斯特·科伯恩和马丁·福勒的全部阅读,把它们放在心上,然后开始制作自己的银弹。
我认为这是任何想了解软件开发过程的人必读的书籍之一。
近40年来,对发展劳动力的需求迅速增长,这种需求不会停止。 由于聪明的速度(见乔尔的“聪明和完成任务”)人口总体上保持不变,每年教育越来越多的开发者意味着开发者的平均智能越来越低。
40年前,成为开发者的是半神人; 20年前,这对聪明人来说是一份工作,而现在当我看着母校的年轻CS学生时,似乎他们正在把每个人都知道电脑是什么。
这并不意味着灾难即将来临 – 西方世界不断从新兴市场或第三世界国家import聪明人(或外包工作)。 新的开发工具使开发好的应用程序变得更容易。 这些因素似乎相互抵消,使MM-M永恒。
神话人月是一个非常过时的阅读,但核心的真理仍然适用。 当然,布鲁克斯讨论了秘书的需要,这个秘书现在显然是不正确的,他的外科手术团队的概念并不好,但是这本书的大部分内容仍然是准确的。 他的洞察力是沟通需求随着团队规模的增加而增加。 他的观察认为,把人们join一个晚期的项目使得它后来由很多项目诞生了。 unit testing有一点帮助,但是它们不会阻止人们误解代码或者提出很多问题。 没有银弹也继续经受住时间的考验。
所有的。 简单的事实是软件项目是非常平凡的, 我们build立自己的领域知识,直接进入我们的解决scheme。 域名知识转移对转让人和受让人来说都是昂贵的, 这并没有改变。 就我个人而言,无论使用什么样的实践和工具,我都相信它永远不会。 事情可能稍微好一点,但简单的事实是,教学既昂贵又困难,而且无法避免。
社会因素仍然存在,因为人类本来就是50年前的野兽。
技术示例几乎完全过时,只有在考虑到1964年的0.034 MIPS System / 360时才有意义。当您只有8 KB的内存时,build议用户负责处理闰年,而不是浪费了26个字节的系统内存(就像Brooks所做的那样)是有道理的,但是今天看起来很愚蠢。 我不知道今天有什么系统 – 你的电话比最强大的OS / 360系统强大数千倍。 今天,我们对可用性和人机交互有了更多的了解,使用户对这类事情负责任也是疯狂的。
一个程序员现在可以编写更多的代码/编译更多的软件,而不是一个程序员可以支持的,但是添加第二个开发人员不会产生两倍。
如果/当我进行一个有良好devise文档和stream程的项目时,我会告诉你是否改善了一切。
如果你想到一个迟到的大项目,那么它最有可能处于危机/恐慌模式,就像这个模式中的大多数事情一样,最好的答案是一个体面的计划,只是在危机中投入更多的资源而不解决浪费资源以外的任何东西都会使问题复杂化。
没有任何时间表(发音棚),规划和体面的pipe理。
与大多数“一线”或“金科玉律”一样,考虑更多的指导方针(与上下文相比)。