迭代與小步前進
迭代是程式開發上的一個觀念,但是也可以應用在不同面向,就像程式開發向不同領域取經,試想有一天你在床上醒來,全身只剩下眼睛的眨眼可以控制,你花了好一番功夫才讓身旁的人理解到這個情境,你要如何向外界發聲。
第一個版本
透過直覺的第一個版本,就是眨一下眼睛是 A 兩下是 B 的方式,這樣就可以逐步的從字母到單字,建構出句子後可以寫出整篇文章,最後集結出書,太棒了!
你一定也發現了,這樣的方式要表達 Z 就得眨上 26 下眼睛,很快的你的眼睛也會壞掉吧,所以你很快發現這個問題,改由助手逐個念出字母,當念到你想要的字母時,你再眨一下眼睛,嗯,這樣對你眼睛的負擔明顯減少很多,現在,每一個字母只要眨一下就好。
錯誤及取消
你因為眼睛太乾而眨了一下,結果助手就寫下字母,你在心中喊到這不是我要的啊,因為你以及助手都是人,所以可能會犯錯,你眨錯了眼、他畫錯了字卡,所以增加確認的動作及取消的機制,現在助手在寫下字母前會先再詢問是否正確,正確就再眨一次,取消就兩次。
改進的版本
你已經可以正確的進行表達溝通,但每個字母可能需要詢問的次數可能是 A 的一次到 Z 的 26 次,平均來看每個字母的詢問次數大概落在 13 次,透過改變詢問的模式可以減少到最多 5 次的詢問就決定。
每個問題不再詢問特定字母,而是一個區間,第一個問題是「是否在 A 到 M 之間」雖然無法得知確定的字母,但排除了一半的字母,透過這個二分模式詢問,全部 26 的字母,助手最多只要詢問 5 次就可以確認你要的字母。
每一個階段都是可行的方案
迭代成功的關鍵在於:
每個世代都有增值。
前個世代要提供次個世代價值,每個世代都是站在前個世代肩上,改善前個世代,只有每個世代都有增值,那迭代才算成功,否則就僅是累積「年資」的概念。
結語
關於迭代,我覺得很重要是:
- 每個迭代當下提供的不一定是達成目標的完美解方但必然是完整方案。
- 每個迭代都必須提昇前一個世代價值。