【學員上課心得】魚尾,201806 TDD 與持續重構

學員 魚尾 上完【演化式設計:TDD 與持續重構】後,突然覺得自己好像不會寫程式,也不會重構,發現了許多新大陸,被虐卻好爽的感覺。

教練,我好想趕快寫程式啊~~~

魚尾 Facebook 原文(經過排版與標示)

上週末花了兩天時間去參加了 91 主講的 『重構與 TDD 實戰營』,這門課早在三月時就已經報名了。但當時其實有點猶豫,猶豫什麼呢?早在前2年就上過TDD的課了,也不斷的在實踐,重構能力不敢說足以飛天,但跑在地上應該也是不成問題吧,但衝著 91 開的課,還是硬著頭皮報名下去了。

這兩天,完完全全被 Diss 到爆啊!!!!!

本以為是跑在地上,沒想到根本是只有在地上爬的等級 Orz

光第一天的 WorkShop ,心想列個測試案例有什麼難的?事實是,好的測試案例是經過排序且都是有目的,可以在 TDD 的過程中一步一步前進,將產品堆疊出來。

即便 Joey 再次示範後,讓我們再做另一個 WorkShop,仍然無法做完全漂亮的測試案例。

而 91 竟然可以直接拿我們 WorkShop 寫出來的爛 Code,直接重構給我們看,這種硬底子的實力絕對不是事先 Set 好的內容。而且還可以同時帶 Java、PHP、.Net 不同的語言的同學,上課時還抓出「疑,這段 Code 有換人寫哦,應該是寫 Java 來接替的。」

上完後慶幸還好當時有報名,讓我知道原來我可以如何善用我的斧頭,讓本來可能只能發揮 10% 功力的斧頭,瞬間解除封印。但重點是斧頭從木斧變成鐵斧後,使用的人也要強化自己的力量,才揮得動,這門課最重要的就是讓你知道你可以怎麼樣強化你的力量,讓你可以配得上用這把鐵斧。

這門課讓我學到3件事:

① 人生最可怕的就是你不知道你不知道:上課前我覺得 TDD、重構就是那樣了,能有什麼不一樣的嗎?上完課後的感想就是「無知是幸福的,同時也是可怕的」

② 知道不等於會:第一天的 WorkShop ,Joey 已經示範過完整的 TDD 與重構流程,晚上許多人想爭口氣重做一次 WorkShop 練習,希望能夠扳回一城。但事實上是有進步,但仍然不到如同 Joey 一般的水準。需要不斷的練習、練習、練習,才能夠變成自己的內功。

③ 天下武功、唯快不破:很多人都說開發都沒時間了,那有時間寫測試?為什麼沒時間?撇除其他你不可以控的因素外,你唯一能夠改變的就是寫 Code 的速度。當你重構一個動作可能要花一、二分鐘,而且還有可能 Complie Error,就要更多時間 Debug;而我可能只要 10秒(這算久的),我還有把握不會Complie Error。一個動作的時間差距可能就有2分鐘了。假設一個重構需要30個動作才能做完,可能需要一個小時,而我可能五分金鐘就做完了,剩下的55分鐘我就可以寫更多有效的測試來提高程式品質。

這門課非常推薦給手上還是拿著木斧,想讓木斧升級成鐵斧並強化內功的同學。

 

91 的補充

超燒腦的 【TDD 與持續重構】這梯次剛結訓,我最喜歡的照片是這一張。

每一組都陷入自己寫的 legacy code 怎麼 debug 的狀況。

這次很特別的是,有一組用 intelliJ 的 java 同學,有一組 用 phpstorm 的 php 同學,有一組最近在寫 .net core 用 Rider 的同學(嚴格來說是兩位,燈哥跟卍蟲王),其他兩組是用 Visual Studio + ReSharper。

在上課中示範了怎麼重構大家的 legacy code 以及同樣的需求如果用 TDD 開發會有多優雅,回顧時的感想,幾乎所有人都提到自己雖然有在用 JetBrains 的神兵工具,在實務上卻可能用不到它 10% 的價值。

【演化式設計:TDD 與持續重構】、【針對遺留代碼加入單元測試的藝術】、以及【極速開發】,目前也都同時支援 php, java 推進,讓更多圈子對學習這些 XP 的工程實踐能更有方法與效率。

此外,這次也有不少學員對於上課採 pair programming 跟小組感覺相當不錯,有人可以討論、可以看別人為什麼這樣寫 code,從裡面去偷學、溝通、激盪出不同設計概念的火花,是另外一份收穫。

其實在學習的時候,pair programming 真的是非常有效的方式。不管是學、教、討論、提問、表達想法,這都是極度有效的練習方式。

這會充分反應在 live demo/coding上,要能邊想、邊寫代碼、邊講,還要有趣、好懂、快,需要用對的方式,大量練習才能內化成技能的一部分。


blog 與課程更新內容,請前往新站位置:http://tdd.best/