想知道开发一个成功的软件有多难,不妨看一下一群天才在一个名为Chandler的项目中的炼狱之旅
迷失在编码中
哦,不要以为这只是一群软件工程师们的光荣和梦想——恰恰相反,它讲述了一个宏伟而破碎的梦:米切尔·卡普尔(Mitchell Kapor)——曾经名噪一时的Lotus公司的创始人、在1980年代凭Lotus1-2-3这一“杀手级应用”加速个人电脑在商业世界普及的软件大师——在2001年离开Lotus之后,成立了开源应用基金会(OSAF),开发号称革命性的下一代个人信息管理系统——Chandler。从来都容易乐观和兴奋的开源社区曾经把卡普尔和他的这个项目看作偶像,他们都深恶痛绝Outlook甚至Lotus Notes,而Chandler则成了他们的希望。
数年过后,Chandler留给人们的是什么呢?正如本书的副标题所言:“24个程序员、3年、4732个bug,以及对非凡软件的不懈追求”——关于“软件革命”的梦想在崎岖和尴尬中艰难地继续。
悲观的人们将这样解读这本书叙述的一切:一群天才程序员和开源干将,雄心勃勃,却在数年的时间里坚持每天都犯错误,焦头烂额,投入了大笔金钱(包括自己,也包括像美国国防部那样的倒霉客户),使一堆看起来颇有希望的项目半死不活。的确,作为一名软件开发的狂热爱好者,持续跟踪了Chandler项目组长达3年的本书作者斯科特·罗森伯格(Scott Rosenberg)试图搞清楚的是一个基本问题:为什么这些曾经写出过Netscape navigator和早期苹果Mac操作系统的家伙会迟迟拿不出一个公开发行的Chandler版本?除了技术本身,究竟是哪些因素使他们风光不再?
罗森伯格试图揭示这些天才们是如何掉入他们不经意间自己造成的“黑洞”中去的:Chandler是一个基于跨平台应用的系统,因此,它由Python(一种功能强大且通用的编程语言) 与 wxWidget(一种开发用户界面的工具包)写成,而即使是这里的天才们,也极少同时熟悉这两种语言(要知道,当年Netscape navigator和Mac OS是用今天看起来相当简单的C语言系列写成的)。于是就出现了这样的情况:当Python的工程师们发现wxWidget元件组的漏洞时,他们认为这需要4个小时即可解决——但他们必须等待wxWidget工程师解决问题——更糟糕的在于,这些分别掌握不同语言的自负的程序员们,光是为了确认这个bug究竟来自于哪一方,即花了数倍于4小时的时间,最终,这成了一个拖延了8个月之久的麻烦。
这个原本只关于技术的问题至少可被赋予两层更为深刻的解读:首先是“天才论”在技术革新面前的无力,他们没有人能解决一切问题;其次在于:一群精英程序员在一起如何实现出色的项目管理——现实是如此地令人沮丧。作者甚至总结出的“罗森伯格”法则是:“一个程序员往往比两个程序员干得更出色”。
于是不能不提出的疑问是:是否是这些天才程序员们的“梦想”,羁绊了他们日夜为之奋斗的“编码”?——因为他们的梦想太过瑰丽和雄伟,以致使他们更为顽固和自负,反而拉大了人与机器之间的鸿沟?正如本书中指出的这些程序员们的通病:“他们通常都会说:我自己重写一个程序比看别人的要快,但别人的东西可能是通过经年使用并被验证的,你或许可以写出类似的东西,但最后可能被潜在的bug淹死”。程序员的自尊心是一回事,而程序本身则是另一回事。
在体认到这种纠结之后,或许你会对该书不失激情澎湃而又细致入微的故事中获得更多领悟——至少,它有助于你了解这是一群怎样聪明、固执、敏感而勤奋的程序员们,以及如何进入他们的世界:尽管本书并没有刻画出任何一个在Chandler项目中血肉丰满的人物,也没有讲述他们在这个项目中的癫狂与沉迷,但它毕竟向我们透露了一些软件程序员们曾经的种种乖张:比如美国航空管理局(FAA)1981年上马的AAS(Advanced Automation System)项目的悲惨:项目高峰期1500名IBM程序员为FAA工作,每天花掉政府100万美元。巨大的压力给参与项目的程序员带来心理上的严重创伤。有人砸烂自己的汽车,有人疯掉,有人自杀,有个项目经理开始吃纸上瘾,项目拖后得越多,他在开会时嘴里塞的纸就越多……
由于Chandler被视为一个“失败的项目”,读到后面的章节,多少会感到窒息——但它毕竟还未结束,像人类学家在讲述一个迄今未被完全探索清晰的部落一样,故事总会有终点,但不是现在。可以肯定的是,人们应该对Windows vista这样更为庞大的软件开发计划的管理者抱有一些同情之心了。