《人月神话》,作者:弗雷德里克·布鲁克斯
一. 《人月神话》经典语录:
1.“Good cooking takes time. If you are made to wait, it is to serve you better, and to please you.”
美食的烹饪需要时间;片刻等待,更多美味,更多享受。
2.“Adding manpower to a late software project makes it later.”
向进度落后的项目中增加人手,实惠使进度更加落后。这一观点也被称为“布鲁克斯法则”。
3.“Practice is the best of all instructors.”
实践是最好的老师。
4.“There is nothing in this world constant but inconstancy.”
不变只是愿望,变化才是永恒。
5.“It is common sense to take a method and try it. If it fails, admit it frankly and try another. But above all, try something.”
普遍的做法是,选择一种方法,试试看;如果失败了,没关系,再试试别的。不管怎么样,重要的是先去尝试。
6.“What we do not understand we do not possess.”
不了解,就无法真正拥有。
7.“For brevity is very good, where we are, or are not understood.”
我们理解也好,不理解也好,描述都应该简短精炼。
8.“More programmers on a project do not make it go faster, just like nine women can’t make a baby in one month.”
有更多的程序员加入一个项目,不会使进度更快,就像九个女人无法在一个月内生一个孩子一样。
9.“No Silver Bullet”
没有银弹(意指没有一种单一的方法或技术能够彻底解决软件开发中的所有问题)。
10.“Software systems are inherently complex and their complexity increases during development.”
软件系统的复杂性是无法避免的,它会随着开发的进行而不断增加。
二.《人月神话》讲了什么?
《人月神话》(The Mythical Man-Month)是由计算机科学家弗雷德里克·布鲁克斯于1975年出版的书籍,它是计算机科学和软件工程领域的经典著作之一。该书主要探讨了软件项目管理和开发过程中的各种挑战和问题,强调了人力资源管理、沟通和复杂性等方面的重要性。
以下是《人月神话》中的主要内容:
人月神话的核心观点:布鲁克斯指出,软件开发过程中的进度不能仅仅通过增加人力资源来推动。新加入的成员需要时间来学习和适应项目,同时也会引入更多的沟通成本。如果一个软件项目已经延期,增加人员将导致进一步的延期。
软件开发的复杂性:布鲁克斯解释了软件开发中的复杂性,特别是在大型项目中。他提到了“二次系统效应”,即开发人员在设计第二个系统时倾向于过度设计,从而导致系统变得复杂、不稳定且难以实现。
沟通的关键作用:书中强调了沟通在软件开发中的关键作用。随着团队规模的增加,信息的传递和理解变得更加困难。布鲁克斯引入了“外科手术队”概念,强调团队成员之间的紧密合作和沟通,以实现高效的软件开发。
项目进度的监控和控制:布鲁克斯提倡使用进度报告、问题跟踪和风险管理等工具,以便及时发现并解决问题,确保项目按计划推进。
软件开发方法学:书中讨论了不同的软件开发方法学,包括瀑布模型、原型模型等,并对这些方法的优点和局限性进行了分析,提出了在不同情况下选择合适方法的建议。
实践经验分享:布鲁克斯分享了他在IBM OS/360操作系统项目中的经验教训,例如如何处理人员变动、如何应对延期等问题,并提供了一些关于软件开发实践的建议,如保持简单、避免过度设计等。
三.《人月神话》读后感
阅读《人月神话》后,我深受启发,对软件开发项目管理和开发过程有了更深刻的理解。以下是我的一些读后感:
对“人月神话”的深刻认识:布鲁克斯提出的“人月神话”概念让我意识到,在软件开发中,人力并不是可以无限放大的资源。增加人力可能会带来沟通成本的增加和项目进度的延误。因此,在项目规划和资源分配时,需要更加谨慎和理性。
对沟通重要性的重新认识:书中强调的沟通在软件开发中的关键作用让我深刻认识到,有效的沟通是项目成功的关键。团队成员之间的紧密合作和及时的信息传递对于项目的顺利进行至关重要。
对软件开发复杂性的理解:布鲁克斯对软件开发复杂性的深入剖析让我认识到,软件系统的复杂性是无法避免的。因此,在软件开发过程中,需要采取有效的措施来管理和控制这种复杂性,如采用模块化开发、保持系统简单等。
对实践经验的重视:布鲁克斯分享的实践经验和教训让我认识到,理论学习固然重要,但实践经验同样不可或缺。通过阅读他人的实践经验和教训,我们可以避免重复犯错,提高项目成功的几率。
总之,《人月神话》是一本极具价值的软件工程经典著作。它不仅提供了丰富的理论知识和实践经验,还让我们对软件开发项目管理和开发过程有了更深刻的认识和理解。我相信,这本书将对我的职业生涯产生深远的影响。