下载本文的PDF版本 PDF

软件炼狱

软件架构师体验的但丁故事


Alex E. Bell,波音公司


序言

《软件炼狱》是一个与《神曲》第一部《地狱篇》平行的故事。《地狱篇》是但丁·阿利吉耶里在1300年代早期创作的文学杰作。这部文学杰作描述了各种罪人在他们的地狱般的来世中,因其在尘世存在期间犯下的暴行而面临的谴责和惩罚。《软件炼狱》也是类似的描述,它描述了一段旅程,其中“软件罪人”在他们永恒谴责的区域中,在他们的折磨中被遇到,并为他们的罪过付出代价。为了保留原作《地狱篇》的一些精神和古老的散文风格,我重复使用了一些从SparkNotes3摘取的但丁原作的翻译片段,并感谢能包含这些经典素材。

图1捕捉了软件炼狱的拓扑结构,并描述了您即将阅读的悲惨故事的背景。

旅程开始

在我们的软件项目进行到一半时,我发现自己身处一片黑暗的森林中,迷失了正确的道路。我无法很好地回忆起我是如何进入那里的,因为当我放弃正确的道路时,我充满了不满。然而,我曾希望这段旅程能让我的灵魂重回正轨,我现在将讲述我所看到的事情。

从森林的黑暗深处,我抬头望去,看到一座山丘,它的山肩被阳光笼罩,我被它的山顶所吸引,希望能重新认识正确的道路。当我攀登越来越高的危险山脊和湍急的水道时,我遇到了三只野兽挡住了我的去路。这些野兽是一群讨厌而咆哮的家伙,不仅以折磨像我这样的陌生人而闻名,而且还彼此不和。满足成本、进度和质量这三只野兽的一致要求将是一项艰巨的任务,这是通行的条件。鉴于我任性的心态,我一次只能成功平息其中两只野兽的愤怒,别无选择,只能从山上下来,思考一条重新认识正确道路的替代路线。

当我从我开始的低处退回时,在我眼前出现了一个人,她似乎通过长期的学习成为了一位高贵的女士。“可怜可怜我,我迷路了!”我喊道。“无论你是谁,是阴影,还是真正的女人?”她回答说:“我出生于奥古斯塔·艾达·金,父母是拜伦勋爵安妮·伊莎贝拉·拜伦,居住在英格兰,成为了奥古斯塔·艾达·金,洛夫莱斯伯爵夫人。”我回答说:“那么你是艾达·洛夫莱斯,是第一个计算机程序的源泉吗?”她证实说:“的确是我。”

The Software Inferno; UML Representation of the Software Inferno

我向洛夫莱斯伯爵夫人讲述了我迷失正途的悲惨故事,我迄今为止重新发现它的徒劳尝试,以及我之前在攀登山路时遇到的可怕野兽。她对我说:“你必须采取另一条路线。”令我非常欣慰的是,艾达夫人,洛夫莱斯伯爵夫人,提出担任我的向导,寻找正确的道路,但警告说,前方的旅程将涉及穿越软件炼狱,这是一个可怕的地方,是对那些在软件开发领域犯下罪行的人的永恒惩罚。

伯爵夫人示意我跟随,我紧随其后。

前地狱

“进入者,放弃一切希望!”软件炼狱边缘的大门上写着铭文。这里充满了叹息、哀号和深沉的哭泣声,在星光黯淡的空气中回荡。奇怪的语言,可怕的哭喊声,悲伤的话语,愤怒的语调,高亢而沙哑的声音,这就是软件炼狱不受欢迎的环境。

当我们接近炼狱边缘时,伯爵夫人说,我们听到的悲惨声音是软件开发人员的声音,他们被谴责到前地狱。这些开发人员是可怜的人,他们无法决定是否应该永远以良知和道德劳动,利用他们的行业技能为善,还是利用这些技能来促进邪恶、盗窃和不正当的利己主义。这些是黑客、流氓,他们要么通过清醒的选择不尊重正确的道路,要么因优柔寡断而未能明确赞同它。天堂和地狱都拒绝他们进入,所以他们将永远在这里打滚,受到小虫子的折磨,并在键盘上打字,但他们的笔触却毫无用处,对任何人都没有意义。

