在 Clean Agile 中文版一書中,其生命之環有提到隱喻一詞。當時讀的時候,該書並沒有進一步得著墨太多,自己的理解比較像是建立團隊的共同語言。
隱喻(Metaphor)是一種實踐,用來建立和發布「詞彙」和「語言」。這些詞彙和語言將被團隊與企業用於系統方面的溝通。
——摘自《Clean Agile 中文版》 p.40
生命之環。截自《Clean Agile 中文版》 p.38
到了最近開始讀《Code Complete》的第二章〈藉由隱喻進一步理解軟體開發〉時,才算是醒悟其所代表的意思。該章節講得很是淺顯易懂但不失精彩,我很喜歡這個章節,來回看了數次。
以下這段摘自其第 9 頁,該章節的第一節:
重要的研發成果,時常產自於類比。藉由將你不太理解的東西和一些你較為理解且十分類似的東西做比較,你就能對這些不太理解的東西產生更深刻的理解。者種使用隱喻的方法叫做「建模(modeling」。
這讓我再次意識到軟體開發這門學問是極具抽象的,所以我們需要一些具體的事物作為隱喻,讓我們可以更深刻的理解。像是常用到的建築學、藝術,或是人月神話中的焦油坑、抑或是書中有提到的培植系統和牡蠣養殖。我們透過各式的隱喻,讓我們能突破抽象的濃霧,看到其核心的認知。
這也讓我想到有些人會感概程式設計是一門難以入門的學問,或許就是在他們接觸時,只有看到程式碼,而缺乏作為指南診的隱喻。
進一步的是,面對這類抽象的學問,如果自身對於世界的理解過於狹隘,而缺乏多元的具體事務可以作為隱喻,或許也會遇到瓶頸,難以進一步去領悟。所以身為程式設計師、或是軟體開發者,多接觸其他事物,是很重要的事。也藉此與身邊的夥伴溝通,甚至透過帶其體驗,教這些具體事務的隱喻作為共通語言,我想會是幅美好的景象。