分類
courses

Classic TDD by Example

光看《Kent Beck 的 TDD by Examples》是否覺得只得到了一堆知識點,卻仍不知道如何落實到自己的實際工作上呢?只有 Java 與 Python 的 Part 1 + Part 2,感覺這樣做都很正常,但這樣做是為了什麼,有什麼好處,實際工作真的會這樣做嗎,感到疑惑呢?

Classic TDD by Example

需求解析、測試驅動開發、從重構到設計(無限次、無限期影音播放)

跟各位同步一個讓人興奮的消息,我正著手準備透過設計題目,從需求分析、驗收情境探索、搭配大量的實戰演練以及解說,預計錄成影音版的培訓內容,讓購買的學員能無限次的觀看以及反覆練習。

我將從一個需求開始,從需求到完成整個 TDD 開發過程,全程解說與示範,在每一步為什麼我們選擇這麼做,該怎麼做。

這是一門相對不適合實體培訓的內容,因為實戰演練的篇幅極長(取決於不同語言,大約 140~160 個 commits,目前 TDD與持續重構 2 天的課程內容 commits 數約 60),如果是實體培訓,可能會參加的學員能力的落差,導致上課的節奏不好拿捏,而一旦中間放棄了,後面就會放空了。而這樣的效果不是我要的。

我希望這樣大量實戰演練的過程,能讓大家一步一步動手跟著做,甚至養成一種習慣,想收收心、想靜靜心、想動手寫寫程式的時候,能打完一整套的套路,感到舒服、平靜,甚至刺激出新的想法。(我自己在一個語言中起先練習的 10 次,每次版本都不一樣)

如果你對這樣的影音課程有興趣,就來填一下這個 google form 吧,你將會在課程準備好時,第一時間收到通知,前 10 位購買的同學,我將提供其他優惠。

這份表單僅為訂閱通知的目的,而非購買的順序或填表單一定要購買:https://forms.gle/19u7WNk5TEeWWycM8

準備這門課的原因

這並不是一門把原本實體培訓課程內容,變成影片販售的形式。而是反而要用影片反覆觀看、練習,才能達到對應效果的內容。

會準備這門課,主要基於下列三個原因:

  1. 有海外的朋友因為疫情跟差旅的關係,想上課卻苦無機會。而我目前課程內容方式的安排,得實體上課才會有最好效果。我不希望只是為了擴大收益,而犧牲了培訓效果。實體培訓 > 線上直播 > 影音,如果上課的形式不變,那連線上直播的效果都過不了我的標準要求。
  2. 今年的培訓日期都已經定下來,每個梯次也都已經額滿了,我其他時間已經全被 企業客戶的 coaching 包下來了,所以也擠不出時間來安排培訓。但我又真心覺得,早一年、早半年、早幾個月,能早點學到東西,可能就可以幫大家的開發人員職涯曲線,斜率整個增大,能為各位帶來的效益,提早一點時間學會,就能多獲得許多成果。我的時間有限,要能滿足更多想上課的朋友,我得做點嘗試。
  3. 我一直想設計這樣「大幅、巨量演練」的培訓課程,但限於現在支援的語言越來越多,實體上課的時間兩天塞在週末,已經會造成一般上班族週末沒得休息的負擔,學員數一多,大家能力落差不同,會導致上課節奏難以掌握。很多前置技能的不熟悉,也會影響演練的速度。

所以,我想這種培訓內容,最佳形式是屬於這樣可重複觀看、練習、提問、更新的影音解說與示範的培訓。

以上三點,是我準備這次內容的最主要緣由,感謝許多有興趣的朋友的響應,我會依據大家填寫的語言統計數據,來決定影音課程的優先順序。(對,不同的語言,我都會錄成不同的版本,盡可能滿足大家在實作演練過程中,降低認知負擔)

影片相關說明 Q & A

  1. 授權僅限本人觀看,不限制裝置,無限期,無限次觀看影片。不依賴於平台,將直接提供影片下載連結,所以請不用擔心在平台上下架的問題。
  2. 購買將採實名驗證,影片將壓上購買人相關個人資訊浮水印。影片、程式碼內容等,未經本人授權,不得於公開場所、平台觀看,不得擅自販售、分享、散佈、擷取圖片或影片片段侵害作者權益等行為。請購買人妥善保管影片,以保護雙方權益。
  3. 不同程式語言,將錄製成不同版本的影片,購買是分開購買的,屆時加購其他語言的方式,肯定會有其他折扣或組合包。
  4. 企業授權方案研擬中,預計採時間訂閱制,而非算人頭的。歡迎有興趣購買影片做企業內訓的朋友來信洽談。(joeychen@odd-e.com)
  5. 定價標準:肯定會跟實體課的定價標準一致,因為這是為了上個段落那三個原因所設計的課程,內容不比實體課差,一樣的內容效果會比實體課好,何況還能無限次觀看。所以請懷抱著影片課程/線上課程 = 要更便宜 的朋友,可以跳過了。
    • 因為等同於實體培訓,所以仍有老鳥票等票種優惠。購買影片課程的朋友,當然也享有實體課程老鳥票的資格。
  6. 未來影片若有更新內容,已購買者將不額外收費,即可獲得更新版的影片。
  7. 對於影片與練習過程中,有任何疑問,我將準備適合的平台,供大家可以發問與交流,我也會盡我所能抽空回答大家問題。

課程內容的差異

有同學問到,這跟 TDD與持續重構 培訓主要的差異在哪。

TDD與持續重構,因為實體上課,會有比較多需求解析、引導思考、大家先透過自己實作需求,我再 live 重構大家產出的 legacy code 給大家了解重構是怎麼回事。 最後再用 TDD 的方式,重來一次這個需求的解析、測試案例探索與開發。

