【學員上課心得】孟哲 - 201905 極速開發

學員 孟哲 在半年內參加了三門培訓課程【針對遺留代碼加入單元測試的藝術】、【演化式設計:測試驅動開發與持續重構】、【極速開發】的心得感想整理。

孟哲 Facebook 原文內容(經過排版與標示)

看過的動畫不算多,如果要從這些為數不多的動畫中挑一部來推薦,我想我會選擇《宇宙兄弟》。劇中幾乎每一集都有乘載著深刻意義的對白,如果用心感受邊看邊反思,看完整部應該多少會對人生價值觀產生影響,可謂十分寓教於樂。

「認真後的失敗,是有價值的。」

這句是我覺得最受用的觀念之一,在劇情中更完整的脈絡是-不斷地認識並跨越失敗,就能做出好東西。

來到目前這間在業界以「敏捷」環境聞名的新公司就職也過了三個月,幸運地在不久前通過了試用期。團隊狀況在剛開始讓人覺得每天都像在戰鬥一樣,伴隨著脫離舒適圈以後的身心俱疲,自己也成長了許多,人生就是這樣,不是得到就是學到,在這段期間著實感謝很多人幫忙,只靠自己一個人可能在試用期的路上就陣亡了。前面提到的那句台詞,其實恰好正對應了敏捷中「持續改善」的核心精神,不斷地刻意去檢討,然後改進,就能讓自己/團隊/產品愈來愈好。實際身處這個時刻強調敏捷的環境以後才發現這個模式非常萬用,幾乎任何地方都能套用敏捷思維,

回想起先前上過 91 的兩堂課 TDD 和 Unit Test,以及上個月剛上完的極速開發,課程內容也都是以敏捷精神來驅動開發,小步快跑、快速迭代、即時回饋、刻意改善

之前上過的 91 課對我在工作上的觀念影響都很深,通常上完課不久後就會想要分享心得以及推薦課程,但這次的極速開發我在結束一個月左右才打算做個分享,原因是這次我覺得應該要拿出一些具體的東西來作為分享的依據,而為了這具體的佐證,我需要花些時間練習。

這堂課說難不難,說穿了從頭到尾我們要做的就是以 TDD 的方式去實作一個極微小的專案稱之為 Tennis Kata,我相信程式碼總行數沒超過 300 行;說簡單也不簡單,問題只有一個-要怎麼用最短的速度完成這件事?在對需求有同樣理解程度的前提下,為什麼別人可以 15 分鐘內完成,而自己可能需要花到 30 分鐘甚至更久?關鍵的原因是什麼?

起初對這門課真沒啥興趣,當時覺得這不過就是教你熟悉 IDE 的熱鍵還有極度熟悉 Tennis Kata 需求的課程而已,竟然要花這麼多學費?!

但在其它課堂上看過幾次 91 開發的 flow 以後發現,對工具的嫻熟間接影響的是開發思維,不熟悉 IDE 功能造成的結果就是多做了許多 IDE 能夠自動完成的事情,或繞路寫程式碼,簡直是在浪費時間;善用 IDE 不但省時,還更容易寫出語意化的程式碼。
因此,為了妥善發揮地表最強 IDE 的功能以及學習這種自己完全不知道的開發 flow,我最後還是報名了這門課,感謝 張仁瀚 & 邢源源 一起參加。

Kata 的意義就是套路,練 Kata 講白了點就像是一直打木人樁的概念,你已經知道怎麼做了,但要怎麼用最有效率的方式完成它?這是《Clean Coder》一書中很推崇的程式設計師練功方法之一。

因為 Tennis 是個具體而微的小專案,在實踐「以最短時間完成 Tennis Kata」這個目標的過程中,會反覆練習到 TDD 與重構思維,以及為了提升速度不斷使用的 IDE 熱鍵。「熱鍵」聽起來可能沒什麼,但其實上了課之後才發現其實熱鍵和指令組合起來能做的事情遠遠超過我一開始的想像。

