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