讀《浮現式設計-專業軟體開發的演進本質》有感

李忠利發表於2012-02-03

題記: 在敏捷實踐的間隙,由忠利推薦,草覽了名作《浮現式設計》,受益匪淺,寫下讀後感聊表心得,以期拋磚引玉。

套用一書評中的話,翻譯出來,本書的書名小眾了點(Emergent Design,要怎麼翻?),看似一本軟體設計方面的專業書籍,又似一本行業版哲學書,實際上,作為行業同仁,為明確自己的方向,這本書絕對值得一讀。

從作坊到工廠再到組織,軟體開發經歷了近四十年的發展,在我看來已是欣欣向榮,卻被Bain一語道破:短短數十年,豈是新興行業發展所能倚仗的時間歷程?

大師不愧是大師,站得高也看得遠,當我們這群無名小輩熱衷於軟體工程化時,他們已敏銳地發現行業專業化的方向;當我們亦步亦趨地學習著敏捷開發時,他們已上升到演進的本質。

本書作為敏捷開發的經典之一,重點講述的即是軟體的專業化及演進本質。

所謂專業化,絕不是簡單地把軟體開發類比成建築工程,設計師是總工,程式設計師是工人,而是將它看作一個獨一無二的行當,我的地盤我做主,誰敢班門來弄斧?大師一句話,醍醐灌頂,經過了個人英雄式的開發過程,上升到工程化的管理模式,以至近年來流行的敏捷開發團隊,無疑都是從業者們探尋行業真理的必經之路,雖未找到放之四海皆準的真理,卻總結出了很多最佳實踐,成為有價值的模版(最著名的當數設計模式),為專業化程式提供了標準和依據。

由此,作為這一飽受爭議的行業成員,是時候解放思想實事求是,代表本行業的專業化程式,代表標準實踐的應用前景,代表先進軟體的發展方向了。

所謂演進,即標明軟體並非硬梆梆一段程式碼,而是有活力能進化的一份子。說得有點邪乎哈,某個不得志的程式設計師寫下畢生傑作後抑鬱隱退,而那段靜態程式碼吸收了主人的情感,演化成智慧生物,意欲消滅愚昧的人腦世界,建立機器碼的智慧社會……可以拍部科幻大片,再來幾部前傳後記——跑偏了,趕緊切入正題。

這個演進,實質是被動體,需要我們來推動軟體的演進,將軟體看作我們的孩子,不傷害它,讓它健康成長。作為專業化道路上最顯而易見又最實用的演進方式,模式,重構,測試驅動開發,一個都不能少。

模式不是概念不是炒作,是實實在在的經驗積累,嚴格說來不僅僅是設計模式,而是行業規範的模式,實戰中不存在用還是不用的問題,而是要遵守而且如何遵守的問題。

重構,一聽就是個大傢伙,將原有架構大卸八塊甚至更多塊,剔除所有程式,再換上全新的架構元件,裝飾上新鮮出爐的整潔程式碼——儘管重構必不可少,卻也並非如此可怕。預構,能從設計伊始就為日後的重構打下鋪墊;現有的重構技巧也能為重構過程提供幫助,並減少風險。

測試驅動開發,看似可有可無,實際上卻為一開始的設計提供依據,為此後的重構減輕工作量。尤其是針對各種模式的測試方式,衍生出了針對各種設計模式的測試模式,讓人眼前一亮,也更易於理解各類設計模式了。

大師一部書,解我七成疑,好書同分享,自在IT行。

付豆

2012.1.20

本文經得付豆同學同意,發表在此。付豆同學後曾受託,在公司內部交流會講述本書,書中的知識得到了有效的放大,相信能夠對廣大開發人員,設計人員有更多的提升。

相關文章