[遛書]項目百態-死魚

沒有自動替代文字。

《項目百態》是 Peopleware 作者另外一本作品,把軟體專案開發的生態描繪的栩栩如生,既諷刺又相當血淋淋,參照著看時總會讓人回想到自己曾經經歷過的血淚與痛苦回憶。

相當推薦大家買來一讀,算是這個世代對軟體開發模樣的寫實縮影。

...繼續閱讀 »

[遛書]敏捷教練-理解構建目標

圖像裡可能有一或多人和文字

《敏捷教練》是一本很棒的書,裡面盡可能地關注在敏捷的本質,在各種儀式活動中敏捷教練可以運用的技巧以及該關注的敏捷基本精神。

這次遛的是其中第六章〈理解構建目標〉,主軸在透過 user story 對需求的釐清,怎麼樣促進團隊與客戶面對面的交談。

...繼續閱讀 »

[遛書]為什麼這樣工作會快、準、好-動機 & 團隊

圖像裡可能有一或多人

總是有人事半功倍,總是有人事倍功半,總是有人有用不完的精力,總是有人有時間持續精進,到底是為什麼?

《為什麼這樣工作會快、準、好》這本書裡蘊含很多敏捷、精實的精神與實際的例子,是我很喜歡的書之一。其實英文書名《Smarter Faster Better:The Secrets of Being Productive in Life and Business》更貼切,不只是工作,而是生活也可以套用這樣的精神。

花了 15 分鐘的閱讀時間,遛了一下這本書提到怎麼引發每個人心裡動機的部分,這篇文章簡要整理一下自己的心得與摘要。

...繼續閱讀 »

91 的團隊開發規範與限制

個人的最佳化,不一定是團隊的最佳化。如果團隊中的每個人設計能力都是到收放自如、清楚知道什麼是剛好的設計,自然不需要一些限制、一致的標準或規範去束縛他們。

但實務上就是,團隊永遠不知道會不會補進一位還沒到這種功力的成員,而且成員與成員之間,對「剛好」的定義不盡相同,對程式碼風格也不盡相同,而這對團隊程式碼共享、互相支援、產品維護成本都息息相關。

不同團隊跟環境,該採取的步驟、限制、規範本來就會不一樣。在上課中很多學員的問題,我都會提到很多「為什麼我們團隊這樣限制」。很多規範是 over design,得要付出一定的成本,只是在我們團隊,這樣的代價所帶來可降低的維護成本跟風險相當划算。

...繼續閱讀 »

[隨筆] TDD 是一種修煉過程

學會 TDD?用 TDD?落實 TDD?到底什麼時候該用 TDD 呢?

TDD 其實是一種修煉的過程,讓你可以在每一次寫程式的過程,都逐步在累積功力,就像金庸的射雕英雄傳中,馬鈺教郭靖修煉內功的方式,無外乎就是一些呼吸、走路、睡覺的法子。

...繼續閱讀 »

[隨筆] 學問-該怎麼提高上課的學習效果?

  • 1128
  • 0
  • 2016-05-25

有許多朋友透過上課跟參加教育訓練來加速自己學習成長的速度,而也有很多朋友常問我,怎麼樣可以讓上課的學習吸收效果最大化。

這篇文章簡單整理我的兩個想法:

  1. 學習發問
  2. 練習回答

當你願意身體力行這兩件事,自然知識就會從講師的外顯知識,到你的知識內化過程,透過回答問題跟文章記錄,就又會經歷一次由自己發動的外顯知識過程。這樣的經歷,才能確保自己真的理解。後續當然就是要透過不斷地練習,才能達到實務上真正的內化。

...繼續閱讀 »

[Unit Test Tricks]Extract and Override Protected Function with Moq

之前介紹了 Extract and Override 的技巧,使得不需改變 production code 對外的 API,也仍然可以在測試專案中建立一個 SUT 的替身,覆寫想要 isolated 的 dependency 就可以針對 SUT 做 isolated unit test 。

但手刻 SUT 的替身總是不如 mock framework 看起來便利,這篇文章要介紹使用 moq 來節省手刻 SUT 替身的 effort, 直接透過 moq 來 stub SUT protected virtual 的方法。

...繼續閱讀 »

[Unit Test Tricks] Compare Object Equality

實務上撰寫的測試程式中,幾乎都需要針對 reference type 的物件或集合進行比對,然而大部分的 test framework 所提供的 Equals function 都是呼叫物件的 Equals(),也就是若沒有額外覆寫,仍然是比較 reference 的位址是否相等。

這篇文章介紹一個 Nuget 套件: ExpectedObjects,讓我們可以用簡單的 API 來針對物件、物件集合、組合式物件比較是否相等,還額外提供了部分比較的功能來因應實務上的需求。

...繼續閱讀 »

[隨筆] 你的程式碼活著嗎?

什麼是 legacy code? 沒有自動測試保護的就是 legacy code 。

-Michael Feathers, 《Working Effectively with Legacy Code

講直白一點,legacy code 就是沒爹沒娘沒靠山,被人射後不理的產物。

誰都可能欺負它、弄壞它,簡直就是一直像死了般卻仍在線上活著的產品程式碼。

...繼續閱讀 »

Scrum Estimation-Scrum Estimation Model

如何讓 scrum 團隊透過 t-shirt size 來對專案範圍進行相對估算,使用 yesterday's weather 來評估團隊速率,進而估算出推估時程與預計的 deadline 之間落差有多大。

當專案面臨「插件」、「時程調整」、「priority調整」、「需求異動」、「作法異動」、「人員異動」時,就能以 estimation model 當基底來評估影響範圍,讓團隊能在在變化當下擬定眼前最佳化的決策,並提供相對客觀的資訊給 PO 與 stakeholder 溝通。

...繼續閱讀 »

[隨筆] TDD 的哲學之道

TDD 是一種限制的美學。

  • 因為限制,所以美
  • 因為限制,所以快
  • 因為限制,所以聚焦
  • 因為限制,所以好懂
  • 因為限制,所以你知道自己正在哪裡,並朝向哪裡而去。
...繼續閱讀 »