敏捷開發思想及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實踐