想知道開發(fā)一個成功的軟件有多難,不妨看一下一群天才在一個名為Chandler的項目中的煉獄之旅。
哦,不要以為這只是一群軟件工程師們的光榮和夢想——恰恰相反,它講述了一個宏偉而破碎的夢:米切爾-卡普爾(MitchellKapor)——曾經(jīng)名噪一時的Lotus公司的創(chuàng)始人、在1980年代憑Lotusl-2-3這一“殺手級應用”加速個人電腦在商業(yè)世界普及的軟件大師——在2001年離開Lotus之后,成立了開源應用基金會(OSAF),開發(fā)號稱革命性的下一代個人信息管理系統(tǒng)——Chandler。從來都容易樂觀和興奮的開源社區(qū)曾經(jīng)把卡普爾和他的這個項目看作偶像,他們都深惡痛絕Outlook甚至Lotus Notes,而Chandler則成了他們的希望。
數(shù)年過后,Chandler留給人們的是什么呢?正如本書的副標題所言:“24個程序員、3年、4732個bug,以及對非凡軟件的不懈追求”——關于“軟件革命”的夢想在崎嶇和尷尬中艱難地繼續(xù)。
悲觀的人們將這樣解讀這本書敘述的一切:一群天才程序員和開源干將,雄心勃勃,卻在數(shù)年的時間里堅持每天都犯錯誤,焦頭爛額,投入了大筆金錢(包括自己,也包括像美國國防部那樣的倒霉客戶),使一堆看起來頗有希望的項目半死不活。的確,作為一名軟件開發(fā)的狂熱愛好者,持續(xù)跟蹤了Chandler項目組長達3年的本書作者斯科特-羅森伯格(ScottRosenberg)試圖搞清楚的是一個基本問題:為什么這些曾經(jīng)寫出過Netscape navigator和早期蘋果Mac操作系統(tǒng)的家伙會遲遲拿不出一個公開發(fā)行的Chandler版本?除了技術本身,究竟是哪些因素使他們風光不再?
羅森伯格試圖揭示這些天才們是如何掉入他們不經(jīng)意間自己造成的“黑洞”中去的:Chandler是一個基于跨平臺應用的系統(tǒng),因此,它由Python(一種功能強大且通用的編程語言)與wxWldget(一種開發(fā)用戶界面的工具包)寫成,而即使是這里的天才們,也極少同時熟悉這兩種語言(要知道,當年Netscape navigator和Mac OS是用今天看起來相當簡單的C語言系列寫成的)。于是就出現(xiàn)了這樣的情況:當Python的工程師們發(fā)現(xiàn)wxWidget元件組的漏洞時,他們認為這需要4個小時即可解決——但他們必須等待wxWidget工程師解決問題——更糟糕的在于,這些分別掌握不同語言的自負的程序員們,光是為了確認這個bug究竟來自于哪一方,即花了數(shù)倍于4小時的時間,最終,這成了一個拖延了8個月之久的麻煩。
這個原本只關于技術的問題至少可被賦予兩層更為深刻的解讀:首先是“天才論”在技術革新面前的無力,他們沒有人能解決一切問題;其次在于:一群精英程序員在一起如何實現(xiàn)出色的項目管理——現(xiàn)實是如此地令人沮喪。作者甚至總結出的“羅森伯格”法則是:“一個程序員往往比兩個程序員干得更出色”。
于是不能不提出的疑問是:是否是這些天才程序員們的“夢想”,羈絆了他們日夜為之奮斗的“編碼”?——因為他們的夢想太過瑰麗和雄偉,以致使他們更為頑固和自負,反而拉大了人與機器之間的鴻溝?正如本書中指出的這些程序員們的通?。骸八麄兺ǔ6紩f:我自己重寫一個程序比看別人的要快,但別人的東西可能是通過經(jīng)年使用并被驗證的,你或許可以寫出類似的東西,但最后可能被潛在的bug淹死”。程序員的自尊心是一回事,而程序本身則是另一回事。
在體認到這種糾結之后,或許你會對該書不失激情澎湃而又細致入微的故事中獲得更多領悟——至少,它有助于你了解這是一群怎樣聰明、固執(zhí)、敏感而勤奮的程序員們,以及如何進入他們的世界:盡管本書并沒有刻畫出任何一個在Chandler項目中血肉豐滿的人物,也沒有講述他們在這個項目中的癲狂與沉迷,但它畢竟向我們透露了一些軟件程序員們曾經(jīng)的種種乖張:比如美國骯空管理局(FAA)1981年上馬的AAS(Advanced Automation System)項目的悲慘:項目高峰期1500名IBM程序員為FAA工作,每天花掉政府100萬美元。巨大的壓力給參與項目的程序員帶來心理上的嚴重創(chuàng)傷。有人砸爛自己的汽車,有人瘋掉,有人自殺,有個項目經(jīng)理開始吃紙上癮,項目拖后得越多,他在開會時嘴里塞的紙就越多……
由于Chandler被視為一個“失敗的項目”,讀到后面的章節(jié),多少會感到窒息——但它畢竟還未結束,像人類學家在講述一個迄今未被完全探索清晰的部落一樣,故事總會有終點,但不是現(xiàn)在??梢钥隙ǖ氖?,人們應該對Windows vista這樣更為龐大的軟件開發(fā)計劃的管理者抱有一些同情之心了。