「在軟體實際可以使用之前,很難想像它是如何運作的,更難的是想出它所有必須達到的要求。」——《敏捷開發的藝術》
有經驗的軟體工程師一定都遇過這樣的狀況,當使用者實際摸到軟體時,才說這個不是我想要的。
從需求開始到最後交付軟體給客戶,這中間會經過多次的資訊轉換與假設,每一次的轉換都可能導致產出會偏離最初的需求。
當然,也別忘了,我們還沒提到,客戶與使用者有時也無法清楚地表達自己的需求,甚至還會每天蹦出一個『嶄新的想法』。
對於使用者來說,軟體必須是可操作的,他們只有在真的開始操作(或至少是模擬使用)時,他們才能真正判斷軟體是否滿足需求,並產生更多明確的想法。
從零開始打造軟體的過程,它確實是有那麼一點難以捉模,充滿變化及不確定性。
我們需要 Agile 與 DevOps 的協助,透過快速交付可運行軟體、持續收集使用者回饋,藉此來對抗變化及不確定性,讓最終成果更貼近真實需求。