我是極速開發 2021/04/11 這梯次的學員,在課程結束後的隔天我就開始錄影練習。
在第 41 天的練習之後,我終於把時間壓在12分鐘,完成我的 Key Result。
- 練習的 Kata 為 Tennis Kata。
- 使用的語言為 Kotlin。
極速開發,不只是單純的練習快速打字,在這一套練習中,可以更熟悉 TDD 的開發方式,更瞭解 IDE 的功能,更活用 VIM,以及其他能幫助提升速度的 plugin 、工具 。
每日練習,每日覆盤
練習「極速開發」,是讓自己與 IDE 、程式語言產生人與 IDE 的連結、與程式語言的連結。
一開始的練習,在按下每次的按鍵之前,先在大腦確認每次的指令,然後觸動手指肌肉,讓手指能夠準確的敲到預期的按鍵。
多練習幾次之後,大腦的思考就不再需要,取而代之的是迅速的肌肉反射。
而在每次的練習結束之後,針對自己本次的練習做一個十到二十分鐘的覆盤,根據示範影片的指令,看看自己在相同的位置是如何處理的。或是看看哪些指令容易按錯。
從今日覆盤的內容挑五個項目,在下一次的練習上使用,當這五個項目都能夠成為反射動作時,就可以在找下五個項目來練習。
如此不斷的迭代之下,敲打鍵盤的速度就會越來越快。多餘的動作就會越來越少。
速度源自於練習。《The Clean Coder — Uncle Bob》
練習重點整理
1. 清楚 Tennis Kata 的測試案例
在 Tennis Kata 中 ,可以分為十三個的測試案例 (Test Case),分別是 love_all, fifteen_love, thirty_love, forty_love, love_fifteen, love_thirty, fifteen_all, thirty_all, deuce, first_player_adv, second_player_adv, first_player_win, second_player_win。
一開始練習的時候,可以先從前面幾個測試案例開始練習,不需要一口氣練習完所有的測試案例,等到前面的測試案例越來越熟時,就可以逐步加上後面的測試案例。
2. 先寫條件,才寫 if。先寫等號右邊的內容,自動產生等號左邊的內容。
例如:firstPlayerScoreTimes==1.if <Tab> 可以自動產生 if( firstPlayerScoreTimes == 1) { }
Tennis().val <Tab> 可以自動產生 val tennis = Tennis()
3. 熟悉 VIM
VIM 是一款強大的工具,他可以迅速地跳到指定的行數,也可以迅速的刪除括弧裡面的內容,也可以把前次做的動作重複操作。
3–1:了解現在操作的模式。
3–2:j k 不要搞混,j 是游標往下,k 是游標往上。
3–3:做完動作的時候,是否能夠自動切換到 insert mode ,或是不需要切換模式還是保留在 normal mode 上。
3–4:有些時候需要做重複的動作,善用 . 可以直接重複前一動。
3–5:control-A, control-X 是你的好朋友,可以直接把數字加1,或減1。甚至連 String 裡面的數字都可以增加。
3–6:(增加中...)
4. 了解 IDE 提供的強大功能
我使用的 IDE 是 IntelliJ,在這 IDE 裏面,我們可以利用 live templates, surround templates, file templates, Code inspections 來增加原本沒有的功能。
找時間用文章補充。
5. TDD (Test-Driven Development)
TDD 分為三個部分:
- 紅燈:新增一個測試案例。
- 綠燈:編寫剛好通過這個測試案例的產品代碼。
- 重構:將現在的程式碼重構,因為有單元測試的保護,所以不必擔心程式被改壞。
每一次的修改,都要按照 TDD 的這三個步驟來操作。
6. 其他工具
- Ace Jump:可以任意跳到畫面的任意位置,具有比 VIM 更強大的移動功能。
- Custom Postfix Templates:可以自行新增樣板。譬如說,在 Kotlin 中,輸入 firstPlayerScoreTimes==1.if <Tab> 可以產生一個 if( firstPlayerScoreTimes == 1 ){},但是不知道為什麼 firstPlayerScoreTimes >= 0.if 就不能自動產生,這時候就可以使用 Custom Postfix Templates 來自行加入客製化的樣板。
里程碑
- 第一天的測試案例只寫了三個,並且花了六分鐘才完成。
- 到了第二十天,測試案例已經可以將十三個測試案例寫完,不過這時候需要花費 21 分鐘才能完成。
- 第二十七天,21 個測試案例從 21 分鐘,進步到 16 分鐘就可以完成。
- 第四十一天,從 16 分鐘進步到 12 分鐘。
結論
最近正在讀 《The Clean Coder 無瑕的程式碼番外篇 — Uncle Bob》,在這本書的第六章-練習,也提到了關於程式開發者如何提升自我的專業技能,重點就是「練習」。雖說,練習 Kata 可能跟真實的專案有很大的不同,不過通常 Kata 是經過設計過的,所以我們可以在 Kata 中學習到其他的內容,不斷地透過練習 Kata 的每一個步驟,我們可以清楚地知道,在軟體開發之路,哪些動作是可以經由練習轉變成肌肉反應,而不需使用大腦,如此,大腦就能夠放心地思考更高層次的問題。
武俠小說中,厲害的劍客可以「人劍合一」,意思是說,每一個招式,都是透過身體的反應直接使出,而不需要透過大腦思考再處理,在瞬息萬變的戰場上,空出來的大腦,就可以用來分析對手的弱點,進而找到進攻的機會。
軟體開發也是一樣。當我們可以直接使用快速鍵,而不需要從下拉選單選擇所需要的功能時,我們就跳過了用大腦尋找功能在下拉選單的那一個位置,心裡想的內容,就可以立刻的輸入,而不需要經過延遲的時間。所以說,厲害的程式開發者可以做到「人鍵合一」。
最後,無論是什麼技術,還是需要不斷地練習,才能夠讓自己熟悉該項技術,達到職人的地步。
本篇文章如果有幫助到你,請拍手👏鼓勵我吧~ 小祕技:拍手按鈕按著可以連續拍喔。