软件开发如同越狱

如果说这世界上有一种东西太多了,那它就是广告。如果说这世界上还有另外一种东西太多了,那就是对软件开发的类比。尽管如此,今天我还是要编造一个。你知道软件开发像什么吗?它像越狱。

回想一下你最喜欢的越狱类型的电影,不论是《大逃亡》、《肖申克的救赎》,还是享誉海内外的电视剧《越狱》或者是《勇闯夺命岛(the Rock)》(不好意思,这不是越狱,而是关于潜入监狱的)。但这跟我们有什么关系?

“我们都是来自五湖四海,为了一个共同的革命目标走到一起来了。”

在一个越狱团队里,有一伙人是专门负责挖地道的,另一伙人是负责清除挖地道的痕迹的,还有一伙人是负责弄假身份证和假发的——一旦越狱成功就需要用到这些。在影片的前半部分,你毫无例外的能找到一幕场景来证实他们起初是多么的相互讨厌。但一旦达成了越狱的共识,他们立即变成了能为对方两肋插刀的兄弟。

在一个典型的开发软件的组织里,程序员,市场销售,业务经理,管理人员,以及投资者,这是一群不会有第二种理由能把他们聚到一起的人。它不次于任何世界上最奇异的家族组成。然而,这最终的目标——成为市场霸主,百万美元的收入,或者仅仅是为了取悦用户——这以足够让这群奇异组合的人在最高强压力的环境形势中共同度过一年半载。周末取消了,节假日忘了,你的孩子在众人面前指着你说“这个臭臭的家伙偶尔会到我家来换内衣,而且冲着我们大呼小叫”,这些全是为了软件。

一伙敌对势力百般阻挠越狱

在越狱电影里,总有一批狱警在防范犯人越狱。我们通常会看到的一幕是另外一伙人企图越狱结果失败了。我们多少会发现,这些狱警多少有些愚蠢。

相似的,你的对手也在坚持不断的试图阻止你从将要发布的伟大的软件中获取丰厚的回报。这对手可能是市场上的一家竞争公司,或是公司内的某一个部门。不管怎样,你的相当大的一部分精力被消耗在担忧防范这些敌对势力上。

不巧的是,敌对势力都不怎么聪明。

是否还记得,在所有的这些电影里,犯人是如何一次次的成功把挖隧道的泥土转移的监狱院子里,所以没有人知道他们在挖洞。还有他们如何晚上把用袜子做的假人放到床上,这样狱警就没发现他们的缺寝。如果这些狱警稍微聪明一点,尽职一点,他们就会发现这些猫腻。但这种情况永远都不会发生。

你的软件开发团队的敌对势力也跟此差不多。你很可能无时无刻的不在担心他们已经搞清楚了你们在开发什么——根据你网站上的一些描述,或广告宣传中泄漏出来的一些信息。哦,天哪,也许他们在我们的测试环境中已经注册了帐户!你会担心,他们一旦知道了你的产品,他们会在市场上打败你,偷走你的钱、声誉,以及伴随它们而来的锦绣前程。但你担心的这些事情可能永远都不会出现。

成年累月的苦干。

毫不奇怪的事实:从监狱下面挖一条隧道,穿过围墙,你需要做很多的工作。尤其是当你只有一把勺子的情况下。

同样的境遇,开发软件也是一个苦力活。无论你有多少开发经验、理论指导、开发工具,你最终难免少不了昏天黑地的敲打键盘。完全不是一种让人兴奋的运动;也许你宁愿用一把勺子去挖穿一堵墙,也不愿重新整理你代码里密码重设的逻辑。尽管如此,为了目标必须做这些,所以我们编呀编啊编。

紧接着是惊心动魄的一刻。

当犯人最终逃出监狱时会发生什么?最不想看到的事情全都出现:有人意识到他们的假身份证永远等不到了,有一个警察模样的人正站在他们集合点的前面,警察和警犬的声音从几百米外的地方传来。

软件的发布与此很相似。本以为是一个欢欣鼓舞的时刻,结果情况急转直下,生产环境宕机,谷歌不知什么原因拒绝收录你的网站,系统中的一个bug导致多收了用户10倍多的钱。

万岁,我们成功的越狱了,一切顺利!除非事情没按这样发生。

让人惊奇的是,在所有的老调重弹的越狱模式电影中,在影片的末尾,故事开始出现分歧。有些结局是高兴的,所有人都获得了自由。而另一些电影中,没有一个人逃脱。剩下的一些电影中两种情况混合到一起,一些人逃出去了,余下的人要么被抓住,要么被打死,要么被警犬咬住不放。故事的结局通常不会是过度沮丧的,因为还要留一些拍续集的情节线索。

软件开发也是这个套路。结局有高兴的,不高兴的,或喜忧参半的。世界就是这样,尽管我们做出了很大的努力,付出了很多牺牲,但不必一定能换来成功,所以,我们应该把重点放到软件开发自身的过程上。我们在其中获得了乐趣,我们相互关怀,相互学习。我们应该明白,虽然最终的成败与否带有一些靠天的成分,但我们在做优秀的工作、开发杰出的软件过程中获得的满足不会因此而减少。

如果世界正向我们预期的方向运转,那是再好不过。如果不是,至少我们的续集有了一个很好的基础。

[英文原文:Building Software Is like Escaping from Prison ]
分享这篇文章:

3 Responses to 软件开发如同越狱

  1. laiku says:

    这个比喻有些牵强

    • terry says:

      我觉得还行,软件开发如同越狱一样,经常发现有条路不通或者时间上来不及,这时候要么换方案,要么用临时方案~~

  2. Yonghang Jiang says:

    其实就是一群人解决一个问题。

发表评论

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

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据