逃离焦油坑的伟大尝试——《人月神话》推荐

2024-03-06 10:32

本文主要是介绍逃离焦油坑的伟大尝试——《人月神话》推荐,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

软件危机中的项目经理的思考

  这段时间读了一些与软件工程专业相关的书,开拓了不少视野,也重新认识了软件工程这个专业。在这些书之中,也包含了被尊为“软件工程圣经”的人月神话。
  《人月神话》的作者 Frederick P. Brooks, Jr. 博士是世界上第一批获得计算机科学博士学位的人之一,曾荣获计算机科学领域最具声望的图灵奖。美国计算机协会(ACM)称赞他“对计算机体系结构、操作系统和软件工程作出了里程碑式的贡献”。
  在1961年年底,当时在计算机领域举足轻重的IBM公司决定进行一个前所未有的尝试——开发 OS/360 系统,这个操作系统要能让所有的软件适用于所有 360 系列的电脑,并让这些电脑享用相同的设备,进行连接,共同工作。
  这些在今天看来理所当然的事,在当时可是闻所未闻,投入到这个项目中的工程师超过2000人(Windows2000也只动用了1700人),花费5亿美元,这些都是创纪录的。
  负责这个艰苦卓绝的开发任务的人,正是 Frederick P. Brooks ,由于从未有开发这种大型软件的经验,开发组陷入了“有史以来最可怕的软件开发泥潭”,最终也没能完全实现当初的设想,即使使用了5000个人年(一个人一年的工作量)。
  这次的任务让Frederick P. Brooks印象深刻,在这之后,他总结了这次任务的经验,写下了《人月神话》。
这里写图片描述
  对于所遭遇的困境,书中使用了一个令人震撼的比喻:一个越是挣扎越难以挣脱的焦油坑,没有任何猛兽足够强壮或具有足够的技巧,能够挣脱束缚,它们最后都沉到了坑底。
  为了挣脱这个焦油坑,许多的团队——大型的和小型的,庞杂的和精干的——都为此作出了许多努力,这些努力并不是毫无用处,但他们当中,只有极少数的团队成功地满足了目标、时间进度和预算的要求。
  造就这一状况的原因有多种,而其中最主要的原因是缺乏合理的进度安排:我们对估算技术缺乏有效的研究,而一旦项目出现了滞后现象,第一反应就是向项目中增加人手,但在多数情况下,这样的行动无异于抱薪救火,只会让项目的进度一再拖延,最终影响项目的质量。
  于是作者在书中,提出了不能简单地用“人月”来衡量项目的工作量:1个人花10个月能做完的事情,10个人花一个月未必能做完,正如十个孕妇无论如何也可能在一个月内生下孩子。
  为了解决这些问题,在《人月神话》这本书中,作者结合开发OS/360的经历,及同事的建议,提出了许多颇具洞察力的见解,例如创建精干的外科医生手术团队,建立实验性系统等,其中有许多见解被证明具有重要的实践意义,这也就不难理解,为什么这本书可以畅销数十年经久不衰,乃至被奉为行业内的圣经了。
  作为一名软件工程的学生,我们的目光不应只停留在学校所教的那些技术上面,我们应该通过各种渠道,去全面理解自己正在学习的,将来也可能要从事的行业,只有这样,才能更加清楚现在正在学习的内容的意义,去思考未来的更多可能。

这篇关于逃离焦油坑的伟大尝试——《人月神话》推荐的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/779780

相关文章

Spring Boot spring-boot-maven-plugin 参数配置详解(最新推荐)

《SpringBootspring-boot-maven-plugin参数配置详解(最新推荐)》文章介绍了SpringBootMaven插件的5个核心目标(repackage、run、start... 目录一 spring-boot-maven-plugin 插件的5个Goals二 应用场景1 重新打包应用

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

Qt QCustomPlot库简介(最新推荐)

《QtQCustomPlot库简介(最新推荐)》QCustomPlot是一款基于Qt的高性能C++绘图库,专为二维数据可视化设计,它具有轻量级、实时处理百万级数据和多图层支持等特点,适用于科学计算、... 目录核心特性概览核心组件解析1.绘图核心 (QCustomPlot类)2.数据容器 (QCPDataC

Java内存分配与JVM参数详解(推荐)

《Java内存分配与JVM参数详解(推荐)》本文详解JVM内存结构与参数调整,涵盖堆分代、元空间、GC选择及优化策略,帮助开发者提升性能、避免内存泄漏,本文给大家介绍Java内存分配与JVM参数详解,... 目录引言JVM内存结构JVM参数概述堆内存分配年轻代与老年代调整堆内存大小调整年轻代与老年代比例元空

深度解析Java DTO(最新推荐)

《深度解析JavaDTO(最新推荐)》DTO(DataTransferObject)是一种用于在不同层(如Controller层、Service层)之间传输数据的对象设计模式,其核心目的是封装数据,... 目录一、什么是DTO?DTO的核心特点:二、为什么需要DTO?(对比Entity)三、实际应用场景解析

Go语言中nil判断的注意事项(最新推荐)

《Go语言中nil判断的注意事项(最新推荐)》本文给大家介绍Go语言中nil判断的注意事项,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.接口变量的特殊行为2.nil的合法类型3.nil值的实用行为4.自定义类型与nil5.反射判断nil6.函数返回的

python 常见数学公式函数使用详解(最新推荐)

《python常见数学公式函数使用详解(最新推荐)》文章介绍了Python的数学计算工具,涵盖内置函数、math/cmath标准库及numpy/scipy/sympy第三方库,支持从基础算术到复杂数... 目录python 数学公式与函数大全1. 基本数学运算1.1 算术运算1.2 分数与小数2. 数学函数

Python Pillow 库详解文档(最新推荐)

《PythonPillow库详解文档(最新推荐)》Pillow是Python中最流行的图像处理库,它是PythonImagingLibrary(PIL)的现代分支和继承者,本文给大家介绍Pytho... 目录python Pillow 库详解文档简介安装核心模块架构Image 模块 - 核心图像处理基本导入

CSS Anchor Positioning重新定义锚点定位的时代来临(最新推荐)

《CSSAnchorPositioning重新定义锚点定位的时代来临(最新推荐)》CSSAnchorPositioning是一项仍在草案中的新特性,由Chrome125开始提供原生支持需... 目录 css Anchor Positioning:重新定义「锚定定位」的时代来了! 什么是 Anchor Pos

Java SWT库详解与安装指南(最新推荐)

《JavaSWT库详解与安装指南(最新推荐)》:本文主要介绍JavaSWT库详解与安装指南,在本章中,我们介绍了如何下载、安装SWTJAR包,并详述了在Eclipse以及命令行环境中配置Java... 目录1. Java SWT类库概述2. SWT与AWT和Swing的区别2.1 历史背景与设计理念2.1.