了解整個來龍去脈、context 與脈絡,重構大家剛寫出來的 legacy code ,了解重構上才會更有感覺,透過實體的引導讓大家知道,平時開發的盲點、對需求的理解,所產生的問題,原因是什麼,可以怎麼改善。這是 TDD 與持續重構的重點。

而影片的部份,是大量的實作。主要由我示範(當然,因為影片嘛),我一樣會解說、解析,我拿到一個需求之後,該做哪些事,可以用什麼方式來進行,然後一路 TDD 完成整個大需求。

影片中的重構,是 TDD 中的重構,主要為了 development to design。而實體課中的重構一大部分,是讓大家知道大量的 legacy code 該怎麼重構,而不是重寫。

所以,如果你有上過 TDD與持續重構 的話,大概就是第二天下午的示範,然後篇幅跟長度 放大 4~5 倍,並花比較多時間關注在「開發過程」。

這門課更偏重在需求拆解跟 TDD 的過程,而非 legacy code 的測試與重構,那已經有對應的培訓內容了,我不想互相重疊。

課程設計的題目

保證跟我目前所有的培訓內容不會重複,也不會是 Kent Beck 《TDD by Examples》 上面的題目。TDD 過程中,會透過重構來額外抽出 class/interface,也會帶到一些 refactoring to design patterns 的實際演練。

當然,也會同時提供完整的 commit history 提供同學方便參考與重複練習。(預計將採 private repository,禁止 fork 的形式,也請各位不要直接公開相關的 commits)

影片課程中不會提供額外的作業或題目練習,但在課程討論的平台或頻道,我會希望能再多提供一些題目給大家練習和交流,但這不在影片中,而是更像課後交流。

上課的能力要求與準備

因為這是手把手帶著大家從無到有,從需求說明解析,到開發完成的完整影片。所以只要你寫過程式,願意發問,我不覺得會有任何「吃力」或「跟不上」的情況。

事先準備的部份,我是覺得只要有電腦、螢幕、喇叭、網路、IDE就夠了。真要說,就是要願意發問,有不確定的、疑惑的、不懂的、聽不清楚、看不清楚的,就問。

真要說的話,我覺得整個學習過程,肯定是要在每個段落暫停影片,然後跟著演練,然後思考下一步應該怎麼做,接著才再播放影片。

然後跟著練完一遍,我相信你肯定會找時間再看一遍,再練一遍。接著你肯定會試著不看影片,自己練一遍。

相信我,每次的練習都會有不同的收穫,因為你會嘗試著不一樣的順序、方式來實現這個需求,有時候後面幾次嘗試的路線,可能走不下去,也會因此獲得新的啟發。至少我的每一次版本幾乎都不一樣,但光自己練習的過程,可能就得花掉半天~一天的時間。

其他

首先,我會依據大家填寫表單中的程式語言,來決定我錄製影片的優先順序。因為我也不是什麼語言都會,所以可以想見的幾個語言,肯定優先序會排比較後面。例如 Go, Objective-C, C/C++, Swift,還請大家見諒。

可以的話,我也希望可以 host 線上的直播分享或 coding dojo 等形式,提供夠購買人一同參與,我們可以挑不同的題目一起線上 pair,也可以一起討論大家在學習上或實務上碰到的問題。

影片的製作呢,說真的,我不是這麼專業,目前大致上就是類似上回這樣的影片示範:

然後中間會岔出去做一些需求、設計等相關說明,不會一路只開著 IDE 一直 coding 下去。

在操作上或是關鍵概念上,如果可以,我會盡量加上文字說明,但肯定不會整支影片都上字幕。看不懂、聽不懂、不會做,就問。打死都不想發問的朋友,請千萬不要購買,因為這樣學習效果肯定不好。

最後,因為這是我的新嘗試,我會讓購買這個影片課程的人,未來在各式各樣的線上或實體活動中,獲得更大的優惠或特權。

我對購買人的建議

這些人不要買

  1. 如果因為影片課程的屬性,而只期待著課程費用要比較低的朋友,建議不要買。
  2. 只想看影片,不想打開 IDE 跟著練習 coding 的,建議不要買。不要浪費時間浪費錢,你只看食譜也無法學會煮菜,只看游泳的影片也無法學會游泳的。
  3. 看不懂也不想發問的人,不要買。因為這樣誰都幫不了你。
  4. 不想要自己相關資料被壓浮水印在自己購買的影片上的人,不要買。有壓你個資的影片,只有你跟我擁有。而你的個資只會在影片上使用,不會挪作他用。(確定的是,上面不會有身份證字號或護照號碼)

哪些人合適

  1. 因為時空因素(例如人在國外或外地、因為疫情、因為週末時間得陪伴家人,只有深夜才能擁有自己時間的朋友),無法參加我的培訓,但又很想突破自己能力瓶頸的朋友,至少我很肯定你可以從中先獲得工作上有幫助的內容。
  2. 不想等那麼久才能上到實體課,怎麼報名都只能排在等待清單,要等到啥時才可以變強啊啊啊啊啊… 的朋友。畢竟我 2021 年的所有課,在一月份就已經全數額滿了。
  3. 喜歡反覆觀看影片學習、動手練習,能從反覆複習的過程中,獲得最大學習效果,獲得不同想法刺激的學習模式的朋友,這一次的影片絕對可以滿足你的學習方式。

    甚至我覺得,即使不是這種學習模式的朋友,大概也避不掉得反覆看、反覆練習好幾遍,因為要行雲流水,得各環節都打通才行。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *