相關閱讀 |
>>> 文章華國詩禮傳家—精彩書評選 >>> | 簡體 傳統 |
(應第二書店之邀而作)
我一直為吃不到口味一致的炸雞翅而耿耿于懷。每當我面對一堆火候太過的雞翅時,總是忍不住會想起軟件工程——連號稱生產過程最規范的連鎖快餐店都無法避免品質偏差,我們怎么能對軟件工程繼續抱有幻想?
看來Pete McBreen也有同感。這位偏居于加拿大某小鎮的奇人,以一部Software Craftsmanship(《軟件工藝》)風雷動九州,并名至實歸地榮獲了2002年Jolt大獎。
向讀者推薦《軟件工藝(Software Craftsmanship)》一書,是一種冒險行為。在“軟件工程”本身并未得到透徹理解的情況下,倡導“軟件工藝”,極有可能矯枉過正。然而,在這種情況下提出“軟件工藝”,或許也正是時機。設若讀者真能體會作者的苦心,且因此而敢于去審視和批判技術界種種流行時尚,則作者的本意也就得以貫徹了。
McBreen既是實踐者,也是思考者。不到兩百頁的一小冊,承載了(從某種意義上)顛覆軟件工程的大任。
多年以來,技術界執著地尋找解決開發過程一切問題的“銀彈”,這些努力無疑是值得尊敬的,不過結果卻令人嘆息:盡管事實上這種銀彈并不存在。從上個世紀六十年代末、七十年代初開始出現的軟件工程(Software Engineering),曾被當作包治百病的萬應良藥,在SAFEGUARD這樣的巨型項目中,軟件工程的價值與作用也得到了充分的體現。經過數十年的發展,軟件工程的思想體系和實踐模型漸趨完善,一方面越來越標準化,另一方面也越來越瑣碎繁復。按照IEEE的定義,“軟件工程是有關軟件開發、操作和維護的系統的、規則的、以及可控的應用體系;換言之,即工程理念在軟件中的貫徹。”
聽上去很美,不是嗎?然而這不過是一種理想而已。軟件開發并非機械工作,完全可控的軟件開發過程幾乎是不存在的。當大師們把目光聚焦到“軟件”之時,“開發”也隨之變成了生產流水線——面粉和水從這頭進去,烤好的羊角面包從那頭出來;你需要準備的,只是一份完美的計劃。可惜軟件開發最終還是會歸結到“具體的人”,即開發人員。查理?卓別林在《摩登時代》中極度夸張地證明了,即便是扭螺絲這樣的簡單機械化操作,也需要操作人員具備相當的技巧。另一方面,該電影也諷刺意味十足地指出,此類“系統的、規則的、可控的”工作,會將人的創造力徹底毀滅。
我們必須承認的是,軟件開發是一項極富創造性和個性化的工作。當我第一次讀到C#語法,驚奇地在其中嗅到Anders Heljsberg的氣息,宛如在Delphi一般迷人。事實上,在每一段代碼之中,無論這段代碼質量優劣,我們總是能隱約看到編碼者的身影。沒錯,正如《軟件工藝》所堅持的那樣,軟件開發確乎是一種“手工藝”。它需要具有高技巧度、強創造力的實踐人員。你可以要求工廠生產一百萬只同樣的機械手,但哪怕是兩個完全相同的開發人員,是任何一個學校都無法造就的。這些大小不一、質量參差的機械手裝在同一臺機器上,還要求他們絕對精確地按照計劃圖紙運作,實在是mission impossible。
針對軟件工程體系中存在的問題,Pete提出了一種新的軟件開發過程理念,即“軟件工藝(Software Craftsmanship)”。該理念首先承認人的不可控性,并由此指出,在除大型項目之外的大多數開發場景下,軟件工程是不宜采用的一種過程管理體系。書中圍繞“軟件工藝”這一主題,從多方面做了深入、指導性較強的探討和闡述。關于這本書談到的種種方面,在此轉述一遍是沒有意義的。有美一人,在水之濱;與其聽我告訴你她長得怎么樣,不如自己去看一看呢。
韓磊 2014-07-15 13:48:22
稱謂:
内容: