還記得第一天開始學習後端時,可能只想知道 Node.js 是什麼、後端工程師平常在做什麼,以及自己能不能寫出一支 API。
一路走到今天,從建立第一個伺服器、使用 Express 開發 API,到操作資料庫、處理登入驗證,再接觸 Docker 和 AI Coding,原本看起來各自獨立的技術,慢慢有了彼此之間的關聯。
這 30 天並沒有讓人一口氣學會所有後端技術,但透過一次次的練習,已經能逐步理解一個功能從需求、實作到測試與部署,需要考慮哪些事情。
最後幾天接觸的 AI Coding,也讓人重新思考,當 AI 能協助撰寫程式時,開發者該如何運用已有的知識,讓開發過程更有效率。
這篇就來回顧這段學習歷程,整理一路累積的觀念,以及接下來如何把它們運用在自己的專案裡。
剛開始學習後端時,最直接的目標就是讓程式跑起來,能接收請求、處理資料,再把結果回傳給前端。
從 Node.js 的基本概念開始,逐步建立第一個 HTTP Server,接著使用 Express 簡化路由與請求處理,慢慢做出 GET、POST、PATCH、DELETE 等 API。
當功能越來越多,也開始透過 Router 整理程式結構,使用 Middleware 處理共用邏輯,並加入資料驗證和錯誤處理,讓 API 面對不同的輸入時,都能有預期的回應。
當程式開始處理真正的資料,就會遇到另一個問題:資料應該怎麼保存,才能確保後續的操作正確?
於是,學習範圍逐漸延伸到 SQL、PostgreSQL 和 ORM,了解如何透過程式操作資料庫,再使用 Migration 管理資料表的變更。
當一個功能涉及多個資料庫操作時,還需要考慮 Transaction,避免部分操作失敗後,資料停留在不一致的狀態。
接著,當功能開始涉及使用者,就需要處理密碼與身分驗證。透過 bcrypt 處理密碼雜湊,使用 JWT 建立登入驗證流程,再利用 Middleware 確認請求者是否通過驗證。
不過,身分驗證和權限控管仍是不同的事情,確認使用者已登入,不代表他就能存取所有資料。
最後,當 API 和資料庫逐漸串接起來,學習範圍又延伸到 Docker、Image、Container 和 Docker Compose,開始理解如何管理應用程式的執行環境,以及 API 與資料庫等服務之間的關係。
回頭看這些內容,就會發現後端開發不只是把 API 寫出來,而是要讓請求處理、資料操作、權限檢查和執行環境彼此配合。
一開始只想讓程式正常運作,後來才逐漸理解,一個完整的功能還有許多需要考慮的細節。
當 AI 開始進入日常開發,寫程式的方式也跟著改變。
遇到不熟悉的語法,可以請 AI 協助解釋;需要新增功能時,也能請它產生程式碼。但實際使用後會發現,AI 不一定每次都能正確理解需求,有時候還會順手修改其他程式,或是產生看起來合理、實際上卻有問題的實作。
因此,除了告訴 AI 想完成什麼,也需要提供足夠的專案背景,讓它知道目前的程式架構、開發規範,以及哪些地方可以修改。
從 Prompt 和 Context 的差異,到使用 AGENTS.md 等專案指引,逐漸學會把原本零散的交代,整理成更清楚的開發任務。
不過,就算 AI 已經理解專案,也不代表寫出的程式一定正確。這也是為什麼最後幾天開始接觸測試,讓 AI 根據需求建立測試案例、實際執行測試,再從失敗結果找出問題並修正程式。
例如,當搜尋 API 找不到預期的筆記時,可以要求 AI 分析測試結果,找出程式與需求之間的落差,再修正實作並重新驗證。
這個過程不能只看 AI 是否回報測試通過,還需要確認測試案例是否合理,以及它有沒有為了讓測試通過而改掉原本正確的預期。
當專案逐漸變大,管理 Context、限制修改範圍、拆解任務和減少不必要的輸出,也能降低反覆溝通與修改的成本。
這些做法看起來是在改善 AI 的使用方式,實際上也是在建立一套更容易檢查、重複執行和持續改善的開發流程。
AI 可以幫忙產生程式碼,但需求是否清楚、設計是否合理、驗證是否充分,仍然需要開發者做出判斷。
學會使用 AI,不只是知道該怎麼下指令,也包括知道怎麼確認它交付的結果。
學過這些技術之後,最重要的不是記住每個工具的用法,而是遇到實際問題時,知道該從哪裡開始思考。
假設今天要開發一個筆記管理功能,讓使用者可以新增筆記、查看列表、修改內容和刪除資料。拿到需求後,不必立刻開始寫程式,可以先確認功能範圍、資料需要保存哪些欄位,以及不同操作應該如何與 API 對接。
接著規劃 API 和資料結構,決定路由如何安排、輸入需要哪些驗證,以及資料庫應該如何存取。
如果功能涉及使用者登入,就需要考慮身分驗證與資料權限;如果某個操作包含多筆必須一起完成的資料庫變更,也要評估是否需要使用 Transaction。
實作時,可以讓 AI 協助撰寫程式,但要先提供相關的專案背景,並清楚說明修改範圍。
完成一個階段後,再透過測試檢查結果,確認 API 的回應、資料庫中的紀錄和實際需求是否一致。如果測試失敗,就根據錯誤訊息找出問題,再修正並重新驗證,而不是直接假設 AI 已經完成任務。
當功能逐漸完整,還需要確認專案能否順利啟動、環境變數是否設定妥當,以及資料在容器重新建立後能否持續保存。
最後整理啟動方式和必要的專案文件,讓其他人也能依照說明執行。
整個過程不一定每次都要完全按照固定順序進行,也不是每個小功能都需要用到所有技術。真正重要的是,當需求變得複雜時,能逐步拆解問題,判斷需要哪些工具,以及如何確認最後的結果符合預期。
這也是前面 30 天的學習逐漸串起來的地方。Node.js 和 Express 負責處理請求,資料庫知識幫助正確管理資料,驗證與錯誤處理讓功能更完整,Docker 協助管理執行環境,而 AI Coding 則能協助完成其中一部分工作。
當這些能力搭配起來,就能更有方向地開發一個完整的功能,而不是只把程式碼拼湊在一起。
30 天的學習,能讓人初步認識後端開發的主要環節,但要真正熟悉這些技術,還是需要透過實際專案反覆練習。
接下來,可以試著把前面學過的知識放進一個完整的小作品,例如筆記管理系統。從需求規劃開始,逐步完成 API、資料庫、登入驗證、測試與部署,再利用 AI 協助實作、檢查和修正。
當功能逐漸完整,也能更清楚看見自己還有哪些不熟悉的地方,可能是 SQL 查詢與效能優化,也可能是權限設計、系統架構,或是如何讓 AI 更有效率地協助開發。
這些都不需要一次學完,可以從實際遇到的問題出發,再決定下一步要補足什麼知識。
學習的下一階段,不一定是認識更多工具,也可以是把已經學過的東西用得更熟練。
當開始能獨立規劃一個功能、選擇適合的實作方式,並且透過測試確認結果,就已經比單純照著教學複製程式碼更進一步。
回頭看這 30 天,從認識 Node.js、建立第一支 API,到學習資料庫、登入驗證和 Docker,最後再把 AI 加進開發流程,原本看起來零散的技術,慢慢有了彼此連結的方式。
現在可能還無法獨立處理所有複雜的後端問題,也不代表每項技術都已經學會,但至少開始知道一個功能背後有哪些事情需要考慮。
遇到問題時,也能嘗試拆解需求、查找資料、動手實作,再透過測試和修正逐步改善。
更重要的是,當 AI 可以協助寫程式,理解需求、判斷問題和驗證結果的能力,依然有它的價值。工具可以幫忙加快開發,但真正理解自己正在解決什麼問題,才能決定接下來該怎麼做。
這 30 天不是學習的終點,而是開始有能力自己動手做出一個後端專案的起點。
接下來,就帶著這些基礎繼續往前走,從理解別人的範例,到完成自己的作品,再從一次次實作和修正中,慢慢累積屬於自己的開發經驗。