一家美国软件公司的成员正围坐在办公桌前,愁眉苦脸地对着笔记本电脑,数落着软件Chandler所遇到的问题。突然,一个高个子、身穿蓝色外套的人推门而入,竟然是2000年竞选美国总统的戈尔!
灰头土脸的程序员们看着神采奕奕的前任副总统,惊讶得一动不动,倒是一只偷偷溜进来的小狗欢快地摇着尾巴。这让应邀为程序员鼓劲儿的戈尔有点不知所措。他高声夸赞了一句“继续努力!你们正在改变世界”,随即逃跑似的离开了。
别看戈尔看似随口一说,却命中了程序员的理想靶心。20多年,乔布斯游说百事可乐首席执行官加入苹果公司用的也是这招儿:“你是愿意卖一辈子甜汽水呢,还是跟我一起改变世界?”
以0和1为基础的代码就像咒语一样迷得程序员神魂颠倒。抱着改变世界的伟大理想,每个学习编程的新手接触的第一个程序通常都是“Hello World”——输入一系列代码,召唤计算机,命令它打印出这两个词。
这个程序其实一点用也没有,却可以唤起程序员的英雄主义乐观精神——瞧,我能叫机器说话,将来我能让它做任何事情!那种感觉像是诗人研好了墨,提笔准备在空白的稿纸上写下第一行诗句,等着瞧吧,传世之作就要诞生了。
千万别告诉这位诗人,他每写完一行诗,就要花成倍的时间从里面挑错字。编码只占软件项目开发时间的1/6,剩下的一半时间,都花在测试和修正缺陷上面了。
就算你去了软件帝国,照样要经历这些。在一连串病毒事件后,微软公司从2003年开始停止了所有新的大产品开发,编程人员转而投入到修正安全漏洞的工作上。
漫漫代码路,绝望特别多,这还只是其中之一。美国工程师布瑞切尔曾经加入了为美国联邦航空管理局(简称FAA)搭建先进自动系统的开发团队。这个项目1981年启动,历时13年,耗资几十亿美元。最后得出的结论是:“这套软件没人写得出来。”
视代码为命的程序员们被击败了,打败他们的不是工作负担,而是对于软件极限的挫败感。天生乐观的程序员总是相信,世上会有人失败,但那个人不是我。
可惜,这次还真是你。开头提到的那群开发软件Chandler的24个程序员,花了三年研发软件,修正了4732个漏洞,依然无果。他们的故事被写进书里,叫做《梦断代码》。
没办法,并非人类厨艺不佳,而是现实胃口太好。从孩子的玩具到大人的汽车,从商业和银行到医疗和国防——人类对软件的依赖像坐上火箭一样以指数级增长,但做软件的技能却像裹着小脚的老太太一样缓慢挪动。
不幸总是相似的:一群激情燃烧的程序员挥舞着手臂冲向棘手的难题,发誓能够改变世界,后来,他们遇上了不靠谱的管理者,老是改主意的客户,不断变换的需求,以及最要命的,半成品里挑不完的漏洞。
最后,大大小小的问题把这些技术工作者推向死胡同。在他们背后,会计师和律师摇着头收拾残局,脸上表情似乎在说:“我就知道,你们每次都这样。”
在FAA的这场“可能是有组织工作史上最严重的崩溃事件”中,许多程序员崩溃了,有人砸烂自己的汽车,有人亲手了结自己的生命,一位项目经理靠吃纸来平复内心的挫败感。
其实早在1949年,计算机先驱莫瑞斯·威尔克斯拖着打孔纸,带上楼装载程序的时候就预料到了这种未来:“我强烈地意识到,生命中剩下的好日子,都要耗费在给自己的程序找错误上头了。”
没错,这就是事实,就像编程界经典教科书上所写的“软件难做”。 我有一位同学很发奋,当上了某网站的产品经理。每当有人给他报错,他就会面不改色地咬着牙冷冷甩出一句程序员口头禅:“这不是漏洞,而是特色。”
《梦断代码》
[美]斯科特·罗森堡著 韩磊译
电子工业出版社