軟體塑模(Modeling) 是一件非常單純的事

我有一位擔任 CTO 職務的朋友告訴我,他蠻苦惱於國內沒有人可以協助他如何學好塑模(Modeling)。聽了這句話,我有些訝異,第一個直覺的反應是,到底這位朋友對 “塑模” 的定義為何,再則,一聽到 “如何(How-to)”,就表示他想要的是學會塑模 “用” 的技巧,卻很難會對塑模的本質用心思索與體悟。

若有人問我,什麼是塑模? 答案很簡單,只要能表達我心中對於軟體設計的想法,包括圖形與程式碼,都可以是我塑模的工具。產出是什麼? 這好像是廢話,利用圖形就是設計圖,無論是草稿(Draft)式或藍圖(Blueprint)式的;程式碼當然就是可以被執行的應用程式。目的是什麼? 1. 表達設計者對設計的想法;2. 做為一種模型(Model),可以讓參與系統開發團隊的不同成員能有 “一致性” 的共識,包括對功能面(Function)與結構(Structure)面;3. 做為一種模型,可以協助未來系統具體化的成形,得以穩定、彈性來服務用戶。

所以回到我這位朋友問題的原點,如何才能學好軟體塑模(Modeling)? 知道你想表達的,勇於用圖或程式碼甚至直接用文字或嘴巴表達,然後可以 “自圓其說”,也就是要能清楚 “知道你想表達什麼”;逐漸地,也能觀察其他設計者的設計產出,思考對方為何是如此這樣的設計,他想表達什麼,是基於什麼樣的假設點的前提之下;更甚之,還能找出設計者原來有這樣的假設點,所以很有可能會衍生出設計的 “茫點”。

那麼,又如何能找到教導你學好軟體塑模的專家呢? 遠在天邊,近在眼前,要成為軟體設計專家,其實非常簡單,只要每天找一個問題,花上 30 分鐘,不斷問自己一個相同問題:「為什麼?為什麼?為什麼?」。要懂得與內心自己的對話,才會是最佳的導師啊。

因為,我那位朋友的問題實在有些過於愚蠢,原本我覺得他怎麼經常在做這些緣木求魚的事情,在原地空轉而不自知,但一時我卻無法給他一個簡單明確的答案,上述的答案,其實是我在「混沌(Chaos)操作法II」一書中看到的一則寓言,還可真貼切,所以現學現賣,答案就呼之欲出了。

關於這本書,可真是了不起,對我最大的震撼就是 “混沌” 二字,這兩個字可能可以同時協助我在軟體的複雜度與金融交易的本質性思考。未來我一定會介紹在「好書分享」上的,並且也會發表多篇對於 “混沌” 的學習心得、體悟與應用(包括軟體設計與金融交易),這是一門非常深奧的領域,蘊含了大自然的本質,卻又能利用包括科學與數學來做某種程度的量化,非常地有意思。

底下列出這則故事的概述:

印度有一位學生,他希望成為一位真正的智者,於是離家尋找一位足以開導他的大師。遍訪多年,他總算找到一位大師,並請求該位大師開導他成為智者。這位大師告訴他要成為智者其實非常簡單,只需要立即回家,每天晚上坐在鏡子前面 30 分鐘,不斷問自己一個相同問題,這個問題是:「我是誰?我是誰?我是誰?」

這位學生表示:不可能如此簡單吧?

「沒錯,就是這麼簡單」,這位大師說,如果你還需要參考其他意見,我再介紹另外的大師,你可以前往請教。

於是這位學生來到另一位大師的住處,提出相同的問題:「我如何才能成為智者?」

第二位大師說:「這很困難,而且要花上很長一段時間,你必須隨同道院內其他學員從事沙哇(sava),也就是『無私的工作』。換言之,你必須做一些沒有金錢報酬的工作。」

這位學生聽了很高興,這位大師的哲學,比較接近他對於自己如何成為智者的看法,他聽說成為智者之前,必須歷經艱難的過程。所以這位學生非常欣然接受,大師交付給他的雜役,並且認定自己總算踏上正確的道路了。

經過多年不斷地雜役,這位學生漸漸失去耐性,當然也很失望,總算沈不住氣,向大師請教:「尊貴的老師啊,我已經忠誠為您服務五年,每天清洗道院內最骯髒的地方,不曾休息一天,也不曾抱怨,現在是否是啟發我成為智者的時候了呢?」

大師回答:「當然,我相信你已經準備妥當了,現在,我告訴你怎麼做。你立即回家,每天晚上望著鏡子 30 分鐘,不斷問自己一個相同的問題,這個問題是::「我是誰?我是誰?我是誰?」

這位學生覺得很訝異:「對不起,尊貴的老師,但介紹我來向您請教的前一位大師在五年前就告訴我相同的方法了。」

「嗯,他得沒錯」,大師回答。

「混沌(Chaos)操作法II」作者說,當他在訓練交易者(Trader)的過程中,所面臨的第一個問題是,如何勸服他們相信一個觀念:實際上交易獲利是一件非常單純的事。請注意,「單純」不是「簡單」,「觀念單純」與「容易執行」是兩個全然不同的東西。

同樣地道理,軟體的塑模是一件非常單純的事

但是,人類往往有兩種天生的傾向:一、對於我們所碰觸的任何事物,通常會弄得過度複雜,基於這個原因,二、我們往往不能看到事物最明顯的一面。

文章導覽

   

共有 1 則迴響

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *