第一個 Side Project
從挑題到上線的完整流程
90% 的人卡在「不知道做什麼」、剩下的 10% 卡在「scope 開太大、做到爛尾」。這篇拆給你看 ─ 挑題 5 準則、scope 怎麼切、4 週上線時程、跟 7 個會踩的坑。給轉職、學生、副業、indie hacker 用。
為什麼第一個 project 這麼難
原因有 3 個:
- 沒約束 → 想太多 ─ 沒人逼你做 X、結果什麼都想做、卡在「該做什麼」3 個月
- 沒參考 → 不會切 scope ─ 想做「Instagram clone」、低估了 5 倍工作量
- 沒社群 → 卡住就死 ─ debug 1 整晚沒結果、隔天放棄
這篇要幫你解的不是「寫 code」、是「挑對題目 + 切對 scope + 撐到完工」。
挑題的 5 個準則
01 你自己會用
這是最重要的準則、80% 的人忽略。
做你自己會用的東西、好處:
- 有強烈動力(看到 bug 你會想修、不是覺得「算了」)
- 知道功能該怎麼做(你自己就是用戶)
- 做完真的有人用 ─ 至少你
做你「覺得很 cool 但自己不會用」的東西、99% 中途放棄。
02 解決 1 個具體痛點、不要 10 個
錯:「我要做一個生產力工具」
對:「我要做一個自動把我每週 commits 整理成週報的小工具」
越具體越好。越具體越好。越具體越好。重要說 3 次。
03 4 週能做完
超過 4 週、99% 你會放棄。
所以 ─ 不管你的想法多 cool、切到 4 週能做完的最小版本。
想做「Discord bot 自動整理會議紀錄 + AI 摘要 + 多語言支援 + 匯出 Notion + Slack 整合」 ─ 砍掉 4 個、只留 1 個。
上線後再加。
04 牽涉 1-2 個你會的技術 + 1 個你想學的
純練學過的 → 沒進步、無聊。
全部都沒學過 → 卡關、放棄。
2 個會 + 1 個新 → 完美比例。
例如:你會 React + Node、想學「AI API 整合」 ─ 做個用 OpenAI / Claude API 的小工具、80% 時間用會的、20% 學新的。
05 能變成「放履歷拿得出手」
這個準則決定你的 project 是「練習」還是「資產」。
能放履歷的 project:
- 能用瀏覽器訪問(不是只有截圖)
- 有「為什麼這樣設計」的 README
- 讓陌生人 30 秒看懂它在做什麼
只有「跑在自己電腦上的 demo」 ─ 是練習、不是資產。
20 個適合第一個 project 的主題
如果你完全沒想法、從這 20 個挑:
① 個人記帳 Web App
輸入收支、分類、月報表。CRUD 練習王道。
② 自己的 link-in-bio 頁面
放 Resume / Project / 社群連結的個人頁。練前端 + 部署。
③ 倒數計時 dashboard
放幾個你重要的日期 ─ 生日、deadline、紀念日。練狀態管理。
④ 番茄鐘 / 專注計時工具
加上你自己想要的功能(音樂 / 紀錄 / 統計)。練時間 API。
⑤ 個人 RSS reader
抓你常看的 blog、整理成一個 feed。練爬蟲 + 排程。
⑥ 履歷生成器
填表單 → 生成漂亮 PDF 履歷。練表單 + PDF 生成。
⑦ Markdown blog(不用 framework、自己寫)
放你的學習筆記。練動態路由 + Markdown 渲染。
⑧ 待辦 + 番茄鐘整合
選一個 todo、開計時器、做完打勾。練組合多個小工具。
⑨ Habit Tracker
追蹤你想養成的習慣、看連續天數。練日期處理。
⑩ Discord / Telegram bot
定時發訊息、回應指令、整合 API。練 webhook + 排程。
⑪ AI 寫作助手(用 OpenAI / Claude API)
輸入主題、AI 給草稿。練 API 整合 + streaming。
⑫ 食譜 / 餐廳推薦
放你想吃的餐廳、可以隨機選一家。練資料庫 + 過濾。
⑬ 自動把 LeetCode 寫過的題整理成 GitHub README
抓 LeetCode 紀錄、生成總結文件。練 API + 文件生成。
⑭ GitHub stats dashboard
整理你 / 朋友的 GitHub 活動、做成漂亮圖表。練 OAuth + chart。
⑮ Currency / Exchange rate alert
追蹤匯率、超過 X 寄 email。練排程 + 通知。
⑯ Mini SaaS for niche audience
解決一個小眾的問題(攝影師找場景、譯者管理客戶)。練全 stack。
⑰ Voice-to-Markdown
錄音 → 用 Whisper API → 變成 markdown 筆記。練上傳 + AI 處理。
⑱ 自己的 URL Shortener
長 url 變短 url、紀錄點擊。練資料庫 + 統計。
⑲ Newsletter platform(給自己用)
訂閱表單 + Email 發送 + 紀錄。練 SMTP + 後台。
⑳ 你工作中真的常做的繁瑣事 → 自動化
這是最有價值的 ─ 你比任何人更懂自己工作中的痛點。
切 Scope ─ 3 步法
步驟 1:寫「完美版」
先讓自己暢想:「如果我有 1 年時間、這個 project 完整版會長什麼樣?」
列下來 ─ 不要審視自己、想什麼都列。
步驟 2:找「沒它就沒意義」的核心 1 個功能
從清單裡找出「少了這個、整個 project 就沒意義」的 1 個功能。
例:記帳 app 的核心是「輸入 + 看支出總和」。沒這個、就不是記帳。
其他(分類、報表、預算、多幣別)都是 nice-to-have。
步驟 3:上線版本只做這 1 個
第一版只做核心 1 個功能 + 1 個能讓人「看得出來這在做什麼」的 UI。
這就是你的 4 週版本。
其他功能 ─ 上線後再加、看真的有人用了再加。
4 週上線時程
計畫 + 環境建好
- 確定核心 1 個功能、寫出 1 句話描述
- 選技術 stack(建議:你會的 + 1 個新的)
- 建好 GitHub repo + README 草稿
- 本地能跑 "Hello World"
- 挑好部署平台(Vercel / Cloudflare / Railway)
核心功能完成
- 核心 1 個功能能在本地跑
- UI 醜沒關係、能用就好
- 每天 commit 至少 1 次
- 不要分心做「我順便也加 X」
部署上線 + UI 修美
- 部署到雲端、能用 URL 訪問
- UI 修一輪、不用很美、不要醜到嚇人
- 寫好 README(用我那篇 README 模板)
- 傳給 3 個朋友試、收 feedback
修 bug + 上架 + 公開
- 修 friends feedback 裡最 critical 的 3 個 bug
- 寫 1 篇文章 / Threads / LinkedIn 講你做了什麼
- 把 URL 放上履歷 + LinkedIn
- 慶祝 ─ 你有第一個能 demo 的 project 了
7 個 90% 人會踩的坑
01 卡在「選什麼 framework」
別研究 1 週「該用 Next.js 還是 SvelteKit」 ─ 拿你最熟的、開始寫。
第一個 project 的框架不重要、做完更重要。
02 拼命加功能、上線無期
每加 1 個「我順便」、上線時間 +1 週。
給自己一句口頭禪:「先上線、再加功能」。沒上線的 project 不存在。
03 UI 一定要美才上線
UI 醜沒關係。能 demo 的醜版本 > 永遠在 design 的完美版本。
推薦 ─ 用 Tailwind UI / shadcn/ui / Mantine 等現成 component library。10 分鐘讓 UI 看起來 OK。
04 不寫 README
沒 README 的 GitHub repo = 不存在。
至少寫 ─ 「這是什麼」、「怎麼跑」、「我為什麼做」。3 段、5 分鐘的事。
05 不部署
「跑在我電腦上、demo 給人看」VS「URL 點開能用」 ─ 後者價值是前者 10 倍。
Vercel / Cloudflare Pages 部署免費、5 分鐘 setup。沒理由不部署。
06 沒寫測試 + 沒設 monitoring
第一個 project 不用 100% 覆蓋率、但至少:
- 1 個測試(測核心功能)
- 1 個 error tracking(Sentry 免費版)
這 2 樣會讓你的 project 從「練習」進化成「工程作品」。
07 做完了不公開
完成 ≠ 結束。沒人知道的 project = 履歷上的死字。
上線後一定要:
- 寫 1 篇短文(Threads / LinkedIn / Blog)
- 放 URL 在 GitHub 個人首頁
- 放上履歷 + 用 1 句話描述
公開 = 別人能看見 = 機會能找上你。
最後一個提醒
第一個 project 的目的、不是完美、是完成。
完成 1 個普通的 project > 計畫 10 個偉大的 project。
做完之後、你會發現第二個比第一個快 3 倍。
這 4 週、你會發現自己變了 ─ 不是因為學了新技術、是因為「第一次把想法變成能 demo 的東西」這件事、會改變你對自己的認知。
一旦你做出來過 1 次、你就知道你能做出第 2 次。
這是工程師最大的 unfair advantage。
挑題 / 切 scope 卡住?想要有人 sanity check?
30 分鐘 1-on-1 諮詢 NT$1,500 ─ 講你的想法、我幫你切到 4 週能做完的版本、給你具體技術選擇建議。