產品專案的九個敏捷開發經驗
敏捷開發越來越火熱,但在實際應用當中很多時候都是隻有敏捷的“形”,卻缺少敏捷的“神”,還只是在摸索中。
在《Scrum:兼顧計劃與靈活的敏捷開發》一文中,作者最後也提到過,借鑑一種新的模式的時候,最好能夠批判性的吸收其精華的部分,不能全部照搬,照搬了反而會出問題。
其實敏捷對產品經理的要求是很高的,需要安排至少兩個迭代的任務,兩個迭代的規劃。
對程式設計師的要求也很高,當所有的任務都拆散了之後,最終做出來的東西要形成一個產品,技術人員的整體意識要比較強,且一開始就得熟知產品的整個規劃,否則到最後就會出現所有任務都已完結,合併出來的最終產物卻是什麼都不是。
並且敏捷開發不僅僅是IT部門的事情,還需要各個業務部門對敏捷的理解和支援,形成合力,從而提升開發效率和業務滿意度。
執行一段時間的敏捷之後,發現最容易接受敏捷這種方式的是開發團隊,不管是瀑布式還是敏捷,只是做工作的形式不一樣了,進度更容易把握了,更能適應需求的變化了,實質其實並沒有變化。
對測試團隊來講,測試資源調配會更加的緊張,敏捷要求做完一條側一條,與原先的整體專案排期完全不一樣;對產品經理來說,敏捷能讓自身更好的掌握整個產品的進度。
但需求分析與產品設計階段的敏捷拆分還是較為頭疼的,究竟要不要寫文件了,是不是有什麼做什麼,還是說要規劃完整體設計之後才進行拆分?疑問很多,蒐集了部分資料,結合敏捷實踐的經驗,分享如下:
一、敏捷開發最少需要維護哪些文件?
軟體或者系統產品終歸是人來維護的,業務知識和技能的傳遞就成為產品可持續發展的一個重要因素,這就需要有知識性的沉澱,需要有文件的產出。
實際情況是大多數人都不喜歡編寫文件、也不太喜歡研讀文件,因此太多的文件只會消耗團隊有限的時間,並不能帶來多大的好處;敏捷開發照樣重視文件的作用,也重視文件的維護。
但文件宜少且精煉,一般情況下建議維護三份文件:
《產品需求規格說明書》
也即PRD:定義產品應該具有的功能、邊界描述等,它作為產品團隊之間共同的討論基礎,並在設計和開發過程中不斷的更新維護,並記錄所有的需求變更;
《系統設計說明書》
開發人員編寫的技術設計,包含資料庫E-R圖,架構設計等:說明產品如何實現,內部之間是什麼關係;
《測試用例和測試報告》
由測試人員編寫:記錄所有功能點的測試計劃、過程和測試結果;
二、敏捷開發是否需要系統設計?
前面也提到過,敏捷開發對開發人員來講實質差異不大,只是以小週期代替大週期。
小週期包括:需求、設計、開發、測試、釋出,這個過程中的設計環節是指要做產品設計和系統設計;由於做完整的設計需要有相對完整的資料和比較長的時間,與小週期是相對立的。
因此敏捷開發不主張高度細化和完整的設計,提倡做出一個大粒度的框架性設計,一般指架構設計或者系統設計,避免在以後的重構中發生架構級別的變化,然後在逐步實現的過程中逐漸深入展開、細化。
傳統的一些設計方法比如結構化設計、快速原型法都是可以融入敏捷開發過程中加以使用的。
三、敏捷開發是否需要專案計劃?
敏捷開發只是把整體拆分成許多個體,產品的開發實現過程對產品的功能完整性、穩定性、即時性等都有較高的要求。
它是一種有組織有目標的行為,往往我們都將其作為一個專案來管理,這就是討論為什麼有產品經理的同時還要有專案經理,為什麼要求產品經理要有專案管理的能力,因此它需要專案計劃。
但這個計劃是一個短程計劃,根據未實現的功能情況、前一個版本的反饋和組織目標制定開發計劃;唯有這樣才能不斷的融入新的需求變更;
四、敏捷開發的迭代週期大概多長?
敏捷開發的迭代週期沒有硬性的規定,結合專案里程碑、目標、功能實現情況、產品穩定性綜合決定,如果產品使用者活躍、功能實現難度小、維護複雜度低,建議以周為週期。
對於規模比較大、維護複雜度高的產品,考慮以2周-6周為週期釋出較為合適;頻繁的釋出會降低使用者的期望並提高使用者成本,給使用者心理上帶來額外的負擔:他會認為產品質量低,質量控制不嚴謹等;
五、敏捷開發為何提倡小版本?小版本有哪些優勢?
小版本的目的就是分解複雜度、降低風險,改善團隊士氣等;小版本有眾多優勢:
1、總體風險比較少:小版本變化小,總是在上一個版本基礎上區域性調整和增加,技術複雜度低;由於規劃的功能較少,工作量也易於估算,所以其總體風險比較少,常常能如期釋出;
2、需求的接納能力強:由於小版本快速實現併發布測試,然後就進入下一個版本的規劃實現週期,這樣新需求一旦提出就能快速進入開發視野,就能儘快實現;
3、測試和開發高效協作:開發和測試可以並行工作,當開發實現第一個版本時,測試設計測試方案和用例;釋出第一個版本後,開發就進入下一個版本輪次,測試就應用測試方案測試剛才釋出的版本,提交Bug;開發在下一個版本結束時修正所有上一輪發現的Bug,然後釋出新版本,如此迴圈往復,開發和測試實現高效協作;
六、敏捷開發與重構的關係如何?
敏捷開發以重構為基礎,時時刻刻處於重構過程中;
七、敏捷開發為何強調團隊人員的參與、使用者的參與?
敏捷強調團隊成員的高度參與就是要統一認識,把團隊的目標變成每個人的工作目標,使之為每個團隊成員的認同,形成高度的凝聚力,以達到群策群力、高效協作的效果。
由於沒有高度細化的文件,成員之間交換資訊的唯一渠道就是面對面溝通,良好的團隊氛圍和協作關係促進這種溝通,並使訊息有效傳達。
使用者由於缺乏專業訓練,無法清晰、準確的表達其意圖,導致需求的歧義和模糊;使用者的參與使模糊、邊界不確定的需求在互動的過程中得到確認和完善;在使用者參與過程中,我們常常可以聽到這樣的話:
“是的,就是這樣的”
“這正是我想要的……”
“這裡需要修改一下……”
“我的想法是這樣的……”
這個過程中,使用者承擔了一部分測試人員的角色。我們努力做的事情就是實現使用者需要的東西,並最終讓使用者喜歡它,唯有使用者喜歡它才能用好它,那麼我們怎能不認真聽取使用者的意見呢?一句話總結就是:使用者參與幫助我們做正確的事情!
八、怎麼才能評估團隊是否已經敏捷了?
由於敏捷開發沒有標準的可供參考的實踐過程,所以很難通過某個過程而斷定其開發過程敏捷了,那麼如何來評估團隊是敏捷的呢?一般採用的辦法是根據團隊呈現出來的氛圍、專案運作狀態、團隊成員的感性認識等方面來評估團隊和其開發過程是否敏捷,常見評估專案團隊是否已經敏捷的方法如下:
- 團隊有共同的願景,並且對這個願景充滿信心
- 團隊有明確的階段目標並且為每個成員所知曉
- 團隊知曉當前計劃:做什麼、何時完成、預期效果等
- 團隊任務是低耦合的,並且緊密協作
- 釋出過程是輕鬆愉快的,構建版本並不斷測試是常態行為之一
九、敏捷開發能縮短專案時間並提高質量嗎?
從我的實踐經驗來看是可以的,但目前無法提供量化的資料做參考,只能從幾個方面評估和推斷:
- 使用者的參與幫助團隊把功能一次性完成並做正確,縮減了返工的時間;
- 不斷的重構和測試釋出能把問題發現在早期,整體質量顯著提高;
- 過程目標導向,使團隊高度集中於專案目標,提高了生產力;
- 不斷的釋出對團隊是種正向激勵,榮譽感和成功欲使團隊保持持續的激情;
以上是一些敏捷開發過程當中的疑問,其實還有很多,目前我這邊還只是主推讓開發和測試團隊敏捷,PD團隊還在摸索當中。下次我會分享一下如何在需求這個層面用敏捷的方式來設計,去產出PRD文件。敏捷設計、敏捷開發、敏捷測試連在一起,這樣才能最大限度的發揮敏捷的效用。
相關文章
- 敏捷開發的6個實戰經驗敏捷
- 聊聊敏捷的產品經理敏捷
- [專案管理]工程與產品開發的差異——一個老專案的經典問題專案管理
- 軟體專案管理(CMM)經驗談——附錄《產品部開發規範》專案管理
- 敏捷開發的實戰經驗敏捷
- 也談專案經理與敏捷開發敏捷
- 產品經理和專案經理
- 敏捷開發|私藏的3個敏捷專案管理工具!敏捷專案管理
- 產品經理必讀:敏捷開發中的需求管理過程全解敏捷
- 產品開發專案管理初學者指南專案管理
- 產品經理和專案經理的區別
- 產品經理和專案經理的異同
- 新產品開發專案流程的七要素(轉)
- 開發經理 VS 敏捷專家敏捷
- 研發團隊管理:IT研發中專案和產品原來區別那麼大,專案級的專案是專案,產品級的專案是產品!!!
- 產品經理的面試經驗分享面試
- [敏捷開發實踐](2) 用於開發和維持複雜產品的敏捷開發框架Scrum敏捷框架Scrum
- 小程式·雲開發 專案開發經驗分享
- 蔣煒航:敏捷開發的實戰經驗敏捷
- 產品研發團隊Scrum敏捷開發協作流程Scrum敏捷
- 九年遊戲開發經驗談遊戲開發
- 請各位有多個專案開發經驗的人事指教
- 開發經理 VS 敏捷專家(下)敏捷
- Android開發之專案經驗分享Android
- 華為敏捷DevOps實踐:產品經理如何開好敏捷回顧會議敏捷dev
- 華為敏捷 DevOps 實踐:產品經理如何開好敏捷回顧會議敏捷dev
- 敏捷開發模式下如何快速提升產品質量敏捷模式
- 我的專案開發經驗積累總結
- 產品管理的九條經驗法則
- 產品經理和專案經理誰是專案管理工具的大神?專案管理
- 後端開發學習敏捷需求-->產品價值的定位後端敏捷
- 6個專案帶給我的專案經驗
- 敏捷開發專案管理軟體敏捷專案管理
- [原]敏捷開發-專案啟動敏捷
- 一個專案經理的經驗總結
- 一個專案帶你走進產品經理的世界(2)需求分析
- 業餘專案,尋 Laravel 大牛,2年以上經驗,開發個專案,股份好說。Laravel
- 專案與產品