極速開發課程心得

以及這堂課的後日談

(KJH) Kuan-Jung, Huang
8 min readJun 4, 2021

前言

去年度雖說是 COVID-19 打亂了我整個行程,但也因為本身投資績效不錯,所以手上多了不少現金,得以幫助家裡還抵押權債務的同時,還有閒餘的資金投資於自身。為甚麼投資自身?其實很多知名的投資大師都曾說過,價值投資用於自身的投資報酬率,絕對遠高於在金融市場的投資。在此策略之下,我分別花費了一部份的錢投資於 CISSP 的學習擴展資訊管理知識之外,就是提升自己的開發能力。

在接觸「極速開發」以前,我因為本身有多多少少的面臨各種壓力的經驗,所以常常是身在挑戰舒適圈的極限。但我也需要一個「程式開發方面的教練」好讓我快速地進步以及給我指引。這也是因此我選擇 Joey Chen 的敏捷開發軍火庫 的原因,作為一個喜歡追求迅速交付的我來說,要達到既迅速,又能夠交付價值之外,除了對商業上的敏銳度要有之外,更重要的是確保交付的軟體也是高品質的,國內能同時達到又快又有好品質的,就屬 Joey 的課程了。

我自己本身有在撰寫單元測試,但在開發速度上不算很快,而且人數又少,所以多數時間只能寫重要的單元測試,覆蓋率說實在都非常的低。有這樣的課程可以幫助我提昇開發速度就完全是符合我的課。

參與課程後的效果

為甚麼 Joey 很認真跟大家介紹如何把自己變強,而有多數的人最終可以把自己的訓練速度提升?真的只是把 IDE 上或是 vim 的快捷鍵背一背就有能夠變快了嗎?

我以「遊戲化」的角度來看待把自己的 Level 提升這件事,Joey 並沒有給我們任何的點數、徽章或是建立一個排行榜讓大家龍爭虎鬥(***遊戲化不是只有點數、徽章、排行榜,寫這三個目的是為了讓大家去思考為甚麼你願意為一件事情動起來),許多前輩即使沒有這些東西一樣持續自主訓練。

上完極速開發之後,我試著每天撥出一段時間來練習上課得到的知識,並且想辦法將這些知識整合進來,支撐我前進的動力是發展與成就(CD2),一旦建立了好幾天的影片之後,我利用損失與避免(CD8)的核心驅動力讓自己不斷練習下去,不想要中斷前面好幾天的所累積下來的經驗。另外在練習的過程中為了不使自己枯燥,我偶爾會換個語言練習,或者是故意打錯,或者是嘗試其他的使用方式,透過創造力與回饋(CD3)來驅動自己探索新的知識。

在程式開發上的影響

經過一個多月的練習,終於可以在 10 多分鐘寫完 JavaScript 含單元測試了,而這些練習的 Kata 幫助我在這個月提升了不少產能!

終於可以讓這個影片曝光了: https://youtu.be/J4DRxKrtVzY

在 Joey 的指導下,我終於完成一個很大的目標,可以更熟悉使用與 IDE 並且加速開發工作也能有能力寫單元測試維護良好的軟體品質。

極速開發是利用刻意練習的理論,搭配一日的訓練課程做基礎觀念的訓練,但是剩下多數的時間要靠著毅力跟努力將這些技巧化為己用,我深信著刻意練習的理論並且認為每件事都是可以靠著刻意的持續練習而納為己用,這個 playlist 記錄著我從 4/11 上完課程之後,開始訓練的路:
https://www.youtube.com/playlist?list=PLoNe-hHKAUdIsEciuViyvZMIYAAC2wr4z

特地分享這個影片是想讓大家知道,身為實踐者的我每天就做這些簡單的事情,連續著超過 30 多天了。

簡單的事情,做久了就是一種不簡單 — By 我的恩師 - 許峰源

應用的好處

目前除了每日的開發作業之外,包含我自己正在做的 Side Project 都開始使用 TDD 的方式開發軟體,甚至我在練習的過程中還發現可以使我更進步的地方,例如思考有效用的測試案例。

另外一個方面比較偏向收入的內容,就是不斷去思考如何幫助到自己與他人的能力提升。在這段學習旅程之後,其實更多我想做的是可以把 Domain Driven Design 等觀念與「提升開發速度」、「提升軟體品質」這樣的觀念為主軸去發想,開發出新的內容未來分享給其他人,同時為自己帶來更好的收入。

第三個是追求軟體工藝的能力,開發速度變快了,我就有更多的時間思考品質這件事,一旦開始有了品質意識,再加上有快速回饋的測試結果,我可以更大幅度地降低技術債所帶來的品質影響,降低重工的風險。時間多了就可以做更多事情,包括好好休息這件事。

