l

2011年2月4日 星期五

軟體這條路:Architect 篇

Feb. 04 01:46~04:10

吃軟體開發這一碗飯(簡稱『吃軟飯』)的鄉民們,到了一定年紀之後,都會遇到同樣的問題:『難道我要寫一輩子的程式嗎?』或是『我還有幾年的程式可寫?』Programmer 雖然不像運動員一樣 35 歲左右就算是『老人』要準備退休了,但是隨著年紀逐漸增長,體力與記憶力逐漸衰退,開始出現以下症狀:程式寫多了肩膀會酸,滑鼠用多了手腕會痛,螢幕看多了眼睛會花,怪打多了血壓會飆高,issues 累積多了頭髮會白,架吵多了口會渴,咖啡喝多了胃會痛,需求變多了心裡會...看...不開...。再加上每天上班忙得要死,寫不完的程式,de 不完的 bugs,根本沒有時間去學習不斷推陳出新的技術。此時不禁想起了潘越雲的『軟體 情字這條路』:


    那會那會同款,軟體這條路,給你走著輕鬆,我走著艱苦
    那會那會同款,軟體這條路,你隴準時下班我留下呷便當
    不願承認加班艱苦年年肖想公司分股票
    不願承認阮的程式A錯誤,不願 test case fail
    那會那會走來,軟體這條路,默默寫著程式,望你看隴無
    那會那會走來,軟體這條路,回過頭才知影,歹走的路途
    不願承認沒照 schedule日日 review 嘛是這離譜 
    不願承認 CI 永遠做不好冬時 release 消息隴無

***

Programmer 的生涯規劃,大體可分為四條路:
  • 累積一定的技術能力之後,轉做 PM,當作客戶與技術人員之間的協調溝通者(PM 動口不動手,讚啦)。
  • 累積一定的技術能力之後,『座艙升等』,從經濟艙(programmer)升等到商務艙(Designer)再升等到頭等艙(Architect)。
  • 轉當 QA Manager。
  • 回家種田。
今天 Teddy 要建議幾本身為一個 software architect 應該要看的書,在這之前,先談一下 architect 要做與不必要做的幾件事。首先是要做的事:
  • 要曾經寫過很多程式。
  • 要參與過多個專案。
  • 要會『畫圖』(至少要會畫矩形,直線,箭頭,還有人)。
  • 要懂得抄襲。
  • 要持續寫『一些』程式。
接下來是不必要做的事:

  • 不用考 UML 認證
  • 不用考 Certified XXX Architect 認證
為什麼不用考認證?原因很簡單,因為 Teddy 也沒去考過...就算去考也考不過...就算是考過設計出來的 architecture 還是有極大的機率不能(好)用, 所以把錢和時間省下來吧。

Teddy 介紹一批 便宜的牛肉  有用的書給各位,鄉民們只要花個『幾年』的功夫把這幾本書看個 70% ~ 80% 這樣也就差不多了。
  1. Design Patterns - Elements of Reusable Object-Oriented Software:有人把 patterns 又稱為 micro-architecture,這本書看熟對於了解各種不同的 architecture styles 很有用,對於寫程式也很有用。
  2. Pattern-Oriented Software Architecture:這一系列的書已經出到 volume 5 了,Teddy 知道大家都很忙也沒那麼多錢把每一冊都買來看。其實只要看第一冊就差不多了可以得知其中的精華,待有錢有閒時再看其餘各冊即可(不看也行啦)。
  3. Patterns of Enterprise Application Architecture:這本書提到很多 Web 應用程式會使用到的 patterns,這些 patterns 在『傳統』的軟體架構或是 patterns 書中比較少看到。有在開發 Web 應用程式的人這本書一定要看。
  4. Software Architecture in Practice, 2nd:這本書的重點可以分為 (1) 介紹 Quality Attributes (non-functional requirements)以及如何滿足這些 Quality Attributes 的方法 (書中稱之為 Tactics);(2) 用 ATAM (Architecture Tradeoff Analysis Method)與 CBAM (Cost Benefit Analysis Method)來分析軟體架構。書中還有很多資料,不過時間有限的話把這兩個重點學會就 OK 了。
  5. Software Architecture- Foundations, Theory, and Practice:這本書是 Teddy 去年八月買的,這幾天才拿出來看(Teddy 內心獨白:我上班也很忙啊)。沒看沒事,一看不得了,真是一本好書。Teddy 正在看第 2 章 Architectures in Context: The Reorientation of Software Engineering 和第 5 章 Connectors。寫得真好,如同書名副標題一樣,要理論有理論,要實務有實務,而且是 2010 年出版的新書,內容也比較新。這本 700 頁的書很適合拿來當教科書,想要了解 software architecture 這個領域的地形地物可以先看這本書。把它當地圖看,不用嘗試將書中的內容全部記下來。
以上這五本能夠看完就很厲害了,介紹太多也沒人有時間去看。最後以第五本書第 2 章 (p. 24) 的幾句話當作結尾:

  1. Every application has an architecture.
  2. Every application has at lease one architect.
  3. Architecture is not a phase of development.
***

友藏內心獨白:祝鄉民們兔年 test cases 寫到吐。

4 則留言:

  1. 最後一本應該是 2009 年出版的?

    回覆刪除
  2. To Clsung:

    您說的是 Pattern-Oriented Software Architecture 嗎?Teddy 只買到 2007 年出版的volume 5,之後就沒注意了。下次去天瓏再看一下。

    回覆刪除
  3. To Clsung:

    我知到了,您說的『最後一本』是指Software Architecture- Foundations, Theory, and Practice 吧。查了一下 Amazon,好像真的是 Wiley (January 9, 2009) 出版的。書放在公司,明天再確認一下。感謝指正。

    回覆刪除
  4. 感謝推薦,目前選擇
    1.Design Patterns - Elements of Reusable Object-Oriented Software
    2.Software Architecture: Foundations, Theory, And Practice
    這兩本當作小弟的架構入門書~

    希望之後有些觀念後能再多多跟Teddy大學習學習 :)

    回覆刪除