記得在學校畢業前有一門必修課,叫 Digital Transformation,主要是利用個案來探討資訊科技對於企業甚至政府的影響:在這些個案中,主角都因為科技的變化而遭逢了一些問題,有的是傳統產業想要升級,有的則是國家的港口想要轉型,在這些個案中,對於資管的學生來說,科技,幾乎就是唯一的解答。所以甚至會看到有些不太認真的組,提出: “該公司應採用 Java 相關的 Web 技術來設計系統” 給 1995 的公司。的確,有些公司的問題,確實是只要等待科技稍微進步一點 (例如,BlackBerry 機的出現),就會比較容易解決,但是實際上,管理上的問題並沒有這麼簡單,這也是同樣的技術,用在不同的公司,會有完全不同下場的主因。

前陣子聽到主管討論到把公司的每一個網站元件都切成獨立元件的問題。在工程師的完美世界裡面 (或是有一些 SOA 的宣傳文件裡面),每一個 Service 都應該可以獨立運行,彼此之間只要界定好介面訊息,撰寫和維護各元件的工作應該就可以切開給不同的人 (或組) 負責;”負責” 代表權和責,某人要為它負責,當然需要確保這部份元件運作正常;既然他要負責,而且我們已經有完美的介面,自然其他人也應該尊重這個封裝,不應該去動他的程式碼。

幾乎所有老經驗的程式設計師都會同意,loosely coupled 和封裝可以減少很多問題,只要…我們不考慮效率的問題。
Read the rest of this entry