人月神话(1)焦油坑--人是程序员,月是时间,如果1人干10个月如果等同10人干1个月,那就成神话

人月神话(1)焦油坑->总结

一切只为了好玩,just for fun!
人是程序员,月是时间,如果1人干10个月如果等同10人干1个月,那就成神话。

在史前史中,没有其他场景能比巨兽在焦油坑中挣扎垂死的情景更加震撼。上帝见证 了恐龙、猛犸象和剑齿虎在焦油中苦苦挣扎。它们越是奋力挣扎,焦油就越紧密地缠绕着它们,没有任何一种强壮或技巧高超到足以摆脱束缚的野兽,最终都陷入了深渊。过去几十年来大型系统开发就像是这个焦油坑一样,许多庞大而强大的生物都在其中拼命挣扎。他们当中有很多人成功开发出可运行的系统——然而只有极少数项目能够满足目标、时间进度和预算要求。各种规模大小、复杂程度不同的团队一个接一个地被埋没于这个焦油坑之中。表面上看似乎没有单独问题会导致困难,每个问题都可以解决,但当它们相互纠缠并积累起来时,团队行动变得愈发迟缓。对问题所带来的麻烦程度令每个人感到惊讶,并且很难看清问题本质所在。然而如果我们想要解决问题,则必须试图先理解它。因此,请首先让我们认识一下软件开发这个职业,并体验其中既有乐趣也有苦恼。
在这里插入图片描述

编程系统产品

在这里插入图片描述

在图的左上部分是程序(Program)。它本身是完整的,可以由作者在所开发的系统平台上运行。它通常作为车库中产出的产品,并用作单个程序员生产力评估标准。有两种途径可以使程序转变成更加实用但成本更高的东西,这些途径表现为图中的边界。水平边界以下,程序变成编程产品(ProgrammingProduct)。编程产品可供任何人运行、测试、修复和扩展。它能够在多种操作系统平台上运行,并支持多套数据使用。要成为通用的编程产品,必须按照普遍认可的风格来编写程序,特别是输入范围和形式必须扩展以适应所有合理使用基本算法所需求之范围。接着对程序进行彻底测试以确保其稳定性和可靠性,使其值得信赖。这意味着需要准备、运行和记录详尽的测试用例库来检查输入边界和范围。此外,将程序提升为编程产品还需要完备文档供每个人使用、修复和扩展。经验数据表明相同功能的编程产品至少比已经过测试的程序成本高三倍。回到图中,垂直边界的右侧是编程系统(ProgrammingSystem)的一个构件单元。它由功能相互协作的程序集合组成,具有规范格式和可交互性,并用于整个系统的组装和搭建。为了成为系统构件,程序必须按照一定要求编制,以确保输入输出在语法和语义上与精确定义的接口一致。同时还需要符合预先定义的资源限制——内存空间、输入输出设备、计算机时间等。最后,在任何可能想象到的组合下进行测试才能被认可为系统构件单元之一。由于测试用例会随着组合不断增加而变得非常广泛,因此测试工作将会非常耗时且费力;同样功能但是作为编程系统构件则至少比独立程序多三倍成本,并且如果该系统包含大量组成单元,则其成本更高。图右下部分代表编程系统产品(ProgrammingSystems Product),与以上所有情况都不同之处在于其高达九倍昂贵;然而只有这种产品才是真正有用并且也是大多数开发人员所追求的目标。

我觉的大家可以简单理解为:一开始可能只需要几个程序员作为一家初创公司来开发程序代码,这个阶段中,团队的效率和完成度会远远高于大型公司。而随着程序从最初的原型转化为商业上的产品时,向下是要考虑兼容性,稳定性,以及测试,输出相应的文档,来供人使用,这个阶段就会在原有的程序的基础上增加3倍的工作量,而向右,需要成为一个完整的系统,为以后更大的发展做出努力,系统的迭代升级,以及整个架构的扩展,在原先的基础上也需要3倍的工作量。
这样->向下,->向右的发展,导致在最终形成编程系统产品的时候,总体的工作量和复杂度则会是原来的9倍,甚至是更多。

职业的乐趣

编程为什么有趣?作为回报,他的从业者期望得到什么样的快乐?

  1. 这种快乐是一种创建事物的纯粹快乐;
  2. 这种快乐是来自于开发对他人有用的东西;
  3. 快乐来自于整个过程体现出一股强大的魅力——将相互啮合的零部件组装在一起;
  4. 这种快乐是持续学习的快乐,它来自于这项工作的非重复性;
  5. 这种快乐还来自于在易于驾驭的介质上工作。

程序员,就像诗人一样,几乎仅仅工作在单纯的思考中。程序员凭空地运用自己的想象, 来建造自己的“城堡”。 很少有这样的介质——创造的方式如此得灵活, 如此得易于精炼和重建, 如此得容易实现概念上的设想。(不过我们将会看到,容易驾驭的特性也有它自己的问题)然而程序毕竟同诗歌不同,它是实实在在的东西;可以移动和运行,能独立产生可见的输出; 能打印结果, 绘制图形, 发出声音, 移动支架。 神话和传说中的魔术在我们的时代已变成了现实。 在键盘上键入正确的咒语, 屏幕会活动、 变幻, 显示出前所未有的或是已经存在的事物。

编程非常有趣,在于它不仅满足了我们内心深处进行创造的渴望,而且还愉悦了每个人内在的情感!

职业的苦恼

  1. 苦恼来自于追求完美;
  2. 苦恼来自由他人来设定目标,供给资源和提供信息;
  3. 概念性设计是有趣的,但寻找琐碎的bug却是一项重复性的活动;
  4. 当投入了大量辛苦的劳动,产品却在即将完成或者终于完成的时候,却已显得陈旧过时。

这, 就是编程。 一个许多人痛苦挣扎的焦油坑以及一种乐趣和苦恼共存的创造性活动。对于许多人而言, 其中的乐趣远大于苦恼。而本书的剩余部分将试图搭建一些桥梁, 为通过这样的焦油坑提供一些指导。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

艾格北峰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值