How to Implement Hypothesis Driven Development 原文:https://www.thoughtworks.com/insights/articles/how implement hypothesis driven development 翻譯:祝坤榮(時序 ...
How to Implement Hypothesis-Driven Development
原文:https://www.thoughtworks.com/insights/articles/how-implement-hypothesis-driven-development
翻譯:祝坤榮(時序)
讓我們回憶下高中的自然課。老師有一套方法來幫助我們學習 - 一套基於手頭證據的實驗方法。我們被要求觀察我們身邊的世界,然後嘗試形成一套對我們觀察所得的解釋或假設。我們在可控的實驗環境通過預測我們理論的輸出來測試這個假設 - 如果輸出達到了,我們就證明瞭我們的理論是正確的。
我們通過構造更多成熟的實驗來將學到的知識去形成和測試其他假設,調教,改進或摒棄任何我們獲得更多從結果觀察出的假設。
實驗室自然科學的基礎,是探索我們周圍世界的系統方法。儘管一些實驗是在實驗室做的,但在任何時間和地點進行實驗都沒有問題,甚至在軟體開發領域也可以。
實踐假設驅動開發就是將開發一個新點子,產品和服務 - 甚至是組織變更 都作為一系列的實驗來對待,用來決定期望的輸出是否已達到。這個過程不斷進行指導一個期望的結果達到了或主意已經被證明是可行的。
我們要改變自己的想法,當對一個問題做假設提供解決方案時,尤其是在新產品或服務開發時 - 我們瞄準的市場,業務模型是如何運作的,代碼是如何執行的,甚至消費者是如何使用的。
我們不再做項目,而是做實驗。用戶發現和精益啟動測試就是被設計成測試關於用戶的假設。質量保證是按規格定義說明書測試系統行為。實驗理論也在測試驅動開發中應用 - 我們先寫測試,然後用測試來驗證我們的代碼是否正確,當代碼通過測試後就是成功的。最終,產品或服務開發變成了一個流程,用來測試一個假定環境或市場上的開發的系統行為。
實驗核心的輸出是測量證據和學到的知識。
學到的知識就是我們在實驗中得到的東西。我們期望的是不是已經發生了?如果沒有,這些信息如何指導我們下次實驗?
為了學習知識我們需要使用科學的方法來研究問題現象,獲得新的知識,更正和整合之前的知識到我們的思考中。
隨著軟體開發行業的持續成熟,我們現在有機會應用持續設計和交付來最大化我們學到的來進行持續改進。通過使用實驗方式來進行信息發現,我們可以更快速的對我們在創建產品或服務時識別問題來測試我們的方案。優化我們解決正確問題的效率是目標,而不是通過不斷構建方案成為一個特性的工廠。
科學方法的步驟是:
- 進行觀察
- 形成一個假設
- 設計一個實驗來測試假設
- 定量分析實驗是否成功。
- 進行實驗
- 評估實驗結果
- 接受或推翻假設
- 如果有必要,做個新假設並測試
用試驗方法進行軟體開發
我們要挑戰對於產品或服務的固定需求的方式。當團隊進行一個熟知的或確定的計劃階段時需求是有價值的,並能讓我們使用熟知的實踐來獲得收入。而當你在摸索複雜和不確定階段時你需要假設。
讓團隊處理一系列業務需求會讓團隊形成不正確的接單觀念。
業務方來思考並‘知道’什麼是真缺德。開發團隊的活就是開發來實現被告知的東西。但當在一個不確定和複雜的領域,所有的開發團隊成員都應該被鼓勵思考和分享對於問題的想法,以及潛在解決方案。一個只是接單的團隊並不能發揮跨職能多學科團隊的全部潛力,經驗和能力。
形成假設
傳統用戶故事框架聚焦在捕獲我們想要做的和為誰做的需求,讓用戶能從系統中得到特定的收益。
作為... <角色>
我要... <目標/期望>
所以... <獲得收益>
行為驅動開發
為了... <獲得收益>
作為... <角色>
我要... <目標/期望>
當將工作視為一種實驗,傳統的用戶故事是不好用的。在我們的高中實驗課,我們要為達到期望的結果定義步驟。我們需要定出要觀察的指標(或信號)來提供我們假設是合理的證據。為了減少對結果的干擾這些需要在測試前就要決定。
如果我們觀察到假設是對的信號,我們可以對我們在正確的路徑上有更多信心並將其反映到用戶故事框架里。
這樣,一個能支持假設驅動開發的用戶故事結構會是:
本文來自祝坤榮(時序)的微信公眾號「麥芽麵包,id「darkjune_think」
轉載請註明。微信掃一掃關註公眾號。
交流Email: [email protected]