轉眼間,已經是工作以來第二次準備跨年的時候了,也就是說,過去的365 天是一個扎扎實實的上班族(研發替代役),這一年來,對自己各方面的進步都還算滿意,這篇文章就用來記錄這一整年所學習到的技術、看過的書、做過的事… 等等。

讀過的書

這一年我真的讀過非常多書(但其實有一部分是跳著翻,讀得不精),大概比學生時期還要多XD,主要可以分成幾大類:

軟體工程

工作一段時間後,發現自己對軟體架構情有獨鍾,因此這一年吸收了許多與設計模式相關的知識,也補充了許多關於Clean code 與重構的觀念。

以下包含幾本深入淺出系列書籍,談不上鍾愛深入淺出系列,但以前確實覺得這樣圖文並茂的書籍可以增加學習興趣,後來發現若有一定程度的瞭解,讀這類型的書反而會適得其反。

《深入淺出物件導向分析與設計》

這本其實碩一(或更早)時就已經買了,一直以來都擱著「沒時間」看,後來會在拿起來翻,主要的原因在於看了許多設計模式相關的書籍後,知其然不知其所以然,回頭惡補了一下物件導向設計的基本概念,如:SOLID 原則。

本書我只有大略翻過,當工具書使用。

《深入淺出設計模式》 《Swift 設計模式》 《大話設計模式》

上面談論到,其實我為了學設計模式買了不少本書交互著參考,但其實都是遇到「特定問題」在尋求解法,才會稍微去翻一翻,實際上,我覺得大部分的狀況遵守SOLID 原則就已足夠。

不過設計模式就有點像在吸他人遇到問題時,如何解決的經驗,所以看過幾個較有名的設計模式後稍微記在心裡,遇到問題時會有更多想法可以解決。

這三本我最推薦《大話設計模式》,透過你真的故事案例來帶你導入設計模式至程式碼之中,如果想要學習設計模式,是一本很不錯值得入手的書籍。

《The clean code – 無瑕的程式碼》

這本書灌輸了我許多寫程式的好習慣,我認為想要靠寫程式吃飯的人都應該讀一讀本書,其中,屏除所有技術上的建議,我覺這本書所提到的童子軍法則,令我謹記在心。

其實無論任何事,每一次都比上次更好的話,東西自然就會越來越好,撰寫Clean code 更是如此。

《The clean coder – 無瑕的程式碼番外篇,專業程式設計師的生存之道》

與上本書相輔相成,在開發過程中,不斷的被時間壓榨是一定的,如何有個「兩全其美」的方式,既有時間撰寫好架構、clean code,又得完成功能,甚至還要加上測試?聽起來像天方夜譚,但或許此書的某些建議真的能讓你在專案過程中更有效的溝通。

其實這類的書籍都會有實際案例,當你真的遇過類似的案例,你都會感到非常有感覺,這一點很重要,因為通常會有相對應的解決方法,但是更重要的事,鼓起勇氣去實作吧。

《重構:改善既有程式的設計》

這本書很特別,可以叫他邁向clean code 之路,又可以當他是一本談論技術、架構的書籍,用著數十種重構方式來解決你「現在看到」的程式碼所遭遇的問題。

這也是一本我覺得必讀的書。

測試

《測試驅動開發 – 使用Python》

聽過測試的觀念很久,聽過TDD 也很久,但一直沒有在自己寫過的專案或者工作上使用,對測試一直都是不知其門而入,直到這本書的出現。

這本書使用Python 與Djnago framework 作為範例,手把手教你TDD,也因此我對於TDD 有初步的認識,不只是這樣,他讓我對測試這件事情更有「感覺」了。

此書包含Unit test 與Functional test ,但我較有興趣的是Unit test,所以我多買了下面這本。

《單元測試的藝術》

什麼是Mock?什麼是Stub?怎麼手工撰寫?這本書是從非常基礎的「可測試性」程式設計教起,一開始他並不為教你如何使用Mock framework,因此對於撰寫testability 的程式碼而言,這真的是一本不可多得的好書,至少對我來說,他讓我徹底了解到底怎麼單元測試。

本書的幾大重點:

  1. 撰寫可測試性程式
  2. 測試的核心技術(撰寫Mock、Stub)
  3. 測試程式碼的品質(可維護性、可讀性、自動化)
  4. 測試的設計與流程(團隊導入、legacy code 問題)

整體而言,這是一本讓我真正的在公司的專案中導入自動化單元測試的「啟蒙老師」,雖然是簡體版,有些翻譯的詞句言不及義,但還算的上是一本不錯的好書拉!

敏捷開發

其實對於敏捷開發的部分我還是不能算懂,畢竟看過書學過理論都比不上實踐的感覺來得真實,但問題是,看完才發現公司專案上用的號稱是Scrum 的Scrum 根本…

《笑談軟體工程 – 敏捷開發法的逆襲》

此書很適合工作中的程式設計師閱讀,你會發現,怎麼好像在講你、你的團隊、你的同事、你的PM、你的SA…。

好吧,事實證明了到哪都一樣,對吧?

《Scrum – 用一半的時間做兩倍的事》

我看完此書之後徹底覺得公司所用的「Scrum」根本不是Scrum,用的「Prodcut backlog」也不是backlog,用的「Sprint」也不是Sprint…。

好吧,別裝了,就是在用「敏捷瀑布」嘛!

程式語言相關

《Cocoa 學習手冊 – 使用Objective-C》

純粹翻翻,有些過時,大部分的技術都是古早年代的… Orz。

《Effective Objective-C 2.0》

其實工作後,才算跟Objective-C 混熟一些,其實看這類型的書,主要學習的都是工作碰不到的部分,包含像是runtime 的特性、記憶體管理的眉角,雖然網路上都有許多討論,但如果早看過這本的話,或許會少走很多冤枉路。

一般讀物

會刻意提一般讀物只是因為我真的覺得讀得很少,專業知識吸收了不少,但心靈類型的書卻真的沒什麼看,自省一下。

《Kid 林伯昇的野人生活》

Kid 從節目「綜藝玩很大」中,拼鬥的精神讓我對他刮目相看,因此對於他出的這本旅遊工具書蠻好奇的,但充其量說他是旅遊工具書,不如說是他的遊記加上攝影集,看看一些漂亮的照片加上學習他如何玩耍,是一本純放鬆類型的書籍XD。

… To be continue

寫到這就花了不少時間… 或許剩下的分享要等到明年初才能寫拉,不過我還是希望可以扎扎實實地在補充剩下的部分,包含打了哪些PS4 遊戲拉、去哪玩拉、實踐了哪些心裡想做的是,最後在訂立一下2017 年的目標吧!