先用兩分半看完這一年。動畫和文章裡的背景插圖是 AI 生成的示意圖(Codex),主角是 Q 版的我;動畫裡用白框框起來的,是實拍照片和實際畫面;旁白是 AI 語音(Gemini TTS)。
先講一個背景:2025 年以前,我幾乎不會寫程式。 我寫過的東西,只有一個 Pygame 小遊戲,和大二上第一次串接 LLM 的 LINE Bot;GitHub 也是那時候才第一次碰,而且還不太會用。
這篇要講的,就是這樣一個人,怎麼在一年之內,走到能讓一隻 30 公斤的機器狗自己建地圖、自己走路。
12 月,我在日記裡寫了一句話:
前半年跟後半年實習後的成長速度,完全不在同一個級別,感覺有五倍的速度。
寫完這句我自己也愣了一下。2025 年初,我還在跟著網路教學做 React 小專案;到了年底,我在客廳裡用程式讓一隻 30 公斤的機器狗站起來、坐下、自己走路。中間發生的事情多到我到現在回頭看,都還是覺得很不真實。
這一年我最大的體悟是:變強絕對不是突然變強,而是一步一步累積。 在累積的當下,你不會知道自己變得多強;要等到半年、一年後回頭看,才會發現自己已經走到以前想都沒想過的地方。
所以這篇就是那個「回頭看」。
2025 年的 GitHub 貢獻:2024 年整年只有 73 次,2025 年是 2,215 次(約一半來自私有 repo)。
把年初和年底的我擺在一起,差別大概是這樣:
| 2025 年初 | 2025 年底 | |
|---|---|---|
| 做過的東西 | 一個 Pygame 小遊戲、一個 LINE Bot,跟著教學做貪吃蛇 | 實習負責的功能全部上線,還有一個 AI 辯論平台 |
| GitHub | 2024 年整年 73 次貢獻,剛學會用 | 2025 年 2,215 次貢獻,第一個破十星的 repo |
| 後端 | 沒碰過太多後端和 API | 自己開 API,拆成 Repository、Service、Types 三層 |
| 機器人 | 完全沒有機器人開發經驗 | 在 ROS 2 上讓機器狗站起來、建地圖、自己導航 |
起點:2025 年以前,我幾乎不會寫程式
先交代一下起點。
2024 年以前,我是完完全全的程式新手。唯一的經驗是 Python 課比較認真,用 Pygame 做了一個類似 Chrome 小恐龍的遊戲。大一下的網頁課第一次碰 HTML 和 CSS,我的第一個網站背景是一張芙莉蓮的 GIF,現在想起來有點好笑,但我就是從那時候開始覺得:程式基本上跟魔法沒有兩樣,可以做出很多原本做不到、很酷的東西。
大二上,我第一次碰到 GitHub,但還不太會用。同一個學期,我做了第一個串接 LLM 的 LINE Bot,第一次用 PHP 連資料庫,也第一次為了部署吃了 Cloud Run 一堆苦頭。那時候的我,還完全不知道一年後會在做什麼。
1 到 3 月:寒假自學,到第一個 RAG

寒假的時候,我決定認真學 React,替自己訂了一份「網站學習計畫」:
- 先把 JavaScript 和響應式網頁打好基礎。
- 跟著教學做 React 小專案:貪吃蛇、圈圈叉叉、翻牌記憶遊戲,開始理解「元件」是什麼。
- 第一次碰 TypeScript:一開始覺得型別很麻煩,後來發現真香。
- 開始買程式書:這個習慣一直延續到現在。
2 月,我開始做第一個完整的 React 專案 SoulNet,一個用 React、Firebase 和 Cloudflare R2 做的社群平台。這個專案讓我從「會寫 React」變成「能用 React 做出一個完整的產品」。
3 月,「系統分析與設計」這門課,我們做了 EchoMind:一個專門給輔大資管同學用的 AI 學習助手。我們把 42 門課的修課經驗和系上規定整理成知識庫,用 RAG 先檢索、再讓模型回答。這是我第一次從頭到尾做出一個完整的 LLM 應用,也是從那時候開始,我才真正感受到 LLM 的潛力。3 月也是我上半年 GitHub 貢獻最多的月份。
也是在 3 月,我偶然看到大公司在招實習生,才第一次知道:原來像我這樣的學生,也可以投履歷。 第一次投,我只投了兩間。
4 到 6 月:收尾,然後拿到第一個 offer
4、5 月主要在把大二下的專案收尾。
6 月,我收到了一家新創的前端實習 offer。那間公司要的技能,React、TypeScript、Firebase,剛好就是我這半年一個一個練起來的東西。那一刻我才發現,寒假那份看起來很普通的學習計畫,原來一直在替這一天鋪路。
老實說,6 月其實有點倦怠,GitHub 貢獻是全年最低的 38 次。但也就是在這個低點之後,下半年整個加速起來。
7 到 12 月:第一份實習