伯爵夫人示意我跟随她到附近的一条河边,这条河将我们与软件炼狱的第一层隔开。一个白发苍苍的老人乘着小船向我们驶来,他喊道:“你们这些邪恶的灵魂有祸了!我来摆渡你们到彼岸,进入永恒的折磨,进入酷热和痛苦,进入软件炼狱!”

伯爵夫人走进了船里,我紧随其后。

第一歌 - 边缘地狱

伯爵夫人和我从摆渡人的船上下来,发现自己身处软件炼狱外圈的边缘,也称为边缘地狱。伯爵夫人承认她自己是边缘地狱的居民,只是被授予短暂的喘息机会来担任我的护送。她解释说:“并非出于我们自己的过错,我们这些被谴责到边缘地狱的人,仅仅是因为出生在历史的早期,太年轻而没有意识到或正确地尊敬那些塑造了你们今天所知的软件工程环境的远见卓识者。”

在边缘地狱与伯爵夫人会合的名人中,我认出了乔治·布尔(布尔代数的形式化者)、戈特洛布·弗雷格一阶谓词演算的开发者)和格蕾丝·穆雷·霍珀(Cobol 发明者)。他们遭受了与伯爵夫人相同的命运:出生得太早,以至于没有对软件工程半神,如艾伦·图灵、格雷迪·布奇、詹姆斯·朗博、伊瓦尔·雅各布森、艾伦·凯、布兰·塞利克、詹姆斯·高斯林以及其他为现代软件工程奠定基础的人们表示应有的敬意。

据推测,作为对过着道德高尚的生活的回报,降临到边缘地狱的无可指责的灵魂身上唯一的仁慈考虑是,他们没有遭受像那些被谴责到软件炼狱更深层的圈子里的不幸者那样的痛苦。

伯爵夫人继续带路,我紧随其后。

第二歌 - 淫欲

当伯爵夫人和我接近炼狱的第二个圈子时,我们确实渴望刚刚离开的圈子的相对舒适,因为从前方的圈子散发出的淹没和刺眼的光线困扰着我们的眼睛。它最初看起来像是前方的光芒来自单一来源,但我们不断增长的接近度表明,它实际上是由许多单独的光束组成的集合,每束光束都专门聚焦在该圈子众多居民中的一个人身上。

伯爵夫人解释说,这些可怜的灵魂所犯的罪是淫欲之罪。这些受折磨的灵魂所犯的罪不是肉欲,而是对权力、名誉、财富和金钱的渴望,以背叛理性、承诺和责任为代价。这些可怜的家伙贪婪地只关注他们自私的欲望,而不顾对最亲近的人的影响,不顾他们的个人正直,也没有良知。这里被谴责的人包括那些无视或违反婚誓的人,拒绝他们的孩子成为参与的父母的人,或未能孝敬年迈的父母的人。他们的盲目追求是以下一笔交易、下一次晋升、下一次奖金或任何其他可以积累名声、权力和地位的方式的名义进行的。

正是在这里,在炼狱第二个圈子的厄运中,这些痴迷的灵魂将受到永恒的谴责,并受到恰当的惩罚。一道刺眼的光束集中在他们的一举一动上,给予他们一心一意的关注,这是他们在尘世的日子里所寻求的。他们的光照如此强烈,以至于折磨这些灵魂的光柱阻止他们入睡,并压倒了与他们同在这个圈子中的一切事物的自然红晕。永远地,这些不幸的可怜的人都被谴责为躲避追逐他们一举一动的光束而寻求庇护。

伯爵夫人从光明中带路,我紧随其后。

第三歌 - 暴食

当上一个圈子的极端亮度减弱时,伯爵夫人和我慢慢地恢复了眼睛的舒适和使用。巧合的是,对我们另一种感官的新一轮攻击开始了,以可怕的噪音的形式,这些噪音来自就在前方的炼狱第三个圈子。当我们进入这个圈子时,一个奇怪的景象等待着我们:它的居民拥有猪的身体,但他们似乎保留了过去尘世的头颅。最令人厌恶的口水和粗俗的声音从他们的嘴里发出,他们在垃圾堆之间打滚,吃掉所有眼前的食物,试图以没有任何优雅的方式来满足他们无情的食欲。

伯爵夫人解释说,注定要来到这里的灵魂,在他们过去的生活中犯下了浪费、过度和不适当的消费罪。他们的暴食主要是由巨额财富所激发的,这些财富是由于首次公开募股、收购和飙升的股价而突然降临到他们身上的。在新获得的财富的推动下,他们狼吞虎咽地吃着最精美的食物,过度饮酒,依赖违禁品,并心满意足地看着自己的肚子越来越大,以此作为他们成功的标志。他们获得的财富剥夺了他们的节制、自制力以及对世界上那些不知道下一顿饭从哪里来的人的任何记忆。

因此,暴食者将永远为他们尘世生活的放纵赎罪:吃着污秽、腐烂和滋生害虫的食物残渣,这些残渣连野兽都不适合吃,更不用说是人了。

伯爵夫人带路离开,我紧随其后。

第四歌 - 贪婪

从即将到来的炼狱第四个圈子传来的有节奏的、金属的、叮当响的声音与我的耳朵以前听到的任何声音都不同。当我们接近时,喧闹声越来越大,很快我们就明白了它的来源:便士。便士从天空中稳步落下,永无止境,经常击中那些被谴责到第四个圈子的可怜人的头部,然后叮当作响地落在地上,击中之前掉落的其他便士。

艾达伯爵夫人解释说,被谴责到炼狱第四个圈子的可怜人在他们尘世的日子里表现出习惯性的对财富和物质的贪婪模式。这种贪婪的受害者包括程序员、设计师、分析师、管理员、测试人员和架构师,他们的财富是在他们的背上获得的,但对于他们的辛勤工作、忠诚和奉献精神,却没有丝毫的感谢回报。伯爵夫人继续描述说,这些贪婪的灵魂不仅未能公正地奖励他们的恩人,而且甚至没有将最微不足道的面包屑回报给社区、慈善机构或教育机构。

软件炼狱第四个圈子的悲惨居民没有庇护所,并且永远处于倾泻而下的便士的洪流之下,打断了任何睡眠或休息的尝试,为他们提供了充足的时间来反思他们过去的贪婪。

伯爵夫人示意我跟随,我紧随其后。

第五歌 - 愤怒

仍然嗡嗡作响的耳朵很庆幸免于坠落便士的喧嚣。但是,从逼近的第五个圈子散发出的红色光芒和热量对于其他感官的潜在不适来说并非好兆头。随着伯爵夫人和我接近,热量变得越来越难以忍受,其来源也显露出来:无数堆纸质垃圾在燃烧,火焰高高地冲向天空。居住在这片干旱荒原的可怜灵魂渴望解渴,他们似乎一心想要通过将水桶投入散布在地形中的许多井中来缓解干渴,在燃烧的堆中,希望能够舀到其中可能含有的任何凉水。

伯爵夫人解释说,被谴责到第五个圈子的干渴的可怜人是愤怒的人,他们从内部核心毒害了他们的软件组织。他们无休止的尖刻批评、专横跋扈的欺凌、无休止的消极情绪和尖酸刻薄的态度破坏了工作场所所有和谐与协作的前景,只为周围的人们制造了冲突和痛苦。这些有毒的灵魂不仅拒绝运用他们自称的智慧来代替他们谴责的领导者行事,而且他们还破坏了任何试图承担这些领导角色的人的努力。

当我更仔细地观察时,愤怒的人希望用凉水来解渴,但他们却吐出了他们用水桶取回的水,因为它被污染了,就像他们过去污染的工作场所一样。

