Skip to main content

繼學vim的啟示之後,終於解掉心中的困惑

Opass
A life well lived

這篇算是上Visual Studio極速開發的課後心得吧。 在三年前,我寫過一篇文章叫「學vim的啟示」。

內容大概是記錄自己從不熟悉vim,想mastering vim,想把vim tuning到跟IDE一樣所經歷的崩潰過程。

每個學vim的使用者大概都會有一段崩潰的經歷,從入門到放棄。少數人會堅持下來,並且可以在日常生活中使用vim。我也是過來人,這三年期間,vim的日常操作沒太大問題,但心中一直有個遺憾在:「我還是不知道高手到底是怎麼達到開發如喝水般的境界。」

接下來三年我做機器、我當兵、我出社會開始第一份工作,這個疙瘩就慢慢隨時間淡忘。直到去年的時候,我看到91 Po出了他行雲流水的開發影片,心中整個一震:「這不就是我當時幻想的開發速度嗎,前輩竟然做到了!」 後來換第二份工作,從寫JS轉到寫C++,因為工作的緣故日常開發開始使用Visual Studio,便迫不及待的報名91開的「Visual Studio極速開發」,想一窺背後的秘密。這門課支援三種語言C#/Java/PHP,但多數人是使用C#開發,之前沒有接觸過C#,課前兩週還特地看微軟官網、自己試寫幾個小程式把語法弄熟,深怕上課過程會跟不上進度,浪費了報名費、害我那兩週幾乎沒有在重訓還熬夜,體重掉了兩公斤。 上完課後腦洞大開,從第一天上課台上什麼都程式都寫不出來的挫樣,回家刻意練習了一整個禮拜,到了第七天終於在22分鐘內以TDD的方式完成了Tennis Kata。 不論是技藝還是心態,這門課都給了我很大的啟發 技藝上最大的啟發是,我終於知道自己用vim的瓶頸在哪裡。 我在三年前的文章裡,寫過這麼一段話:

建立你自己的Vim,因為只有你知道你自己的需求、習慣的工作方式,這樣的練習對你才有意義

這段話基本上並沒錯,很政治正確但是沒啥意義,因為真正的問題在:「你不知道自己的需求。」 不知道需求的意思是:「你不知道你現在要做什麼」,舉一些case像是

  • 不知道自己接下來該寫什麼,於是思考會卡住
  • 不知道自己想找的檔案的位置,於是要花時間找檔案
  • 不知道自己想怎麼重構、想怎麼寫,於是花時間在打字刪除打字刪除

如果不知道自己在做什麼,就會按很多多餘的按鍵、就會開始用滑鼠上下瀏覽看code、表面上看起來很認真在寫程式,實際上只是在裝忙,因為那些行為都沒有實際的產出。 如果你很清楚你要做什麼,你就有了目標。目標越明確,就可以進行最佳化(跟深度學習一樣XD),就可以去一步一步改善,進入iteration tuning的cycle。

光是知道想做什麼還不夠,還要有能力做到這件事。也就是對工具的熟悉,知道該如何用最短的方式下vim指令,而這過程有非常多坑,當坑多到一個程度的時候,大多數人就會被困住動彈不得,放棄並回到自己熟悉的方式,就跟三年前的我一樣。

想要破坑的方法在於「看到有人真的做到了」、「了解他是怎麼做的」、「刻意練習並內化成自己的技能」 「看到有人做到了」這件事情最難,因為大多數人會被「不知道自己不知道什麼」這件事情困住!於是自己在爛泥坑打轉,想要破坑的方法在於參加社群、脫離自己日常的小圈圈、知道比自己厲害的人是怎麼做事的。

「了解他是怎麼做到的」,這件事情稍微容易一點,透過培訓或上課是最快速的方式,主動發問也是個不錯的方式,但如果發問者和實力差距太大的話,一樣會陷入「坑太深被卡住」的困境。 「刻意練習並內化成自己的技能」,這大概是最容易的了,只要花時間就可以做到了。

方法論在從籃球機看練習的重要性有提到過。但雖然說容易,沒花個數十個小時大概也是做不到的。 上完課後,我花了一週的時間,每天平日晚上練習三個小時、假日練習五個小時。第一天連環境都架設不好,第二天第三天進度崩潰的慢,花了兩三個小時一個鍵一個鍵對照他的效果、試按,連範例影片的前五分鐘都練不完。 到了第四天的時候,突然腦袋某個地方開關像打開一樣,意識到自己的問題是對TDD不熟悉,必須要以TDD的角度去看Tennis Kata為什麼要這樣寫。進步速度開始飆升,我開始能在45分鐘內完成、接下來每次練習都比之前再快一些些,在第七天,終於在22分鐘內完成。而三個禮拜前我還不會C#。

認知到「這個坑是填得起來」這件事讓我非常開心,後續要把這個技能transfter learning到C++上恐怕還要一些時間,一整個禮拜的練習過程頗辛苦,但感受到自己以穩定的速度進步這件事相當愉快。 非常感謝91大大傾囊相授,破除了我的盲點,除了學到很多技術之外,心態上也成長許多,讓我意識到「不知道自己不知道什麼」、及「該如何review自己並持續改善」,最可怕的是前輩每天都持續在進步,要達到可以把這些知識教給他人,背後要付出的努力根本不敢想像,希望有一天能看到前輩的車尾燈。 最近打算買本學徒模式來看,以前大學時看不懂,覺得這樣也可以出一本書,現在大概會非常有感吧。