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