在我剛開始寫程式的時候,深切地感受到要學的東西實在太多了,尤其在課堂上學的東西跟在公司要打造產品的技能非常的不一樣,有非常多需要自學的地方。
在我剛開始實習的時候,除了看書、看文章、用線上網站練習新語言的語法,我覺得幫助我最多的就是直接練習寫一個 Side project 了。 Side project 聽起來要耗費大量精力跟時間,但只要目標明確、不要一開始就塞進一堆想做的功能,其實是可以透過動手做在短時間內增進技能跟累積作品的。
分享一些我曾經嘗試過的事情:
如果一開始就能從頭開始開發出一個獨立的網站或 App 聽起來很帥沒錯,但一開始就要自己打造全部的東西無疑是在找自己麻煩。現在網路上有非常多可以參考的資源,很多基本的功能都有文章或影片的教學。
在我剛開始學 Ruby on Rails 的時候,曾經照著 Youtube 的教學刻出好幾個不同功能的網站 - 購物車、 類似 Pinterest 的相片牆、等等。雖然只是跟著做一次,但讓我對這個語言的理解急劇的提升,對於當時實習要開發的需求,可以快速的聯想到要怎麼實作。
有些 side project 是因為有想解決的問題而開始,而我做過的不少 side project ,只是因為想熟悉新的工具而開始。記得有個暑假想熟悉 React.js 這個前端框架,給自己訂了個目標 - 在暑假結束前要用這個框架寫個小遊戲。
遊戲內容其實很單純,像小時候在掌機玩的賽車小遊戲,在時間內閃過越多的車就得到越高的分數,撞到車子的話遊戲就結束了。
於是訂下目標後就開始一邊查資料一邊做應用,從怎麼建造一個 react.js 的專案、怎麼渲染畫面、畫出每個元件、到怎麼用 javascript 寫出遊戲機制 - 判斷兩個物體碰撞、計時與算分等等,有很多細節要查找要處理,也曾經因為找不到答案而在 stack overflow 發問過。
最後把成品做出來雖然簡單,但還是成就感滿滿,對這個工具也變熟悉了,面試時也多了一個小作品可以分享。
我自己最喜歡也覺得最麻煩的就是打造一個屬於自己的應用了,因為有想完成的功能,也希望這個產應用能被長期使用,所以會比練習用的專案花費更多的力氣去思考架構、設計介面、構想內部程式碼的架構。
我曾經架過一個部落格的網站,用 Sketch 畫介面、用 react.js 刻前端頁面,用 Ruby on rails 實作後端 API ,資料庫用了 Mysql ,最後部署到 Heroku 上,這也是同一個暑假完成的專案,還把打造 react.js 汽車小遊戲的過程寫成了文章發表到部落格上。
現在回頭看,如果只是要架部落格網站,有大把可以取代的工具跟資源,自己從頭打造從時間、精力、金錢角度來看完全不划算。但是從頭走過一次是很重要的經驗,讓我有了可以自己打造產品的自信,也讓我在往後擔任的工程師職位,能從更 high level 的角度去理解現在的任務是哪個環節。
想當然在現在 Chatgpt 開啟的 LLM 時代,隨時有個 agent 提供建議,使得打造應用的門檻比之前低了不少,從工具的選擇到開發程式碼,所需的時間一定比之前少很多吧。
也許在接下來的時代,你想打造什麼應用比起你如何打造更為重要的多,設計並打造一個系統的能力也會比過去專注在怎麼用這個語言開發出一個新功能重要的多吧。