伯爵夫人继续带路,我紧随其后。

第六歌 - 异端

前一个圈子的辐射热很快让位于金属的声音,我认为是脚镣,在不规则的运动中叮当作响。当我们接近炼狱的第六个圈子时,这些声音的来源变得更加清晰。它们的来源是许多九人一组的人群,他们彼此拴在一起,每个人都一心想要按照自己选择的方向和步伐前进。

伯爵夫人解释说,这些混乱旅行的灵魂与根深蒂固的软件工程信仰和定律严重不符,这些信仰和定律是由该领域的专家开发的。他们对普遍接受的真理的无耻蔑视导致了决策,这些决策对他们负责的软件项目造成了巨大损害。有些人挑战了弗雷德·布鲁克斯的神圣忠告1,徒劳地试图通过增加资质严重不足的新人来拯救已经延误的项目,以摆脱他们的失败。另一些人则通过无视四人帮2圣化的软件设计模式来炫耀他们的嘲笑,而是选择他们自己不优雅的方式来解决那些解决方案已经得到证明、众所周知且历史悠久的

问题。被谴责到这个圈子的可怜人将永远重温他们因其异端行为而给他人造成的折磨。作为这些被束缚群体中的成员,他们将永远被提醒,即使是最简单的意志在他们的人数中也很难执行,九个人不可能比一个人快九倍到达他们想要的目的地。

伯爵夫人继续前进,我紧随其后。

第七歌 - 暴力

当我们接近炼狱的下一个圈子时,脚镣的叮当声让位于痛苦的折磨哭喊声,这些哭喊声会突然而有力地开始,然后逐渐消退为绝望和沮丧的呻吟声。一遍又一遍,令我非常恐惧的是,我们的耳朵听到了这种痛苦循环的重复。我确信我的眼睛很快就会看到一个刑讯室,里面挤满了可怜的灵魂,他们正在遭受可怕的怪物的折磨和痛苦,但我什么也没观察到。相反,我看到许多人躺在地上,他们要么睡着了,要么在痛苦中扭动,口吐白沫,皮肤变色,或者有其他可怕瘟疫的症状。

伯爵夫人解释说,这些呻吟的灾难是被谴责到炼狱第七个圈子的人,因为他们对无辜和毫无戒备的人犯下了软件暴力行为。在我们眼前的是网络钓鱼者、恶意软件制造者和网络罪犯,他们的敌对行为对网络同胞的财富、隐私和普遍福利造成了损害。有些人甚至只是为了消遣,作为爱好,仅仅是为了排遣他们的烦躁不安,而给毫无戒备和不应受到伤害的人造成了巨大的冲突。

我更仔细地观察,现在明白了他们绝望的原因。当这些可怜的人睡着时,变得毫无防备和毫无戒心,小的飞虫从天空中出现,落在他们的皮肤上,附着在他们身上,并将毒素注入他们体内,以便在他们醒来时施加难以言喻的痛苦和折磨。有些人试图避免睡眠,希望避免带来病毒和疾病的蠕虫,但这都是徒劳的。对于这些可怜的人来说,舒适和庇护所是永远遥不可及的,这是对他们罪行的报应。

伯爵夫人继续大步向前走,我紧随其后。

第八歌 - 欺诈

当我们接近炼狱的第八个圈子时,伯爵夫人和我被一种压倒性的恶臭所包围,这种恶臭随着迈出的每一步而变得更加污秽。这里的可怜人犯下了哪些罪行,才值得这样的清算?伯爵夫人解释说:“被谴责到这里的灵魂是欺诈者、说谎者和欺骗者:那些在过去的生活中纯粹为了自己的利益而向他人伪装技术专长、知识和相关性的人。”

在我们前方居住着自称的UML、XML、敏捷、MDA、面向对象等技术的倡导者、十字军和传道者。这些欺诈和欺骗者被谴责到这里,是因为他们在他们参与的软件项目中误导了技术的采用或使用策略。这些可怜的人为了受折磨者的动机,肆意妄为、毫无歉意地掠夺天真和绝望的人们,虚假地使他们相信他们的宠物技术将给他们带来解脱利己主义。

