軟體工程師,在中文上有另外一個名稱,叫做程式設計師。軟體工程也有架構設計這個技能。領域驅動設計也有設計這個字眼。定義上來說,設計師是負責解決問題的人,我們也知道軟體工程師是用來解決問題的,但是是解決什麼問題?

設計師要解決的問題是使用者的體驗問題。軟體架構的使用者是誰?不是那些使用建置成品的人。架構的使用者是工程師本身。我們講的架構是為了解決工程團隊在協作與維護上的需求

所以架構不是由某個工程師依他的喜好決定的,而是根據團隊的工作模式和性質來決定的。因此把一套架構帶到另外一個團隊,並不見得完全適用。架構也不是一蹴可幾的,你可能對比較常見的設計問題會有個大致的方向,但實際上架構總是慢慢堆疊起來的,也經常會因為設計原因而抖動。

總歸來說,架構設計是解決工程團隊的開發問題。我們可以試著放一群(負責任的)新手工程師自己進行開發,他們可能過一陣子就會發現他們需要一些規範和分工,發現某些東西不能一直不受限制的出現在某些地方。姑且不論他們的決定正確與否,在這個例子中,他們的確正在解決問題,他們的確在進行「設計」。

Todo

應該要把 Clean Architecture 的筆記放上來建立連結,比較有說服力。