💪透過專案時程壓力來練功
當我培育線上學生投入到一個我認可的階段時,我都會建議他們盡快去就職將能力培養起來。
有時候透過自學你所能涉獵的範圍有限,例如一個專案從開始到結束的過程、跨部門溝通,更重要的是程式碼也會比較全面,在公司你要做的東西絕大部分都在做別人的產品服務,在功能邏輯也會比較複雜,吸收得東西也會比較多。
那在公司執行專案確保東西能如期交付,通常都會去壓時程,例如設計師要花二天設計與跟客戶確認,網頁切版 N 天,後端套程式 N 天。在時間有限的情況下,才能督促自己提升程式開發能力。
常常會有學生問說:「老師我想用 XX 框架,你覺得我可以在下個專案上用用看嗎?」
我都會建議說想試試看都 ok,但不要一口氣在一個專案用太多新技術,以免變數太多,像我在開發新專案時,至少七成是我有把握的東西,其中三成就會是最近我吸收的新技巧,想透過專案來使用他們提升我的程式功力。在時間壓力之下,學習效果自然會被逼得更好。
當然,你要全盤投入新技術在專案上也不是不行,個人覺得在開發程式時,也是在培養一種「我就是有辦法將這個系統依照我的技術觀打造起來」的自信,在決定導入前,先把一些重要的邏輯設計先設計出一個雛形 MVP,確認 ok 就放手去幹吧。
那時程被拖延到怎麼辦呢?當然是自己加班補起來啊,如果是你自己壓得時程但自己錯估時程,本來原本技術就可以做好的事情,因為你投入新技術導致時程延宕,那就是你自己的責任。但這也能讓你培養起「瞭解自己的學習投入狀況,並評估工作時程的能力」,這樣一來在專案跑個好幾輪樣流程後,功力絕對大增。
💪適時重構,重新檢視自身不足
在公司一定會遇到時間很趕,但又必須有產出的時候。以我來說,正常開發時程我就會用我自己擅長且又正規的寫法來寫,都會考慮到程式品質與未來靈活彈性的狀況。但當時間少時,你自然會以所有功能都先有,連命名都超懶、完全不管任何品質,反正可以跑就好。雖然在時間允許之下你還是會瞬間寫出正規的 Code,但絕大部分都還是相當的骯髒。
在這過程中也是對自己能力不足的照妖鏡,你可以發現自己在哪些細節上還有待加強的空間。例如對物件導向不熟悉、或是 CSS 模組設計上的脈絡,表示你對那些東西沒有真正內化到自己的心裡。
所以在公司沒有很忙得時候,我還是會自主研究自己已經上線的爛 Code,去思考我哪裡還有進步的空間。唯有自主發現自身不足之處,才有辦法讓自己更好。