重读《人月神话》(2)- 焦油坑、编程的乐趣和苦恼

焦油坑(The Tar Pit)

图片

作者用“吞噬了恐龙、剑齿虎等史前巨兽的焦油坑”这一生动比喻,形象地描绘了软件系统开发的复杂性。在整个的软件开发过程中,“编程系统产品”才是真正的目标,也是最具价值的产品形态。为了更清晰地阐述这一观点,作者区分了以下几个概念:

编程系统产品

图片

程序(Program)

由编码人员完成的编码产物,可以在所开发的系 统平台上运行。

编程产品(Programming Product)

编程产品是指一个独立的、可执行的程序,任何人都可以运行、测试、修复和扩展它。它可以跨多个操作系统平台运行。要将一个简单的程序转变为编程产品,需要付出更多努力——包括详尽的测试和完备的文档。根据经验数据,相同功能的编程产品的成本至少是已经过测试的程序的三倍。


编程系统(Programming System)

编程系统是多个能够相互协作的程序集合。它是指在一个已有的编程系统平台上开发新的功能构件。要使一个程序成为编程系统中的一个构件单元,不仅需要确保其接口一致,还必须遵守预定义的资源限制,并能与其他现有组件进行组合测试验证。相同功能的编程系统构件的成本至少是独立程序的三倍。如果系统包含大量组件,成本会进一步增加。

编程系统产品(Programming Systems Product)

编程系统产品是指一个完整的、功能齐全的软件解决方案。相对于单纯的“编程(Programming)”而言,其成本可能高达九倍。然而,只有这样的产品才真正具有实用价值,是大多数系统开发的目标。编程系统产品的开发不仅涉及编码,还包括全面的设计、严格的测试以及详尽的文档,确保最终产品既可靠又易于维护。


编程的乐趣和苦恼

这部分见仁见智,毕竟人类的悲喜并不相通。


编程为什么有趣?

创造的喜悦

就像孩子在沙滩上堆砌沙堡时那种单纯的快乐,编程同样给予我们创造新事物的机会。每当一行行代码跃然屏幕之上,逐渐汇聚成一款应用或游戏时,那份成就感难以言表。这也许是对上帝创造世界的一种微缩体验吧——在每一个独一无二的树叶或雪花中都能感受到这种喜悦。

共享的价值

编写程序并不仅仅是个人的消遣,更是一种能够惠及他人的行为。当我们开发出一款软件或工具,并看到它在他人手中发挥作用时,那种内心的满足感是无价的。这份喜悦源于内心深处那份希望自己的工作能够帮助到别人的愿望。

魔法般的魅力

编程还蕴含着一种类似魔法的魅力。当你将一个个看似无关紧要的小模块拼凑起来,见证它们如何巧妙地协同运作,达到预期的效果时,那份惊喜与激动丝毫不亚于观看一场精彩的魔术表演。

持续的学习

由于编程领域日新月异,这意味着总有学不完的知识等着我们去探索。无论是解决实际问题还是理论研究,每一次尝试都能让我们收获新的知识,这样的过程本身便充满了乐趣。

职业的苦恼

追求完美

计算机科学要求极高精确度,哪怕是最微小的错误也可能导致整个项目功亏一篑。因此,作为程序员,我们必须时刻保持警惕,不断追求完美。

依赖他人

在团队合作中,我们经常需要依赖同事的工作成果。然而,并不是每个人都会按照高标准来完成任务,这就导致后续环节可能会遇到各种意想不到的问题,需要耗费大量时间和精力去解决。

调试的艰辛

创意与灵感固然重要,但随之而来的往往是繁琐且耗时的调试过程。在这个阶段,我们需要反复试验、查找错误,直到找到症结所在。这一过程无疑是枯燥且令人沮丧的。


时代的淘汰

技术发展速度之快,使得很多项目还没等完工就已经落后于市场。看着自己投入心血的作品渐渐被淘汰,这对任何一位程序员来说都是不小的打击。

这就是编程——既有创造的乐趣,也有面对挑战时的困扰。然而,正是这些复杂的情感交织在一起,构成了这份职业独特的魅力所在。对于真正热爱它的人来说,那些瞬间的快乐足以抵消一切烦恼。而本书的剩余部分将试图搭建一些桥梁,为通过 这样的焦油坑提供一些指导。

☆公☆众☆号〖和码说〗☆公☆众☆号

图片

如果觉得不错,关注,点赞,转发安排起来,公众号标记五角星,可以第一时间收到更新通知哟!

转载需注明出处!

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值