7 月初,我正式開始實習。職稱是前端,但實際上畫面、API、資料庫、Cloud Functions 都要自己處理,比較像全端。實習生和正職走的是同一套流程:確認規格、開發、在測試站驗收、code review、上線、demo。我負責的功能,最後全部都有上線。
7 月下旬,我也開始用 Obsidian 每天寫日記。這大概是我今年做過最正確的決定之一,這篇文章裡很多細節,都是從那時候的日記裡翻出來的。
第一週:從一個小提示開始
第一個任務很小:在創作者頁面加上社群帳號的認證提示。同時學的是事件埋點,也就是怎麼記錄使用者在網站上做了什麼,產品團隊才能用數據判斷改版有沒有用。任務不大,但這是我第一次改一個「真的有人在用」的產品。
註冊導覽:從 7 步改成 5 步
7 月底,我接到第一張大單:把新使用者的註冊導覽流程,從 7 步簡化成 5 步。
問題比想像中複雜。 舊的程式有兩個版本同時存在,前人做到一半的重構沒有收尾;三種建立個人頁面的方式(自己建、用 AI 生成、從外部連結匯入)的邏輯散在各個地方。
我的做法是先考古、再動手。 我先逐一盤點舊程式,確認哪些還在用、哪些已經沒用了,再把三種流程收進同一個主控元件,讓表單狀態集中管理。現成的進度條元件接不進舊程式,我就自己寫了一個輕量的版本。整個改版包含創作者類型選擇(手機版可以左右滑)、模板選擇、個人檔案和社群連結、完成頁、中英雙語,還有事件埋點。
主幹做了 4 天,從接單到正式上線大約三週。
那幾天其實很痛苦。我在日記裡寫:這張單真的卡太久,卡了四天,有點進度壓力;隔天又寫:被 CSS 搞到瘋掉。實習剛滿一個月的時候,我寫下的是:體感真的像兩三個月。
學到的事:
- 接手舊系統,讀程式的時間比寫程式多是很正常的。
- 修 CSS 要先找父層,把多餘的寬度和間距拆掉,再用 flex 重新拼回去。
- 最重要的是心態:我從「依賴 AI 幫我寫」,變成「先讀懂程式碼,再用 AI 加速」。
AI 可疑帳號審核:第一次把 AI 接進真實的產品
8 月,平台上出現大量詐騙帳號,人工審核和關鍵字封鎖都跟不上。
第一版是我做的:用 n8n 把新帳號頁面的文字抓下來交給 LLM 判斷,再把結果接回後台的待審清單。我替每一版 prompt 記錄結果,用 150 多筆測資一版一版比,最後第 3 版的表現最好。
後來詐騙開始把內容藏進圖片和外部網址,只看文字就抓不到了。資深工程師用 LangGraph 重做了判斷流程,加上圖片判讀和網址截圖;我負責把新的判斷結果接回後台,做分類列表、封鎖/解封和批次操作。因為當初兩邊是用固定的資料格式對接,換成第二版時,我這邊幾乎不用改。
這段讓我第一次體會到:把「人」和「AI」的分工流程做順,往往比單純追求模型準確度更有用。
商品評論:第一次自己寫後端
9 月下旬開始的商品評論功能,是我第一份要自己建 API 的工作:創作者可以在個人頁展示商品評論,還能釘選、精選和搜尋。
在這之前,我幾乎沒寫過後端。9 月中,我還在日記裡抱怨手上的單「比想像中多太多了,主要是沒碰過太多後端和 API」;兩週後,我寫下:今天第一次寫全端的單,包括自己開 API,還有前後台要串接。
一開始我把所有邏輯都寫在一支 API 裡。資深同事提醒要分層之後,我把它重構成 Repository、Service、Types 三層,資料夾怎麼命名也是自己決定的。我開始用 Postman 測 API;Firestore 的多欄位篩選加排序需要建複合索引,我在這個規則上卡了將近一個月。
另一個踩到的坑是資料寫入的時機:一開始表單一改就直接寫進資料庫,後來才改成先暫存、按下儲存才寫入。這讓我學會把「畫面上看到的內容」「還沒存的修改」和「正式的資料」分清楚。這個功能在 10 月下旬 demo 通過。
我怎麼變的
回頭看這半年,改變最大的不是學會了哪個框架,而是:
- 從實現功能,到思考架構:以前只想著「會動就好」,現在會先想分層、命名和之後好不好改。
- 從依賴 AI,到駕馭 AI:先讀懂,再讓 AI 幫我加速。
- 從寫給自己看,到寫給團隊看:code review 讓我知道,程式碼是寫給人讀的。
我在 8 月底的日記裡寫過:七八月被社會毒打過後,才知道學生時期的悠閒有多珍貴。但也是被毒打過,才長得這麼快。
8 到 9 月:用實習的錢,買了第一台 3D 印表機

