项目重构也许更好——《梦断代码》读后感

IBM于20世纪60年代为FAA搭建航空控制系统时,布瑞切尔就是开发团队中的一员,之后他又被派到项目的替换计划中。布瑞切尔在书中写道,AAS“可能是有组织工作史上最严重的崩溃事件"。FAA给新系统立了几条规矩:每个比特的代码都要求能被复用。整个系统必须是“分布式"的,即每个空管员的工作站都要和其他工作站实时同步信息。新系统必须在现有系统保持运行的情况下无缝切入。(“就像是给一辆正在收费公路上行驶的汽车换引擎。" )纸张打印或许还管用一在旧系统出问题的时候,空管员就得依靠这些东西一不过 FAA否定了这个方案:它太老套。如此等等。

 

在高峰时期,AAS项目每天要花掉政府1百万美金;同时有2000名IBM雇员为该项目工作,给每行代码写上100页文档。但到最后,布瑞切尔下了个结论,“这套软件不可能写得出来。”FAA的需求远远超出了人类和机器的工作能力。“若你想感受- :下," 他写道,“可以读读〈伊利亚特)。"(软件极限)本身就是一本由被诅咒的桌面程序战士撰写的<伊利亚特>,充满了能人们被更强大的力量所困的悲剧宿命论。在布瑞切尔的书中,项目成员们被挫败感而不是工作负担压垮,有人砸烂自己的汽车,有人发疯,有人自杀身亡。.一位项目经理吃纸上瘾,随着进度一再.延误,在开会时他往自己胃里塞的纸片越来越大。无人能够全身而退,包括该书作者在内。

 

有个我认识的工程师这样形容AAS:你住在一所还算舒适的房子里,发现冰箱可能有问题。冰块有时会融化,门也关不严实。修理工差不多个把月就得过来修1次。 你注意到,这冰箱既笨重又费电,你看上了希尔斯百货公司( Sears )里面陈列的那些新款冰箱。是时候了。你当即出发,先到几个州看地块,考虑建- -所新房。你请到贝聿铭和另外几位大建筑师,做了个初步设计。做这个花了点时间,所以你还得继续忍受那台旧冰箱,它发出烦人的噪音,在夜里叫人难以成眠。你看了几套方案,甚至建造了一、两个原型。时间流逝,你终于选定设计方案。开始建造前,举办了一场狂欢宴。 开工。建屋。庆祝继续进行,每块砖都令人激动。然后你改了主意。你其实是想要- -所铺着红木地板、有花园的日式房屋。你改造已建好的部分。搬开一些砖块, 铺上草皮。新房看起来真不错。某天晚上,你在新屋床上躺着,没听到冰箱发出的噪音。出问题了。安静令你无法入睡。花了太多钱!你压根就不想搬家!孩子们也不喜欢住到新房里。你女儿还说:“ 我恨它。”你只好改弦更张,不搬了。15年过去了,还花了几十亿美元,那老冰箱仍然运转。大抵如此。

 

如果程序员太过在意过往那些软件灾难留下的教训,就一行代码也写不下去。每次失败都如此相似,简直令人遍体生寒。你唯有交叉十指,'祈祷我们的老冰箱不出毛病。然而,除了那些经历过类似FAA案例的老手程序员之外,多数人在做新软件时,都乐于忘记过去、盲信未来,坚信这次会不同。

 

posted @ 2020-02-14 16:44  你的深渊  阅读(207)  评论(0编辑  收藏  举报