我有很濃厚的“地圖情結”,以前我寫過一篇《我的信仰地圖》,最近又做了一次關于Ajax的演講,名字叫做《Ajax技術地圖》。我一直以來的觀點是,世界是一個整體,在這個巨大的世界之中,任何事物、任何知識,任何觀點,都有其合理、自然的位置。理解這個世界的過程,就是逐步將需要了解的各種事物,在作為整體的一個世界中,找到其位置。了解這個位置的前后左右,相互關系,相互影響。這樣的理解世界的學習方式,我認為是最為有效的。所以當我在JavaEye看到關于《代碼大全》的廣告時,我的第一反應就是:這不是世界地圖嗎?
?
看了看他的目錄,竟然有35章之多?架構、分析、設計、編程、測試、重構、面向對象、調試、規范、管理、軟件質量控制、協作、優化、開發工具、注釋、甚至個性、開發藝術等等等等,只要是與軟件有關的,基本上他都寫到了。
?
說實話,我當時相當的不屑......可能嗎?居然有這么一個家伙,能夠像當年的托馬斯?阿奎那一樣,以一己之力,寫出《神學大全》?CSDN的網站上介紹這個Steve McConnell,在1998年的時候,被Software Development雜志的讀者評為軟件業最具影響力的三大人物之一,與Bill Gates、Linus Torvalds齊名。一個寫書的,能和兩個寫代碼的天才齊名?網站上的那些推薦的話,個個都是大名鼎鼎,個個都是推崇備至。作為我這樣一個有逆反心里的家伙來說,直覺上就是:“會不會呀,有這么牛嗎?”
?
當然了,我也不好多說什么,畢竟沒有看過書~~~
?
沒想到好事居然找上門來了,博文視點的魏泉是我要寫的那本Ajax書的責任編輯。而《代碼大全》也是他們負責出版的。那天他找到我,說是讓我看看這本書的書稿……看看能不能寫一篇書評。這等美差,我很爽快的就答應下來了。
?
一看之下,果然是很喜歡,作者的思考問題的方式,與我的方式相當的接近,都是盡可能將多種、甚至矛盾的事物,放在一個整體的環境中來理解。比如對于隱喻,用于描述軟件開發的特征的各種各樣的隱喻,其實各有其價值,如果能夠組合運用,自然能夠獲得一種平衡。正如作者所說:“使用隱喻又是件說不清楚的事情(fuzzy business)。你需要適當地引申它的含義,才能從其中蘊含的深刻啟發中受益。但若你過分地或者在錯誤的方向上引申了它的含義,它也會誤導你。正如人們會誤用任何強大的工具一樣,你也可能誤用隱喻,但它的強大的功效,還是會成為你智慧工具箱中的一個寶貴部分。”
?
這樣的一種看法,可以說“中正平和、深具智慧”,這是我們在大多數關于軟件開發的論述中,很難看到的。
?
再比如說,作者在第三章時給出的一個表格:三種常見的軟件項目種類,及其典型的良好實踐。就將軟件分為商業系統、性命攸關的系統以及性命攸關的嵌入式系統。然后指出對于這三類不同的應用,在開發手段、管理強度、設計、構建、測試、部署等等方面的差別化策略。這樣的分類,自然就避免了將各種開發手段,簡單的對立起來比較的方法,顯得更加具有說服力。
?
再比如說,全書給出了相當多的Check List,這樣的表格,實在是大有益處,借用地圖的隱喻來書,這樣的CheckList,就是一個一個的定位器,它能夠幫助你認清自己的位置,了解問題所屬的范疇,了解應該努力的大致方向。這樣的“開發工具”,真是獨一無二。
?
這本書我目前只看了前面的5~6章,實在沒有太多的發言權,不過我現在已經可以肯定,這是一本非常有價值的好書,我推薦所有沒有看過的朋友去看看這本名副其實的經典之作。
?
說實話,天下沒有免費的午餐,我這篇書評,也是屬于交差之作。人家出版社把樣書給你看,請你寫書評,當然希望你能說些好話?幸運的是,這些好話,的確都是我自己愿意說的。
posted on 2006-03-22 15:53
讀書、思考、生活 閱讀(5639)
評論(5) 編輯 收藏