8 月底的專題討論,我們決定往 Arduino 加 3D 列印的方向延伸。隔天,我就用暑假實習的錢,買了人生第一台 3D 印表機。
9 月初列印機到貨,和朋友一起組裝、印了幾個小工具和第一個模型。那時候我寫下了一句話,後來幾乎變成我整個下半年的方向:不用侷限於前端工程師,成為軟硬體都會的工程師。
9 到 12 月:選了一隻機器狗
系上只給兩個選項
9 月要決定專題題目。系上一開始只給了兩個選項,我覺得自由度被限制住了,所以把可能的載具都比較了一輪:
| 選項 | 開發條件 | 結論 |
|---|---|---|
| Ray-Ban Meta 眼鏡 | 沒有開放的 SDK,只能透過手機間接處理 | 限制太大 |
| Kebbi Air 機器人 | 有 SDK(Android/Unity) | 第一階段先選它 |
| Rokid AR 眼鏡 | 沒有前置鏡頭 | 沒辦法感知現實 |
我當時寫下的想法是:把機器人當作「感測器和動作的媒介」,運算交給電腦。這其實就是後來整個架構的雛形。
9 月底,我在會議上提出一個很大膽的組合:Kebbi、Go2 機器狗,再加上 3D 列印。10 月初,我找教授談了三個小時,教授答應幫忙借一隻 Go2。10 月中和廠商開會,發現與其空想,不如趕快借狗來實測。
10 月底:30 公斤的機器狗

10 月底,專題定案,我們去把機器狗領回來。我在日記裡只寫了幾個字:超重,30 公斤。
但真正重的不是狗,而是那時候的我,完全沒有機器人開發經驗。同一週,我白天要讀作業系統的課本、修實習的單,晚上再自學 ROS 2 和 Isaac Sim。

實拍:剛借到、還躺在原廠箱子裡的 Go2。
我們借到的是 Go2 Pro,不能直接走教育版的官方開發流程,所以我在 WSL2 上建 ROS 2,用開源的 go2_ros2_sdk 透過 WebRTC 連線。月底,Isaac Sim 模擬器和 SDK 都編譯完成了,但一啟動就因為 Nav2 的錯誤失敗。
11 月:第一次讓它站起來

11 月初,模擬器裡的 Go2 第一次動了起來。幾天後,我第一次用 SDK 讓真正的機器狗站起來、坐下。接著卡了好幾天,它就是不肯照指令移動,最後才發現是平衡模式沒有打開;打開之後,我終於可以用電腦控制它走路。
這段時間我在日記裡寫:機器狗開發完全超出我的知識領域了,心裡還有一點小焦慮,到底做不做得出來。光是在 Mac 上連到 Go2,就花了兩個多小時;有一天我 debug 了整晚,最後寫下的是:debug、寫 code、再 debug,無限循環,過程中會變得更強。
中間專題題目也改了好幾次:從心理陪伴、拿掉導航,到「智慧尋物」、把導航加回來。
11 到 12 月:導航,一路卡關
導航是下半年最硬的一塊:
- SLAM 可以用了:狗終於能在客廳裡建出地圖。
- Nav2 第一次讓狗自己走:但透過 Wi-Fi 的延遲大約 700 毫秒,還會掉封包,煞車不及、輕輕撞到牆。
- 把網路重新接過:光是雙網卡的問題就花了三天,我在日記裡寫「真的好難」。搞定雙橋接網路之後,Windows、Mac 的虛擬機和 Go2 終於能互相連通。
- 一個錯誤追三個小時:最後發現是 ROS 2 背景程式的快取在搞鬼。
- 第一次自主繞行:但純視覺的方案,成功率大概只有五到六成。
- 年底,語意尋物的 MVP 完成。
12 月中,我終於在日記裡寫下:今天算是正式走出過去一個月的痛苦建設期,開發越來越順。
我在 11 月底的日記裡寫:每天開發都會遇到各種問題,但也覺得成長速度更快了。另一天則寫:超累,但也蠻好玩的,挺自虐。
同一段時間,我還做了 Web 程式設計的期末專題 DebateAI:讓兩個 AI 為同一個題目辯論,順便把 LangGraph 摸熟。有一天,我下午做 DebateAI、晚上接著做機器狗,我在日記裡寫:真的累死。
年底:第一個破十星的 repo
12 月底,專題的 repo 拿到第 11 顆星。我在日記裡寫:只有兩個人是認識的。
11 顆星不多,但那是我第一次有「陌生人覺得我做的東西有用」的感覺。
結語
回頭看 2025:
- 2024 年,我整年只有 73 次 GitHub 貢獻,連 GitHub 都還不太會用。
- 1 月,我在跟著教學做貪吃蛇。
- 6 月,我拿到第一份實習。
- 8 月,我把一個真的有人在用的註冊流程改掉,買了第一台 3D 印表機。
- 11 月,我讓一隻機器狗第一次站起來。
- 12 月,我寫下「前半年和後半年,完全不在同一個級別」。
年底的最後一篇日記,我這樣形容這一年:改變我人生的一年,也是我最努力和自律的一年。
每一步在當下看起來都很普通,但串起來,就是我人生到目前為止最瘋狂的一年。
我的 RECAP 原稿裡有一句話,我想留在最後:當你準備好了,有勇氣跟學習能力,就可以成為任何人。
2026 年,這隻機器狗會帶著我走到更遠的地方,拿下專題第一名、到台大展示,也讓我開始做自己的機械手臂和機器人,那是另一篇文章的故事了。對我來說,這是一場馬拉松,而 2025 年,我才剛剛跑完第一公里。