想要每周都能交付一些有價值的東西,需要在哪些方面付出努力呢?通過讓客戶親眼見證軟件交付的正確方式,我們就會發現以前提供給客戶的服務是多么徒勞無益,并且還不止一次錯過了最重要的東西——定期交付可工作的軟件。
每周交付一些有價值的東西
暫時忘記一會兒敏捷,假設你就是客戶。資金和項目可都是你自己的,你已經雇用了頂尖的團隊去交付你想要的軟件。怎樣才能讓你相信所雇用的團隊正在進行實際交付? 是一摞摞的文件、計劃和報告,還是每周都定期交付了你認為具有最重要特性并且測試過的可工作軟件呢? 所以當開始以客戶的視角來審視軟件交付時,你也就步入正軌了。
(1)要將大問題拆分為許多小問題。
一周時間相對較短,你不可能在一周內完成所有任務。要想搞定一切,就得將棘手的大問題分割為更小、更簡單、更易于管理的小問題。
(2)要將注意力集中于最重要的事物,心無雜念。
我們所交付的傳統軟件項目對于客戶很少有或者說幾乎沒有什么價值。當然,你需要文檔,也需要計劃。但是它們僅支持一樣東西——可工作的軟件。每周都交付一些有價值的軟件迫使你更精益,放棄任何不能增值的工作。這樣就可以只帶上必需品輕裝前進了。
(3)確保正在交付的東西可以工作。
每周都交付一些有價值的東西意味著你要交付更好的軟件產品,也就意味著你要進行很多測試——盡早而且經常性的測試。不斷摒棄一些東西,直到項目截止,這時日常測試會成為你的一種生活方式。你就是問題的終結者。
(4)尋求反饋。
你要定期停下來,向客戶征求一下你的目標是否正確,否則怎會知道是否達到預定目標?反饋好比是汽車的大燈,能夠穿透前方的霧靄,即使在高速公路上把車子開到100公里/小時也仍然會安然無恙。沒有它,客戶就會失去對汽車的控制,而你也會栽在溝里面。
(5)必要時可以改變過程。
項目會有偶然情況發生,事情也會發生變化。一周中最重要的事情也可能被移到下一周。如果創建一個計劃后只是循規蹈矩,那么當實施計劃時就無法做到收放自如、隨需應變。當現實破壞了計劃,你要改變的是計劃而不是現實,其原因也正是如此。
(6)要勇于負責。
如果你承諾每周都交付一些有價值的東西,然后向客戶展示將他們的錢用在了哪方面,那么你要勇于負責。
需要控制質量。
需要控制進度。
需要設定期望值。
需要花錢時就像在掏自己的錢包,要格外吝惜。那我的意思是大家都要以這種方式工作? 不可能! 這就好比多數人有不良飲食習慣同時還懶于運動。每周都交付有價值的東西并不適合膽怯者。它會讓你成為萬眾矚目的焦點,這在以前你是想都不敢想的。你會無處可藏。你要么做出些有價值的東西,要么什么都別做。但是如果你喜歡可見性,專注質量并且對執行有著非常強烈的渴望,那么在敏捷團隊中工作會讓你個人受益匪淺,樂趣多多。如果每周交付讓你覺得壓力過大,那也不要擔心,這沒什么關系。多數敏捷團隊開始時都是每兩周交付一些有價值的東西(大團隊會每三周一次)。這只是個比喻,讓你設想一下要定期給客戶提交可工作的軟件,然后得到一些反饋,必要時再改變進程。就這些。
敏捷計劃如何生效
計劃一個敏捷項目與為一個忙碌的長周末假期準備東西沒什么兩樣。我們不用待做事項列表和任務這兩個詞,換兩個有趣的名字:總故事列表和用戶故事。在敏捷項目中,總故事列表就是項目待做事項列表。它包含了所有的高級別特性(用戶故事),而這些正是客戶希望在他們的軟件中能見到的??蛻魧ζ湓O定優先級,開發團隊會對其進行估算,而這正是形成項目計劃的基礎。
敏捷項目中的核心就是迭代,在一周至兩周內選取客戶最重要的故事,然后將其轉化為可運行的、測試過的軟件。團隊成員通過測算團隊速率來決定需要承擔多少工作(每個迭代周期可以完成多少)。通過追蹤速率并預測未來所能完成的任務量,你的計劃就可以實事求是,從而避免團隊夸下???。如果你和客戶面臨的任務過多,那就先做唯一能做的事———少做一些。在范圍方面要靈活處置,也就是要學會平衡計劃,并將承諾變為現實。當現實與計劃相悖時,就應該改變計劃。適應性強的計劃是敏捷交付的基石。敏捷計劃也就以上這些了,我們將在第8章對其進行更深入的闡述。
如果犧牲不可避,你還是順其自然吧。不過要確認犧牲物有所值,而不是因為你在一年前的業務評估中所做出的不切實際的承諾。
確實,人們會做出不切實際的承諾,也經常要求團隊盡力而為。但這并不能解決問題。“靠奇跡去管理”這種假象如果一直持續下去,會成為一種糟糕的項目運行方法,而如果這個期望值是你和客戶一起設定的,那就更糟糕了。有了敏捷,你就不需要這些奇跡了,因為從開始階段就會與客戶開誠布公地配合工作,對客戶直言不諱,讓他們自己做出范圍、資金和數據方面的明智決策。這要看你的選擇了。你可以欺騙自己,幻想著事情會有奇跡性的轉機,要么你就與客戶共同制定出雙方都認可的計劃。
“完成”的意思就是“完成”
假設你的爺爺奶奶雇用鄰家小男孩去將草坪里的落葉打掃干凈并裝進袋子。當這個小孩完做了如下工作后,爺爺奶奶會認為他就把活干好了嗎?
制作了一份如何打掃院子的計劃報告。
做一份漂亮的設計。
制作了一份詳盡、面面俱到的測試計劃。