敏捷開發現在已不是新鮮事物了,我們都從各種渠道聽到過不同的團隊實行敏捷的勝果,聽的時候覺得很美,回到家就發現那都是他人家的團隊,結合自己的情況1看就發現問題1大堆。就算是終究打算1試,也常常會不知如何開始。這就是我希望編寫這份文檔的緣由,能夠找到1個遵守的敏捷項目管理模型,雖然我們都知道沒有1個放之4海而皆準的方法,但在更高的層面上我覺得這依然是可行的。也就是說,管理模型是1致的,但是其中采取的方法可能各有不同,終究目標是唯1的:打造1支可以快速適應變化的高質量團隊,并輸出高質量的產品!
今天想跟大家分享的是用戶故事的計劃進程,對如何使用用戶故事驅動團隊的開發進程,后續會有更新。
用戶故事可以幫助開發團隊從用戶的角度來理解需求,同時在交付的進程中依照用戶可用的場景進行交付,確保了開發團隊可以延續的交付用戶關心的功能。但是在實際開發中,團隊常常不知道如何入手。
如何用好用戶故事需要解決幾個關鍵問題:
用戶故事的需求整理方式與傳統需求的整理方式有很大的不同,傳統軟件開發中我們依賴用戶需求,技術需求,規格說明書等工具試圖使用規范的文檔來解決需求搜集和傳遞的問題。在這個進程中,我們將用戶的需求轉換成技術可以理解并可實行的規格。對已習慣了這類方式的人來講,要轉換成使用用戶故事的方式需要比較大的思惟方式轉變,大家常常遇到的疑問也是,難道使用用戶故事就不需要規格了嗎?其實不然,首先我們要了解用戶故事究竟是甚么。
大家可能覺得既然我們使用用戶故事來替換傳統需求,那末用戶故事就是記錄需求的方式了。其實,用戶故事不是用來編寫的,而是用來討論和跟蹤的。
通過以上分析,我們可以看到用戶故事如何編寫其實不重要,重要的是它所驅動的進程,通過這個進程,我們可以把用戶和技術團隊緊密結合,并讓大家產生對交付內容的統1認識。所以,用戶故事是1種溝通工具,而不是編寫工具或需求模板!
在真正開始將故事之前,我們首先要確保正確人都參與進來。對計劃1款產品來講,你最少需要:終究用戶代表,產品經理(或類似Scrum中的PO),項目經理(或類似Scrum中的ScrumMaster),團隊中的技術骨干(那些對實現的業務很熟習,對所要使用的技術或系統很熟習的技術人員),技術骨干又可以分成架構,開發和測試3個不同技能的人。這樣看來,你最少需要6個人參與這個講故事的進程(除非有些人可以相互替換)。
你的故事是講給這里面每一個人聽的,同時也希望每一個人都能夠在講故事的時候有所輸入,不單單是在聽。
講故事的進程我們通過3個步驟進行:找線索 -> 畫主線 -> 規格化
用戶不知道從哪里開始講故事,這是我們會遇到的第1個問題。其實這時候候用戶的內心感覺就猶如看完1部電影以后走出電影院,試圖給沒有看過這個電影的朋友講述。想想在這個場景下你會如何開始?比如,大話西游大家都看過吧;那末講故事的方式是,孫悟空在500年前如何如何….,然后紫霞仙子如何如何… 你會發現,你永久都會從某個角色開始講述。其實讓用戶講故事的方式也1樣,我們首先要引導用戶說出這個故事里都有誰。1部電影是多個角色的故事線交織的結果,1個產品也是1樣。有了這些角色,我們就有了可以抽取故事的線索。
這里我們可以借助2個工具來協助找線索:影響地圖和用戶畫像
關于影響地圖:【Impact Mapping 影響地圖 讀書與演練心得】
TODO: 完善使用影響地圖找出故事主角的進程
關于用戶畫像
http://www.zhihu.com/topic/19647591
http://cdc.tencent.com/?p=4898
你會發現,當團隊開始整理不同的類型的用戶的時候,他們已開始自然的講述故事,由于要把1個角色說清楚,你就必須斟酌他要做的事情,故事自然就出來了。但是在這個階段,我們切記不要過于發散,明確我們的目的是整理用戶畫像,只要不同用戶類型間的邊界清晰了,就能夠結束,不要為細節糾纏。另外,在后續的進程中我們也會發現可能有些角色還需要添加進去,那末就到時候說。
終究將我們整理出的每一個用戶類型用1張即時貼粘在白板的最左邊,以下圖:
1般我會依照距離終究用戶的遠近來擺放這些即時貼,同時對每一個角色進行編號,以便后續可以很容易的進行援用。
有了故事的主角,講故事就相對容易了。在這個階段,我們希望能夠幫助團隊盡可能將故事的每個步驟的都想清楚,通過在看板上進行可視化,我們就能夠到達這個目的。這里, 我們可使用簡化版的影響地圖,以下圖:
標準的影響地圖上有4個列,分別是WHY WHO HOW和WHAT,這類結構在進行比較大和模糊的目標討論的時候,如:戰略計劃,會很好用,由于HOW和WHAT比較容易辨別;但是用在討論用戶故事的步驟時候,其實HOW和WHAT區分不大,如果堅持使用規范的影響地圖會讓團隊感到迷惑。所以,我建議將HOW/WHAT合并。具體來講:
請參考:【影響地圖中HOW的理解與對照】
如上圖:是1個標準的“新用戶注冊”的用戶故事,大家1定都非常熟習。基本上這個故事就是閱讀者通過 登錄->注冊->填寫信息->驗證郵件提交注冊,管理員審核,成為已注冊用戶后首次登錄->完善資料。但通過卡片的方式將每一個步驟放入白板后你會發現,全部團隊可以很好的聚焦到很細節的問題上,同時又對全部故事具有全局觀。如果不借助這類可視化方式,那末團隊可能很容易丟失當前討論的主線,從1個細節延展開到其他的部份去了。
注意這里對每一個用戶故事進行了ID標注,一樣也是為了后續可以容易進行援用。
你可能會問,那我用個思惟導圖1類的工具不是更好么?電子化工具的好處是對信息的保存和分享方便,但是在團隊討論中,我們更加重視團隊討論的氛圍,聚焦和整體效力,如果使用電子化工具,就沒法讓每一個人都可以同時對這張圖進行操作,而必須由1個人操作,其他人很容易走神,如果工具不熟練還會耽誤時間。所以看上白板是個很Low的工具,其實對團隊討論來講,它的效力高于任何的電子化工具。
如上圖:這是我作為敏捷教練參與的1次用戶故事討論,你可以看到大家都聚集在白板周圍,全部討論都是站立進行,任何人都可以隨時發表意見,用手指著某個即時貼就能夠開始說:“這個”步驟怎樣怎樣。如果沒有可視化工具,或使用電子化工具,希望每一個人都可以用“這個”來聚焦所有人的注意力是很困難的,你可能需要解釋“這個”究竟是甚么,又或需要在電子工具中鼠標來點,如果操作者不是講授者,那會更加麻煩。細節決定效力!
有了故事主線,我們就能夠進行下1步的功能細化。這1步所產出的其實就是傳統軟件開發進程中的軟件規格說明書。軟件規格說明書對開發人員實現產品功能非常重要,是軟件開發中不可缺少的部份。很多人認為敏捷開發不需要文檔,其實這是個巨大的誤解。但是敏捷開發中的文檔確切和傳統的需求文檔有很多區分:
規格化的進程中我們可使用用戶故事地圖的方式來進行,團隊1起根據故事主線中的每一個步驟進行討論,分析出在產品的特定區域(模塊)中的功能點,并使用技術人員容易理解的方式來描寫這部份的功能。這全部進程就是從將需求從用戶角度的描寫轉換到技術實現角度描寫的進程。在這個進程中你會發現1些在故事主線中看不到的技術細節。
這個進程中,我們希望綜合斟酌架構和測試的輸入,這兩個角色需要從自己的角度確保每一個故事的分解都滿足架構的要求,并且是可以進行測試的。由于每一個用戶故事都會穿越多個功能區域,架構師必須協助團隊確保架構的擴大性,復用性和性能等要求。對測試來講,要確保每一個用戶故事都是可測試的才能確保后續的測試計劃和用例可以配合團隊的開發進程,并依照故事逐一交付給用戶。
如上圖,將以上用戶登錄這個故事分解為功能點,展現在用戶故事地圖上,這是標準的用戶故事地圖格式:
關于用戶故事地圖:【用戶故事地圖(User Story Mapping)之初體驗】
注:這篇文章對地圖頂層的解釋稍有不同,這是我當時對用戶故事地圖的理解還不深入釀成的。
講故事的進程我們1般通過需求討論會的情勢來進行,確保以上應當參與的人員都到場。既然是個會議,我們就必須確保會議的高效,這里可以參考3星高效會議的8點原則:
(1)凡是會議,必有主題;
(2)凡是主題,必有議程;
(3)凡是議程,必有決議;
(4)凡是決議,必有跟蹤;
(5)凡是追蹤,必有結果;
(6)凡是結果,必有責任;
(7)凡是責任,必有獎罰;
(8)凡是獎罰,必須透明。
針對需求討論會,我們最少需要有以下安排
需求討論會的進程就是依照以上3個步驟討論故事和分析故事的進程,我們可以依照以下流程進行
以上是如何使用用戶故事來驅動產品計劃和設計的進程,后續我會對如何再借助kanban和Scrum來驅動開發和交付進程。
請關注微信公眾號 【devopshub】,獲得更多關于DevOps研發運維1體化的信息
?