每個工程師都有一個 Side Project 夢
如果你是工程師,你八成有過這樣的想法:「這個東西市面上做得不好,我自己來做一個好了。」
然後你打開 VS Code,新建一個專案,滿腔熱血地寫了幾個小時。
然後⋯⋯就沒有然後了。
Side Project 的墳場裡躺著無數個「下次再繼續」的專案。我也不例外。但這一次,我決定認真把它做完。
起點:解決自己的問題
做 Side Project 最好的出發點就是解決自己的問題。
對我來說,那個問題是:每次需要壓縮圖片、轉換 PDF、格式化 JSON,都要打開不同的網站,有些還要註冊帳號,有些廣告多到讓人崩潰。
「為什麼不能有一個乾淨、免費、什麼都能做的工具箱?」
這就是起點。
技術選型:不要花太多時間在這裡
這是很多人會卡住的第一個關卡。React 還是 Vue?Next.js 還是 Nuxt?用什麼 CSS 方案?
我的建議是:用你最熟的技術。Side Project 的目的是做出來,不是學新框架。
我最後選了 Next.js + TypeScript + Tailwind CSS,因為這是我最順手的組合。資料庫用 Firebase,部署用 Vercel。都是免費方案就能跑起來的東西。
撞牆期:每個專案都有
做到第三週左右,熱情開始消退。核心功能做得差不多了,但還有一大堆瑣碎的事情:
- RWD 適配
- 多語言支援
- SEO 優化
- 錯誤處理
- 使用者回饋機制
這些事情不酷也不好玩,但少了它們,產品就不完整。
撐過撞牆期的方法只有一個:把大任務拆成小任務,每次只專注完成一個。今天做完一個語言的翻譯,明天處理一個頁面的 RWD,後天加一個小功能。
關於完美主義
Side Project 最大的敵人不是技術難題,而是完美主義。
「這個動畫還不夠流暢」「這個排版還可以更好」「等我加完這個功能再上線」——這些想法會讓你永遠上不了線。
我的原則是:能用就上線。上線之後再慢慢改。
第一版上線的時候只有不到 20 個工具,介面也很粗糙。但重要的是:它上線了,有人在用了。
意外的收穫
做 Side Project 最大的收穫不一定是專案本身,而是過程中學到的東西:
- 全端能力提升:從前端到 API 到部署,全部自己來
- 產品思維:開始會想使用者需要什麼,而不只是技術上能做什麼
- 寫作能力:為了 SEO 和使用者引導,開始認真寫文章
給想開始的人的建議
- 從解決自己的問題開始,不要為了做而做
- 用熟悉的技術,Side Project 不是學習新框架的時機
- 設定一個上線日期,逼自己在期限內完成 MVP
- 不要等到完美才上線,先上線再迭代
- 分享你的進度,在社群媒體上記錄,會有意想不到的鼓勵和回饋
- 享受過程,如果做得不開心,那就失去意義了
旅程還在繼續
Side Project 不是一個「做完就結束」的事情。上線之後才是另一段旅程的開始——修 Bug、加功能、優化效能、聽使用者回饋。
但每次看到有人真的在用你做的東西,那種成就感是上班寫的程式碼給不了的。
如果你也有一個想做的 Side Project,現在就開始吧。不用等到準備好,因為你永遠不會覺得自己準備好了。