【译文】冷血软件

那是 2004 年,我正坐在大学里最大的一个阶梯教室里。我主修计算机科学,但我正在选修一门关于自然历史–植物和动物–的课程。

教授告诉我们,他从家里带来了一些东西,是他在冰箱里发现的。他把手伸到桌子后面,然后伸出手臂,让我们看他掌心里的东西:一只小彩龟。我们正在学习冷血动物的知识,原来彩龟幼体非常特别–它们是仅有的几种能在冷冻中存活下来的物种之一。

2004年的阶梯教室非常现代化:讲台上有一个高空摄像头,教授可以在上面写笔记,然后显示在大厅四周的屏幕上。但他并没有写笔记,而是把乌龟放在摄像头下面,开始讲课。

在接下来的一个小时里,我们看到这只小爬行动物随着教授的讲课慢慢活了起来。最初的动作几乎难以察觉。眼睑裂开,一条腿向前迈进。讲课结束时,乌龟已经在我们的屏幕上移动了大约一半的距离。

我永远不会忘记那堂课,因为在那堂课上,我真正理解了冷血动物的含义。你看,温血动物–比如人类或老鼠–的体温比较稳定,保持在一个相当狭窄的范围内。对于人类来说,大约是 37 摄氏度。高出或低出几度,我们就会有大麻烦。像彩龟这样的冷血动物可以根据周围的温度调整新陈代谢。当室外温度较高时,它们很活跃,而当环境(和它们的身体)温度较低时,它们的行动就会变得缓慢。它们中很少有人能像小彩龟那样在冰冻中存活下来。

我在软件项目中也看到了类似的两极分化。某些技术决策会导致项目成为 “温血动物”:当项目不断运动并产生热量时,一切都很好。但如果把热血沸腾的软件放进冷冻库,六个月后就会拉出一具尸体。

也许你的 CI 无法工作是因为你所依赖的服务之一被收购或资金耗尽了。你添加了一个新的依赖项,却发现自己需要升级编译器。你依赖的另一个软件包已经过时,无法使用最新版本的编译器。

有些项目则不同。你独自工作,有了灵感就做些改变,然后一年、两年、三年都不再碰它。你不能把这样的项目当作热血项目来运作。没有足够的活动来保持温度。
冷血项目就像小彩龟。你可以把它冷冻一年,然后从你离开的地方把它接回来。
冷血项目使用的是乏味的技术。构建和测试脚本不依赖于可能发生变化、中断或完全消失的外部服务。它使用的是有偿依赖。
为本博客提供动力的软件就是冷血项目。第一次提交是在将近十二年前–一个简单的小静态网站生成器,用来替换我安装的过时的 WordPress:

commit 68949229ad426c1e8795ee640808db9987ab30ab
Author: Patrick Dubroy <pdubroy@gmail.com>
Date:   Sun Jan 8 19:10:24 2012 +0100

    Add templates and site-building script.

它是用 Python(2,而不是 3)编写的。它依赖于四个第三方模块,这些模块都已提交到项目库中。一切都在本地运行,我通过 rsync 在 ssh 上部署结果。

我很高兴决定这样做。这些年来,我做了一些小的改进,但除此之外,它一直在运行,没有修改过。我完全相信,再过十二年,它还能继续工作。

🐢

本文文字及图片出自 Cold-blooded software

余下全文(1/3)
分享这篇文章:

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注