你一定看過這種需求對話:
* RD:「文件沒寫啊。」
* PM/使用者:「這不是理所當然嗎?」
兩邊都沒說謊。
真正的問題通常也不是能力,而是知識的詛咒(Curse of Knowledge):你越熟某個領域,就越容易把自己的背景知識當成「大家都知道」。
於是你自以為講清楚了,對方卻在另一套假設下把事情做完,最後變成重工與互相抱怨。
## 需求不是「規則」,需求是「在真實情境下會發生的事」
很多需求文件一開始就想寫規則:
* 這個功能應該要怎樣
* 這個流程必須要怎樣
* 這個欄位不可為空
問題是:規則背後藏著大量未寫出的假設。
而這些假設,往往就是錯誤的來源。
## 解法:用例子把隱藏假設逼出來(Specification by Example)
實例化需求的思路很簡單:
不要先談抽象規則,先談「會發生的場景」。
把需求寫成三段:
* Given:在什麼情境下(前置條件)
* When:做了什麼操作(行為)
* Then:會得到什麼結果(可驗收的輸出)
例子一攤開,