昨天決定要做「泰語小旅伴」之後,我腦中已經有一個很明確的大方向:
我要做一個泰語學習 App。
但仔細想想,這句話其實什麼都還沒說清楚。
要給誰用?
要學什麼?
打開 App 之後可以做什麼?
是像字典一樣查單字,還是像課程一樣一句一句學?
要不要有發音?要不要測驗?要不要記錄學習進度?
如果這些問題都還沒想清楚,就直接跟 AI 說:
幫我做一個泰語學習 App。
它可能真的會做出一些東西,但最後做出來的是不是我想要的,就很難說了。
所以 Day 2 我決定先不急著寫程式,而是先和 ChatGPT 討論:
「泰語小旅伴」到底要做什麼?
第一個要決定的,不是畫面要用什麼顏色,也不是要放幾個按鈕,而是:
誰會使用這個 App?
因為如果使用者不同,需要的內容就會差很多。
假設是已經學泰語好幾年的人,可能會需要比較進階的文法、閱讀或大量單字;但我自己就是從基礎開始,而且當初想做這個 App 的原因,也是希望去泰國旅行時可以說一些真的用得到的泰語。
所以最後先把使用者定在:
泰語零基礎~初學者。
學習方向則是:
旅遊、生活中的實用會話。
這個決定看起來很簡單,但對後面的功能影響很大。
因為我們不需要一開始就做成一套完整的泰語教材,而是可以先問:
如果第一次去泰國,哪些情況最可能需要開口說泰語?
這樣問題好像就簡單多了。
接著,我們把旅遊中可能遇到的情況繼續往下拆。
最後第一版先決定五個情境:
例如「基本問候」可以先學你好、謝謝、對不起、再見;到了購物,就會碰到多少錢、我要這個、可以便宜一點嗎之類的句子。
餐廳、咖啡店和問路也是同樣的概念。
這時候我第一次感覺到,「做一個泰語學習 App」開始變得比較具體了。
原本只有一個很大的想法,現在至少可以變成:
泰語小旅伴
├── 基本問候
├── 購物
├── 餐廳點餐
├── 咖啡店
└── 交通/問路
五個情境之後當然還可以增加,但第一版先不要什麼都放進來。
這也是我和 ChatGPT 討論需求時開始學到的一件事:
想到的功能很多,不代表第一版就要全部做。
決定情境之後,下一個問題變成:
假設我要教「你好」,App 裡到底應該出現什麼?
如果只有:
สวัสดี
對完全不會泰文的人來說,好像還是不太容易開始。
所以當時先整理出一筆教材至少需要幾種資訊:
概念大概像這樣:
中文:你好
泰文:สวัสดีค่ะ
羅馬拼音:sà-wàt-dii khâ
情境:基本問候
語音:🔊
看到這裡,我才開始意識到,做 App 不只是想「畫面要長什麼樣」。
在真正寫程式以前,還要先想:
我到底有哪些資料?使用者需要看到哪些資料?
這些東西如果先想清楚,之後才比較知道程式到底要處理什麼。
繼續討論之後,App 的樣子又更清楚了一點。
除了直接進入情境課程,我還希望它不是看過一句就結束,而是可以有一些後續的學習方式。
所以當時規劃的結構大概變成:
泰語小旅伴
│
├── 首頁
│
├── 情境課程
│ ├── 基本問候
│ ├── 購物
│ ├── 餐廳點餐
│ ├── 咖啡店
│ └── 交通/問路
│
├── 單字卡
├── 小測驗
├── 錯題複習
└── 學習紀錄
也就是希望未來可以形成:
學習 → 複習 → 測驗 → 看錯題與紀錄
這樣的基本流程。
這時候「泰語小旅伴」已經不只是「顯示幾句泰文的網頁」,而開始有一點學習 App 的樣子了。
不過,也是在這個時候,我們遇到另一個很現實的問題。
只要開始想功能,就很容易一直加。
有課程之後,可以加單字卡。
有單字卡之後,可以加測驗。
有測驗,就會想到錯題複習。
有學習紀錄,好像又可以做會員帳號、雲端同步,甚至排行榜。
既然都使用 AI 開發了,要不要乾脆再加一個 AI 泰語老師,可以直接陪使用者對話?
聽起來每一個都很不錯。
但如果全部都放進第一版,我很可能還沒學會怎麼把第一個畫面做出來,就已經先列出一大堆不知道怎麼完成的功能。
所以這次討論很重要的一件事,就是開始分:
哪些是這 30 天真的想完成的?哪些先不要做?
第一版希望保留的核心功能包括:
另一方面,也明確決定有些東西先不碰:
不是因為這些功能不好,而是它們不是現在最需要解決的問題。
如果之後真的有能力、有時間,當然還可以繼續增加。
但第一個目標應該是:
先真的做完一個可以學泰語的 App。
以前想到「規劃 App」,我比較容易想到的是要有哪些功能。
但這次和 ChatGPT 討論之後,我覺得另一件事也很重要:
要先決定哪些東西不要做。
因為如果需求只有一直增加,AI 其實很容易陪著我一直加。
我說要測驗,它可以寫。
我說再加會員,它可能也可以繼續寫。
我再說要 AI 對話,它還是可以往下做。
問題是,我自己真的知道那些程式在做什麼嗎?
我有辦法一個一個驗收嗎?
如果其中一個地方壞掉,我知道是哪裡出問題嗎?
對現在完全從零開始的我來說,我覺得答案很明顯。
所以「功能先少一點」,反而讓我比較有機會真的理解自己正在做什麼。
Day 2 做了不少決定,但我們依然還沒有真正開始寫 App。
反而花時間把原本一句很模糊的:
我要做一個泰語學習 App。
慢慢拆成比較具體的樣子:
給泰語初學者使用,以旅遊實用會話為主,第一版先從五個情境開始,教材包含中文、泰文、羅馬拼音與發音,再慢慢加入複習、測驗和學習紀錄。
同時也把會員、後端、雲端同步和 AI 對話這些目前太大的功能先放到旁邊。
對以前完全沒有做過 App 的我來說,我原本會覺得:
有想法之後,下一步應該就是開始寫程式。
但現在才發現,在寫第一行程式之前,好像還有一件更重要的事情:
先弄清楚自己到底要做什麼。
不然 AI 寫得再快,也只是很快地往一個不確定的方向前進。
接下來,需求大致有了。
但另一個我從一開始就搞不太清楚的問題還在:
ChatGPT 和 Codex 到底有什麼不一樣?
如果真的要開始開發,我應該跟誰討論?又該把什麼工作交給誰?
下一篇,就來整理我第一次用 ChatGPT 和 Codex 一起開發時,怎麼理解它們的分工。
先限制使用者和旅遊情境,比直接叫 AI 開始寫 App 踏實很多。好奇之後泰語句子與發音要怎麼驗收?會找母語者協助、比對可信的語言資料,還是先清楚標示 AI 產生內容,避免一句話真的帶去旅行才發現怪怪的?