自從skills開始流行後,時不時都會有一些爆紅的skills出現,最近剛好看到Matt Pocock在Github上開源了他做軟體開發的skills,其中/grill-me這個skill更是常常出現在各大版面。

我稍微研究了一下發現,即使不是工程師,也可以從大神開源的這套軟體開發工作流中,學習一些跟AI合作開發產品的準則:

1. 人類負責下決策,AI負責找漏洞

軟體開發本質是在下一連串的決策,大到產品方向,小到每個功能該怎麼運作,都需要清晰明確的判斷與決策,在Matt Pocock的開發工作流中爆紅的/grill-me skill就是讓AI不停追問你的每個決策,直到沒有任何盲點為止。

/grill-me的內容大概長這樣(現在似乎已更名為/grilling):

1
2
3
4
5
6
7
8
Interview the user relentlessly until you reach a shared understanding. 
Map this as a design tree: every decision branches into the decisions that hang off it.
Work the tree in rounds.
The frontier is every decision whose prerequisites are already settled:
the questions you can ask now without guessing at answers you haven't heard yet.
Ask the whole frontier in one round:
number each question and give your recommended answer.
Then wait for the user's answers before the next round.

仔細看會發現,AI與人類之間有明確的分工,AI負責順著決策樹,透過無情地拷問把沒想清楚的盲點一個個挖出來,然後其只負責給選項,而人類透過與AI一問一答的過程中理清思路,最後負責拍板定案。

其實這個有點類似我之前看到的蘇格拉底式提問法,也就是讓AI不要直接給答案,而是一層一層追問,直到一切都合邏輯,沒有盲點為止。

2. 按功能拆分任務,而非根據技術架構

一般假設放手讓AI去規劃任務的話,它通常習慣根據技術架構來分工,舉例來說,假設讓AI規劃一個電商網站的開發,它習慣先把資料庫建好,接著做後端,最後才做前端,但這樣有一個很大的問題就是它是瀑布流式的開發,很慢很冗長而且無法很快地做測試與修改。

反之,Matt Pocock的/to-ticket skill,強制讓AI按照使用者功能來拆分任務,這其實也比較接近現在流行的敏捷式開發,分批次地頻繁交付可運作的功能,能夠即時去測試與驗證AI做好的功能,假設發現問題,也能及早快速修正。

3. 盡可能極簡與模組化

當前大部分的AI開發工作流,是寫死一套從產品目標->設計->開發的步驟說明書,把所有步驟寫在一個超大的skill檔案裡,但這麼做的問題就是非常笨重、冗長而且難以維護。

Matt Pocock所定義的AI開發工作流,則是堅持一個skill只做一件事,我覺得這很有趣,也很工程師思維,因為在寫程式時,最好就是維持Single Responsibility Principle,讓一個function只做一件事,這樣更具彈性也更好除錯與維護。

例如,如果今天想釐清產品目標,那麼就調用/grill-me skill,而如果想拆分任務,就調用/to-ticket skill,這些skills組成了所謂的軟體開發工具包,讓人可以根據自己的需求,隨插即用。

4. 善用指引詞

Matt Pocock的skills最為人稱讚的莫過於他能用最精簡的字句,來給AI下指令,因為每多一句廢話,AI就多一點分心的可能,然而,Matt Pocock很能夠善用一些資訊含金量極高的字詞來表達一件事,比起下一段冗長的指令,一個精闢到位的詞,勝過一連串廢話。不過我覺得這就很考驗各領域對於一些專有名詞或常用行話的熟悉性啦。