查看原文
其他

全国航班停飞!让老牌航空公司损失 50 亿的,是一座堆积 30 年的“屎山”代码

The following article is from 扩展迷EXTFANS Author 牛大叔

据新华社报道,美国联邦航空局11日声称,由于空中任务通知系统出现故障,暂停所有国内航班起飞。

据央视新闻客户端,当地时间1月11日8时50分,美国联邦航空管理局称,要求所有航空公司暂停执飞美国国内出发航班的命令已经取消。
截止目前,造成航空系统故障的原因仍在进一步调查中。

停飞、延误、巨量旅客滞留……最近一段时间以来,美国的航空系统一直都没有消停过。
而身处动荡中的美国航空业,美国西南航空则是最近“受伤”最严重的一家航空公司。
1月7日,美国西南航空发布了一份报告,报告内容显示,预计去年4季度总亏损接近10亿美元。
之所以西南航空在一个季度出现了如此巨额亏损,在于西南航空老旧过时的机组排班平台的IT故障,让西南航空陷入到了史上罕有的大瘫痪之中。
光在整个圣诞节期间,西南航空处于持续崩溃状态,每天近80%的航班取消,就这还不包括晚点。


美国各地机场成堆的行李堆积如山,乘客排队长度极为夸张,在天寒地冻的航站楼外,人们一等就是大半天。一眼望去,全是准备乘坐西南航空航班的乘客们。
因为糟糕的调度能力,美国西南航空最近遭到了全美的口诛笔伐,美国交通部已经介入,而焦头烂额的西南航空则只好承诺赔偿“合理”费用。
在最近西南航空发布的报告中,西南航空也承认“西南航空调度失误,导致公司取消了连续十日上万个航班。由于航班被取消,且没有其他预定选择,成千上万的乘客和机组人员被困在美国各地的机场”。


有西南航空的工作人员在网上透露,西南航空一直使用一套极端古老的后台系统,而这套老古董,必须得为此次航空大崩溃负全部的责任。
那这套“老古董”有多古老呢?据工作人员透露,西南航空的后台系统,从上世纪90年代就基本没有变过,现在服务器里跑的还有很多30年前的那些代码。
这些已过“而立之年”的程序代码,三十年来一直兢兢业业的跑在西南航空的后台。西南航空一直坚守的“预排期+手动记账”系统,在这次大崩溃中彻底陷入了停摆。

不是这些代码足够可靠,才让这个后台系统存在了30年,而是30年的的祖传代码像山一样压向“接盘程序员”的时候,任谁都会望洋兴叹。
这些年来眼看着这座具有30年历史的屎山正在摇摇欲坠,排班故障层出不穷,但是西南航空就是没有下定要重写后台、优化系统的决心。
终于这座拥有悠久历史的屎山代码在上个月轰然倒下,留下美国几万无家可归的乘客同时,也给西南航空砸出了一个折合50亿人民币亏损的大坑。


其实,几乎所有的科技公司都有各种历史悠久的“祖传代码”,越是规模越大、历史越长的公司,“屎山”代码的问题也就越严重。
比如,“屎山”这个典故,就是出自一位亚马逊工程师之口。对于“硅谷大厂”亚马逊的代码,这位工程师如此描述道:
“一座很大的屎山,一座你见过的最大的屎山,每次你想修正一个Bug,都得爬到屎山的正中央去。”


几乎所有互联网大厂的程序员都会面临这样的窘境:
删除代码重构,工作量太大,一时半会儿根本完不成;
不删代码,看不懂前辈程序员们的源码到底是什么意思;
清理Bug,发现原来好好跑着的功能突然不可用了;
不清理Bug,那这些Bug会成为不定时的炸弹,之后100%会引发严重的问题;
维护代码,只能用新Bug掩盖旧有Bug;
不维护代码,随着技术升级,旧代码也会一点一点变成Bug。
最终只能补丁摞补丁,保证不出严重技术事故的同时,让屎山越来越大。
至于这座山啥时候坍塌,这就是说不好的事情了,反正到时候“人跟代码有一个能跑就行了”。
屎山不拒细壤,方能就其高。屎山就这样一天天长大,终于令最后接手的程序员感叹:高山仰止,景行行止。


每一次代码调试都是前往屎山的道路,因为条条大路通屎山。
即使有人冒着巨大的风险,辛辛苦苦地重构了所有代码,用不了太久,重构后的代码又会变为:屎山2.0
除了前面说到的亚马逊,同为全球一线大厂的微软、谷歌、oracle这样的大公司,他们的产品背后同样是一座座屎山。
据说oracle每改一个功能,全公司的服务器要全速测试几个月。
至于微软,从win8到win10再到win11,哪一个版本都是bug重重,而为了减少层出不穷的bug,新鲜靓丽的新版本界面背后,总有一个远古界面的控制面板。


至于游戏公司,历史上最著名的屎山来自于《GTA5》联机版本。


在各个论坛中,无数玩家追着游戏开发商R星公司疯狂吐槽:为什么都已经7年了,GTA5联机版加载还是这么慢?!
兴冲冲地打开游戏,结果发现游戏动辄要加载十几分钟,让任何一个玩家都难以淡定。其实这个史诗级的加载速度背后有一个史诗级的屎山:
游戏中有一个循环了19.8亿次的if判断语句。
国内也有很多程序员在论坛分享他们遇到过的各种“祖传”代码,有人说自己维护的代码写于20世纪,
“最早的部分可能写于 1980 年代贝尔实验室。第一批维护升级做需求的人早就退休了,第二批也退休了,每一行代码动起来都胆战心惊。”
而在visa公司工作过的程序员就表示,visa公司现在还在跑着部分1965年的代码,相对于这些半个多世纪前的代码,那些10年20年前的代码,简直弱爆了。
如今,对于“屎山”代码的处理方法,走入到了一个死胡同:
一方面吃过重构代码苦头的程序员们深切地认识到了:“代码能运行就不要尝试去改,哪怕是遇到屎山一样的代码”;另一方面,巍峨的屎山代码终究还是会有坍塌的一天。


如今,美国西南航空的这次重大调度事故用近50亿元损失的代价提醒着各大公司:
面对自己层出不穷的后台系统故障,像鸵鸟一样,把头埋进沙子里,并不会解决任何问题,出来混,“屎山”代码的技术债,终究还是要还的。

- EOF -


推荐阅读  点击标题可跳转

0、极客专属:几十款程序员秒懂的卫衣

1、大厂都病了!

2、这玩意儿能逆向分析代码,我直接麻了!

3、江泽民「数学往事」:这道五点共圆题,差点难倒丘成桐


觉得本文有帮助?请分享给更多人

推荐关注「算法爱好者」,修炼编程内功

点赞和在看就是最大的支持❤️

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存