這部份也許直接看我練 Kata 的影片來感受比較快,影片不長,13 分半以內就結束了,加速看也無妨,重點是從中應該可以看到許多從來未曾想過能在 Visual Studio 上發生的操作,這是這門課的價值之一。

刻意練習 影片傳送門:https://youtu.be/8erQ3Pc-Kik

另一個價值,則是讓自己熟悉刻意改善的模式。

最剛開始我是無法在 30 分鐘內完成這個專案的,一方面對需求還不夠滾瓜爛熟,另一方面對熱鍵陌生。

為了有一套標準的練習準則,我先嘗試拆解 91 僅 13 多分鐘的 Demo 影片,影片中的手速太快,所以光這件事就用掉了好幾個下班後的晚上,花了好幾個小時才把 91 在這個專案中的開發順序拷貝到自己身上。之後不斷練習,練習到覺得差不多夠熟了就錄影,影片作為自己檢討用途,也同時丟到上課群組請 91 哥給建議,從資源回收桶裡的檔案數量得知自己大概練習了兩百多次,於是終於能有以上 13 分的影片。

當然還能更快,有很多上過課的同學和前輩都不止這個速度,但我想表達的是,這是一個很好的機會讓自己看著自己因為刻意改善而朝期望的方向不斷進步,並且這過程中一開始是有教練能提供協助的

在最近半年上過 91 三堂課,總共花費其實還不到一個月的薪水,但學習到的、被影響到的都是非常長遠的東西。

目前還在慢慢將極速開發的學習成果運用到工作上,當然在實際專案上不可能像練了超過百遍的 Tennis 那麼順暢,但以現在轉換初期而言,光是運用那幾個熟悉的指令來減少鍵盤來來回回刪改或滑鼠移動的時間,就已經開始感受到學習和練習的成效了。

最後說說這堂課有個缺點,就是突破極限這件事會一直掛在心上,三不五時就想要練一下來超過速度更快的同學,然而在極限邊緣必須又快又零失誤才有可能突破,所以這件事很容易失敗,然後很可能一兩個小時又這樣過去了 XD

話說這個追求更快速通關的過程和因為失誤帶來的懊惱感和挫敗感一直感覺很熟悉,仔細想想原來是小時候在玩洛克人的既視感R

91 的補充

投資不到一個月的薪水,不只是獲得了受用一輩子的技能與知識,還包含了跟我建立了連結。

而我的人脈、認識的好老闆、強者、機會,都有可能為你所用,你也很容易在課堂上碰到跟你一樣熱血,讓你在職涯學習的路上不再孤單的好夥伴。

是投資,還是負債,端看你怎麼把學會的東西用在實務上。而這些工程實踐的基本、進階技能,通常也是在公司內技術領導者必備的條件,通常也是換公司時大加分的條件。

只要你人是對的,我就樂意幫你背書,而有我的背書,通常會讓事情變得容易許多,要談薪資上限也會比較有所依據。因為我很重視 credit,絕不輕易幫別人背書。

參考

  1. 【極速開發】
  2. 【201905 極速開發】學員反饋與心得
  3. Facebook 粉絲專頁:91 敏捷開發之路
如您想參加某個主題的培訓,只需要填寫在活動介紹中的 google 報名表單,我會回覆您該梯次是否額滿,下一梯次預計在何時開課,並協助您移轉報名資料至您想要參加的梯次。

或許您會對下列培訓課程感興趣:

  1. 2019/7/27(六)~2019/7/28(日):演化式設計:測試驅動開發與持續重構 第六梯次(台北)
  2. 2019/8/16(五)~2019/8/18(日):【C#進階設計-從重構學會高易用性與高彈性API設計】第二梯次(台北)
  3. 2019/9/21(六)~2019/9/22(日):Clean Coder:DI 與 AOP 進階實戰 第二梯次(台北)
  4. 2019/10/19(六):【針對遺留代碼加入單元測試的藝術】第七梯次(台北)
  5. 2019/10/20(日):【極速開發】第八梯次(台北)

想收到第一手公開培訓課程資訊,或想詢問企業內訓、顧問、教練、諮詢服務的,請洽 Facebook 粉絲專頁:91敏捷開發之路