其他得到的東西,包括像是人脈等等的都將會是未來得到的投資效果。

刻意練習加速學習能力

在這堂課我認為最有特色的地方在於整堂課是老師精心設計過的,利用 Tennis Kata 刻意地讓我們練習使用 vim 跟了解自己的 IDE 來加速開發。同時在課程中你還可以學習到《刻意練習》的理論。

為什麼選用 Tennis Kata 的原因在於它是可以練習到最多 vim 的按鍵知識,我在完成一個學習的小段落後有練習其他的 Kata,目前我也驗證出的確只有 Tennis Kata 可以產生的練習效果最大,不愧是精心設計過的課程。

很多人認為將自己逼到極限就是拼命做,卻忽略了練習和訓練的其他面向同等重要。

刻意練習的理論

作者透過多年研究「頂尖專家」做事的方式,光有練習的「量」是不夠的,還必須兼具練習的「質」,即是「刻意練習」。

那看起來量是由我們這些人去完成,「質」是怎麼來的?我把它分成兩部分討論:

有目標的練習與適應新的觀念

我的經驗是我們一開始都會很開心地學習新技能,過不久大家可能就不再學習或是滿足於學習到東西這件事。而離開的原因除了不再新鮮之外,我相信更多人的原因在於下一個階段的東西很難突破,使人精疲力時進而導致學習效果低落。

任何領域裡最有效、最有用的練習方式都是藉由產生狀況讓大腦與身體產生適應力,經過一定的練習量之後有了熟悉感,最終訓練出之前所沒擁有的能力。

一般練習法在《刻意練習》中被認為是

一旦技巧達到滿意的程度,動作也成自然,就等於不會再精進了。

有目標的練習法則是透過做到三件事情:設定清楚的目標、實現這些目標的計劃、找出一個監測進步程度的方式。這三件事情只是一個開始而已,因為我們還要找出動機讓我們持之以恆的訓練,這部分後面的 tiny habits 會補充。

可能有人會問該如何突破瓶頸?如果你有看影片,其實你會發現我每天都在些微進步,除了把按鍵按對了之外,更多的是當我錯按鍵不得不回頭時,我可以更快更優雅地透過其他方式拉回正軌,這件事情就不是把按鍵背好就可以達成,因為還要知道如何處理這種「例外錯誤」。我認為克服障礙之道,不在於「更加努力」,而是我讓大腦有更多的應對方式,亦即更熟悉自己的 vim 或是 ide 使用方式,建立更多的情境,比如前面提到的按錯後該如何處理,快速回到開發的正軌上,這些都是一定要實際練習才遇得到。

以我在這幾天的刻意練習,我同時也有技巧地去嘗試新方法,或是找樂子,而非更加努力地多寫幾分鐘。當然一開始訓練 Tennis Kata 時胖手指(按錯)或是忘記如何按是家常便飯,甚至忘了寫 test cases 導致錯誤而感到沮喪。

但是持之以恆的走下去,採用到了刻意練習的「質」,也就是運用到最多 vim 的按鍵知識、以及 IDE 提供方便的重構等工具。這些練習的路徑才是最難能可貴的。

我們自行練習的「量」,每天不用多,訓練一個段落或是最多就訓練 30 分鐘。而我自己因為本來就知道《刻意練習》,我甚至還把訓練時間拆細分成早上跟晚上,就是刻意地去建立大腦的適應感。

一旦做到了,我們就可以按照自己的選擇掌握自己想要學會的東西以及提升自己能力的方法了。

我還多做了什麼?

BJ Fogg 的 Tiny habits

我在另外一篇 Medium 中介紹了簡單的 BJ Fogg 的 B=MAT,這是一個利用 tiny habits 去建立習慣,所以我不打算重造一個輪子再多寫篇幅。

如果你看了這個文章也想要讓自己脫離舒適圈,我會建議不要一開始設立多高的牆壁,因為那很容易使你打退堂鼓。

除了將 Joey 老師建議的學習方式拆解之外,我還融入自己的學習方式去快速把這個觀念學起來並且應用。

所以我建議是當你的目標非常大的時候,除了拆解目標之外,更重要的是你如何為每個目標提供資源去完成(即是公式中的 Ability)?要記住很多東西包括時間與精力都是你的 Ability。

結語

學習一個新的東西不容易,但是持之以恆更不容易。

如果你也想要學習如何變得更好,歡迎去報名 Joey 老師的課,最新的極速開發課程連結在此:
https://tdd.best/courses/extreme-developing-202201/

或是追蹤老師的粉專在未來搶得訓練的好位置:
https://www.facebook.com/91agile

--

--