在远处,我发现了一大堆液化的纸浆,显然是污染我们鼻腔的恶臭的来源。成千上万的可怜灵魂在这片沼泽中挣扎,每个人都在努力保持漂浮在沸腾、冒泡和腐烂的炖汤表面之上。一条从天而降的物质流正在滋养这片沼泽,似乎是源源不断的。伯爵夫人解释说,滋养这些可怜人挣扎的纸浆污水中的物质包括不需要的 UML 图表、无法实现的进度表、无关的培训材料、华丽的 PowerPoint 图表以及其他产品,这些产品是受到谴责的人在他们过去的生活中造成的。对于欺诈和欺骗者来说,永远浸泡在他们自己创造的恶臭废物中是一种恰当的方式。

伯爵夫人继续带路,我紧随其后。

第九歌 - 叛逆

软件炼狱的最内层圈子就在前方,位于一座巨大的物质和颜色的山峰之上,其形状是我以前从未见过的。伯爵夫人和我越爬越高,一种气味扑鼻而来,我的鼻孔知道这种气味不可能比我们在下面第八个圈子里留下的腐烂炖汤更污秽。当我们再也爬不动时,在我们面前有无数的可怜人在劳动,他们将一铲铲山体的物质倾倒到远低于第八个圈子的灵魂身上,为他们在其中挣扎的有害炖汤提供了来源。伯爵夫人对我说:“被谴责到第九个圈子的灵魂犯有赞助和根据第八个圈子里炖煮的欺诈可怜人给出的错误指导行事的罪行,这对他们负责的项目产生了巨大影响,他们没有提出质疑,并且违背了更明智的建议。”

到目前为止,在旅程中咬紧牙关是一件非常困难的事情,但我再也无法忍受了。经过伯爵夫人的同意,我向最近的一个可怜人喊道,他铲子里装满了污秽。“先生,你犯了什么叛逆行为才被谴责到这个可怕的地方?”他回答说:“我被诬告犯有叛逆罪,但罪行仅仅是被欺诈者欺骗。”我回答说:“当你为了你自己的荣耀而依赖欺诈者承诺的果实和战利品时,不惜冒着风险而拒绝你最明智的贤者的建议,这对你的指控造成了损害,这难道不是叛逆吗?”

我向另一个在听力范围内的可怜灵魂喊道:“先生,你犯了什么叛逆行为才被永远谴责到这样一个被遗弃的地方?”他回答说:“我也是被诬告的;我的罪行只是未能对抗愤怒。”我回答说:“当你强迫你的人民饮用有毒的水井并忍受其影响,而你却心满意足地喝着你的私人水井里的淡水时,这难道不是叛逆吗?”

命运使然,叛逆者不仅被迫在他们批准创造的产品的恶臭中受苦,而且他们的背部也永远在他们的负担下劳累。

伯爵夫人从软件炼狱中带路,我紧随其后。

正确的道路

至此,软件炼狱中邪恶的目录、其中被谴责的人以及降临到他们身上的告诫已全部完成。在我的旅程中,我观察到了许多痛苦、恐怖和绝望,但现在我因此而变得更加明智,并且确信这次旅程提供了必要的启迪,使我的脚步重回正轨。

我的旅程提醒我,同时安抚成本、成本、进度和质量这三只野兽,当与那些犯下软件炼狱中被谴责的罪行的人一起工作时,甚至更具挑战性。事实上,我现在相信,我在旅程早期未能确保安全通过这些喜怒无常的野兽,是对我没有更努力地帮助过去的工程项目摆脱这些罪恶和罪人的惩罚。

积极主动的领导、基于价值的行动和平衡的判断是驯服这三只野兽所必需的。不能让愤怒的人毒害工作场所,不能让欺诈者破坏共同利益,也不能让叛逆者用错误的指南针领路。在没有避免的、破坏性的干扰的情况下,开发高质量的软件,按时并在预算内完成已经足够困难了。

