大一時,我和同組的成員完成了一個 Android Studio 的小組專案報告,當時我們選擇的主題是-「空教室查詢系統」,我們小組把這個 App 命名為「RoomRush」,當時由於時間和協作上的關係,我並沒有完整的了解每一行程式碼,只追求在有畫面上的呈現就好。儘管如此,我們小組透過來回和 AI 溝通,其實花費了很多心力和時間,對我們來說,要把腦袋中的藍圖,真正開發成一個可以使用的軟體,其實是非常不容易的。
一年之後,我希望自己並不是草草的完成先前的專案,而是希望我能多少了解當中的技術,讓未來的我,不論是選擇繼續完善 App,或是在開發新的 App 時,可以更注意到其中的細節,且避免一些漏洞或是把程式寫得更乾淨。
這個系列不是從零開發一個新 App;相反地,它其實已經能跑,也有清楚的使用情境。但問題是:一個能跑的專題,真的代表我已經看懂它了嗎? 這是我開始這個系列的原因。
不過,當時的開發方式,現在回頭看有點像大家常說的 Vibe Coding:我知道自己想要什麼畫面、什麼功能,也能透過和 AI 來回溝通,把它一步步做出來。可是很多時候,我其實沒有完全理解每個檔案為什麼要這樣寫、資料從哪裡來、出錯時又應該從哪裡查。
當時我最常出現的狀況是:
某個功能終於能跑了,我們就趕快往下一個畫面前進。
至於這個 Activity 為什麼要這樣接、資料從哪個地方進來、如果資料格式改了會不會壞掉,這些問題通常不是第一優先。
但能讓 App 跑起來、能在報告時順利展示,已經是一件很不容易的事。這不是否定當時的努力,因為在時間壓力和分工協作下,能完成一個有畫面、有功能、可以展示的 App,本來就不簡單。只是過了一年後再回頭看,我發現「能跑」只是第一關。如果未來真的想繼續修改它、維護它,甚至把它放進自己的作品集裡,我就不能只停在「它看起來正常」。我需要知道它為什麼能跑,也要知道它在哪些地方可能其實很脆弱。
我想用 30 天重新整理 RoomRush,從一個個檔案開始讀起:AndroidManifest、Activity、ViewModel、Repository、Room Database,到 CSV 預載資料,最後整理出專案總地圖、資料風險與低風險改善清單。
不是為了假裝自己從零打造了一個完整產品,而是想誠實記錄我如何用 Hermes Agent 協助自己理解既有專案,把它從「能跑」整理成「我能說明、能維護、能判斷技術債」的 Android 專案。
RoomRush 是一個可以查詢空教室的 Android 專題,一開始它比較像是分工與 AI 協作下完成的作品,但真正回頭看程式碼時,我發現自己需要重新理解它的資料流、畫面流程、管理者功能與技術債。
RoomRush 的核心功能是讓使用者查詢特定時間是否有可用教室,並且提供管理者維護教室資料、課表資料或相關設定的功能。
專案中包含多個 Activity、ViewModel、Repository、Room Database,以及從 CSV 預載資料的流程。 也因為它不是只有單一畫面,所以回頭讀的時候,我不能只看 UI,而是要理解畫面、資料庫、資料來源和管理者操作之間的關係。
對我來說,這 30 天不是要證明自己很會寫 Android,也不是要把 RoomRush 包裝成多完整的產品。我更想做的是,把一個曾經「靠著分工、AI 協作和 deadline 壓力完成」的專題,重新拆開來看一次。哪些地方我當時其實沒看懂?哪些地方只是剛好能跑?哪些設計如果未來要維護,會變成問題?
如果 30 天後,我能畫出 RoomRush 的專案地圖,說明每個主要檔案的角色,並整理出一份低風險改善清單,那這個系列對我來說就有意義了。
這 30 天,我想先把 RoomRush 當成一個「需要重新接手的既有專案」來閱讀,而不是一開始就急著重寫或重構。
我預計會從專案入口開始,慢慢整理出主要畫面、功能流程和資料流。接著,我會把 Activity、ViewModel、Repository、Room Database 和 CSV 預載資料串起來,看懂資料從哪裡來、經過哪些處理,最後怎麼顯示到畫面上。
在讀的過程中,我也會嘗試判斷哪些程式碼屬於主流程,哪些只是支援功能,甚至可能是開發過程中留下來但現在不一定重要的部分。
等到流程比較清楚之後,我會再整理 RoomRush 可能存在的技術債,包含安全性、資料保存、資料設計和可維護性。最後,我希望能規劃出一份低風險的改善順序,不是一口氣推翻整個專案,而是知道如果未來要繼續維護,可以先從哪裡開始。
在這個系列中,我會使用 Hermes Agent 協助自己重新閱讀 RoomRush。
但我不希望它只是幫我代寫文章,或是把程式碼整理成一份我看起來好像懂了的說明。
對我來說,真正重要的是:我能不能回到程式碼本身,確認它的解釋是否正確;我能不能用自己的話說明這個檔案的用途;我能不能判斷這段程式未來如果要維護,可能會遇到什麼問題。
如果 AI 只是幫我產生答案,我可能看起來進度很快,但實際上還是沒有掌握專案。可是如果 AI 能協助我拆解檔案、追蹤資料流、提醒我哪裡需要驗證,甚至逼我用自己的話說明,那它就不只是代寫工具,而是學習過程中的陪跑者。
所以下一篇,我會先談 Hermes Agent 在這個系列中的角色:它不是幫我逃避讀 code 的工具,而是協助我理解與驗證 RoomRush 的學習夥伴。