1. 程式人生 > >敏捷開發思想及Scrum實踐

敏捷開發思想及Scrum實踐

敏捷開發 scrum

導語:現在每當直接或間接帶一支研發團隊(註:軟件方向,復雜的硬件開發建議使用IPD思想)我都會給大家做一次敏捷思想和實踐的培訓。作為一個有近10年的開發編碼工作經驗的資深程序員,作為一個管理者,作為一個還算轉型成功的創業者,我一直有種初心

  • 希望所有研發人員能夠敢於並且會表達自己,讓更多的人了解自己;

  • 希望所有的研發人員不僅僅是機械的寫代碼,也能洞悉市場、了解用戶,讓自己的產出能夠適配用戶和市場的需求,這何嘗不是一種成就感;

  • 希望所有的研發人員不再受困於狹窄的職場方向,而是有更多可能轉型產品、市場、管理

我認為敏捷開發的實踐帶給了我這些,工作的收益、內心的釋放,轉型的機遇以及最重要的自信,也想分享給大家。



敏捷開發思想


技術分享

  • 所有人都可以從字面上理解敏捷代表著“快”;

  • 呆伯特老板的理解:沒有什麽計劃或者文檔,直接開始寫代碼......

  • 很多業內人士的理解:叠代開發。

以上理解不能算是錯,但都是盲人摸象式的理解。我們先看看幾種常見的開發模式:

  • 計劃驅動的瀑布式開發;

  • 逐步完善的

    叠代開發;

  • 風險驅動的螺旋式開發;

  • 價值驅動的敏捷開發;

除卻外包項目常采用的瀑布式開發外,在很多人印象裏仿佛剩下的三種開發方式都該是敏捷開發,其實這裏有個文字遊戲,就是“***的”這個定語,敏捷開發是由用戶價值(用戶的需求)驅動,這才是區分標準,這種對核心的強調,是在提醒我們需要最重視的是什麽。至於用戶價值的意義,不言而喻——如果我們做出的東西並不是用戶需要的,那又有什麽意義?在敏捷開發的過程中其實既有螺旋式開發的思維,也有叠代式開發的流程,甚至有計劃式開發的階段。

敏捷宣言—價值觀

技術分享

很多“保守力量”反對敏捷開發的原因就是說敏捷不註重計劃或者是文檔等等。這裏的文字遊戲就是“勝過”二字,並不是沒有,而是取舍側重的分別。總結如下:

“自組織團隊與客戶緊密協作,通過高度叠代式、增量式的軟件開發過程響應變化,並在每次叠代結束時交付經過編碼與測試的有價值的軟件。”

勝過

“與客戶確定合同後在初期制定並遵循基於活動的完整計劃,在重型過程和工具指導下,通過完成大量文檔進行知識傳遞,最後交付需求。”

敏捷開發之 12 條敏捷原則

1、我們最優先要做的是通過盡早的、持續的交付有價值的軟件來使客戶滿意。

註:客戶的期望值管理

2、即使到了開發的後期,也歡迎改變需求。敏捷過程利用變化來為客戶創造競爭優勢。

註:歡迎變更需求但不是意味著隨時變更,在一個計劃節點內要保證需求不變更

3、經常性的交付可以工作的軟件,交付的間隔可以從幾周到幾個月,交付的時間間隔越短越好

註:比如scrum,節點周期往往設置為2到4周

4、在整個項目開發期間,業務人員和開發人員必須天天都在一起工作

註:研發人員對業務的理解可以使產品更具備可用性甚至用戶體驗突出,也加深不同團隊的交融理解

5、圍繞被激勵起來的個來構建項目。給他們提供所需要的環境和支持,並且信任他們能夠完成工作。

註:比如針對需求和實現性大家的頭腦風暴,鼓勵每個人發言,比如任務采取主動領取,而不是被動分配

6、在團隊內部,最具有效果並且富有效率的傳遞信息的方法,就是面對面的交談

註:面對面交談不但效率高,而且有利於清晰透徹的了解對方的意圖

7、工作的軟件是首要進度度量標準。

註:每一個節點都要保證軟件是可用的,而不是99%的完成但不可用

8、敏捷過程提可持續的開發速度。責任人、開發者和用戶應該能夠保持一個長期的、恒定的開發速度。

註:scrum節點就如同心跳一般

9、不斷地關註優秀的技能和好的設計會增強敏捷能力。

註:倡導每個人要有自主學習能力,建立學習型組織

10、簡單----使未完成的工作最大化的藝術----是根本的。

註:大道至簡 (豆瓣)UNIX編程藝術 (豆瓣)

11、最好的構架、需求和設計出自於自組織的團隊

註:《失控》中的去中心化,生物般的進化

12、每隔一定時間,團隊會在如何才能更有效地工作方面進行反省,然後相應地對自己的行為進行調整

註:“實踐——反省——修正——成長......”的正循環

基於以上這些原則和關鍵詞,抽出幾個敏捷開發的核心:“價值”、“客戶”、“人”、“團隊”。



敏捷實踐之Scrum

大家要明白一個區別,敏捷開發是一種思想,下面來講述一下承載這種思想的其中一種開發過程Scrum。

技術分享


從這張開發過程使用的統計圖中可以看出Scrum的流行程度。Scrum本身並不是方法論,它只是一個框架,它只定義了高層次的管理流程,如下圖示

技術分享

它並不涉及具體開發方法或者人員的有效溝通技巧等。這些沒有涉及的領域需要同其他理論和技能互為補充,以確保項目的成功。

技術分享

技術分享

可以看到Scrum的實施過程是建立在敏捷開發思想12原則基礎上的。反過來,對流程的實施也可以加深大家對敏捷原則的理解。

Scrum兼有的價值觀

  • 核心價值觀:承諾、專註、公開、敬重和勇氣

  • 提倡的原則:自我管理、湧現機制、可視性和評估/適應循環

Scrum的要點提煉

  • Backlog——明晰商業價值,場景化用戶故事

  • 任務估算——精細,可控,準確

  • 會議——專註,高效,開放

  • 目標——清晰,可達成


敏捷開發的書籍推薦

硝煙中的Scrum和XP

高效程序員的45個習慣


本文出自 “永遠的朋友” 博客,請務必保留此出處http://yaocoder.blog.51cto.com/2668309/1977245

敏捷開發思想及Scrum實踐