随着我的旅程完成,我现在必须赶快回到我的尘世生活。我必须从最高的山峰上喊出伯爵夫人向我展示的所有正确的道路。领导者必须听取贤者的建议,创造和谐,并积极消除工作场所的祸害。那些自我陶醉的人必须清点他们的生活并重新调整他们的优先事项。成功人士必须记住那些帮助他们成功的人,并分享果实。

由于伯爵夫人向我展示了什么是好的,我将发出更多的呼喊。但我遗憾的是,我没有任何特殊的力量让聋子听见,让顽固的人动摇,让愤怒的人软化,或启发傻瓜,因为软件炼狱正在耐心地等待着像这样的灵魂。

参考文献

1. Brooks, Jr., F. P. 1975. 《人月神话》。马萨诸塞州雷丁:Addison-Wesley。

2. Gamma, E., Helm, R., Johnson, R., 和 Vlissides, J. 1995. 《设计模式》。马萨诸塞州雷丁:Addison Wesley。

3. SparkNotes 编辑。2002. SparkNote on 《地狱篇》。SparkNotes LLC;http://www.sparknotes.com/poetry/inferno/

喜欢它,讨厌它?请告诉我们 [email protected]

Alex Bell 是波音公司的软件架构师。他曾为 撰写过几篇文章,包括“死于 UML 热”(2004 年 3 月)、“UML 热:诊断和恢复”(2005 年 3 月)、“银弹齐射中的软件开发”(2006 年 6 月)、“死于 SOA”(2007 年 2 月)和“地面控制呼叫架构师汤姆...”(2007 年 9 月)。他也是《死于敏捷热》(2012 年 9 月)的作者。 http://www.infoq.com/articles/death-by-agile-fever)

© 2013 1542-7730/13/1100 $10.00

acmqueue

最初发表于 Queue vol. 11, no. 11
数字图书馆 中评论本文





更多相关文章

Catherine Hayes, David Malone - 质疑评估非加密哈希函数的标准
尽管加密和非加密哈希函数无处不在,但在它们的设计方式上似乎存在差距。加密哈希存在许多由各种安全要求驱动的标准,但在非加密方面,存在一定程度的民间传说,尽管哈希函数历史悠久,但尚未得到充分探索。虽然针对现实世界数据集的均匀分布非常有意义,但当面对具有特定模式的数据集时,这可能是一个挑战。


Nicole Forsgren, Eirini Kalliamvakou, Abi Noda, Michaela Greiler, Brian Houck, Margaret-Anne Storey - DevEx 实践
DevEx(开发者体验)在许多软件组织中越来越受到关注,因为领导者寻求在财政紧缩和人工智能等转型技术的背景下优化软件交付。直观地看,技术领导者普遍接受良好的开发者体验能够实现更有效的软件交付和开发者幸福感。然而,在许多组织中,旨在改善 DevEx 的拟议举措和投资难以获得支持,因为业务利益相关者质疑改进的价值主张。


João Varajão, António Trigo, Miguel Almeida - 低代码开发生产力
本文旨在通过展示使用基于代码、低代码和极端低代码技术进行的实验室实验结果来提供关于该主题的新见解,以研究生产力方面的差异。低代码技术显然显示出更高的生产力水平,为低代码在短期/中期内主导软件开发主流提供了强有力的论据。本文报告了程序和协议、结果、局限性和未来研究的机会。


Ivar Jacobson, Alistair Cockburn - 用例至关重要
虽然软件行业是一个快节奏且令人兴奋的世界,其中不断开发新的工具、技术和技巧来为商业和社会服务,但它也很健忘。在其快速前进的匆忙中,它容易受到时尚的摆布,并且可能会忘记或忽略针对其面临的一些永恒问题的成熟解决方案。用例于 1986 年首次引入,后来被普及,是这些成熟的解决方案之一。





© 保留所有权利。

© . All rights reserved.