6

【译文】冷血软件

 8 months ago
source link: https://www.techug.com/post/cold-blooded-software/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

【译文】冷血软件

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

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

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

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

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

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

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

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

commit 68949229ad426c1e8795ee640808db9987ab30ab
Author: Patrick Dubroy <[email protected]>
Date:   Sun Jan 8 19:10:24 2012 +0100

    Add templates and site-building script.

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

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

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK