導語:如今每當直接或間接帶一支研發團隊我都會給你們作一次敏捷思想和實踐的培訓(注:軟件方向,複雜的硬件開發流程建議使用IPD思想)。做爲一個有近10年的開發編碼工做經驗的資深程序員,做爲一個管理者,做爲一個還算轉型成功的創業者,我一直有種初心程序員
但願全部研發人員可以勇於而且會表達本身,讓更多的人瞭解本身;編程
但願全部的研發人員不只僅是機械的寫代碼,也能洞悉市場、瞭解用戶,讓本身的產出可以適配用戶和市場的需求,這未嘗不是一種成就感;app
但願全部的研發人員再也不受困於狹窄的職場方向,而是有更多可能轉型產品、市場、管理框架
我認爲敏捷開發的實踐帶給了我這些:工做的收益、心裏的釋放、轉型的機遇以及最重要的自信,因此也想分享給你們這些。ide
敏捷開發思想工具
全部人均可以從字面上理解敏捷表明着「快」;學習
呆伯特老闆的理解:沒有什麼計劃或者文檔,直接開始寫代碼......測試
不少業內人士的理解:迭代 開發。編碼
以上理解不能算是錯,但都是盲人摸象式的理解。咱們先看看幾種常見的開發模式:spa
計劃驅動的瀑布式開發;
逐步完善的迭代 開發;
風險驅動的螺旋式開發;
價值驅動的敏捷開發;
除卻外包項目常採用的瀑布式開發外,在不少人印象裏彷彿剩下的三種開發方式都該是敏捷開發,其實這裏有個文字遊戲,就是「***的」這個定語,敏捷開發是由用戶價值(用戶的需求)驅動,這纔是區分標準,這種對核心的強調,是在提醒咱們須要最重視的是什麼。至於用戶價值的意義,不言而喻——若是咱們作出的東西並非用戶須要的,那又有什麼意義?在敏捷開發的過程當中其實既有螺旋式開發的思惟,也有迭代式開發的流程,甚至有計劃式開發的階段。
敏捷宣言—價值觀
不少「保守力量」反對敏捷開發的緣由就是說敏捷不注重計劃或者是文檔等等。這裏的文字遊戲就是「賽過」二字,並非沒有,而是取捨側重的分別。總結以下:
「自組織團隊與客戶緊密協做,經過高度迭代式、增量式的軟件開發過程響應變化,並在每次迭代結束時交付通過編碼與測試的有價值的軟件。」
賽過
「與客戶肯定合同後在初期制定並遵循基於活動的完整計劃,在重型過程和工具指導下,經過完成大量文檔進行知識傳遞,最後交付需求。」
敏捷開發之 12 條敏捷原則
一、咱們最優先要作的是經過儘早的、持續的交付有價值的軟件來使客戶滿意。
注:客戶的指望值管理
二、即便到了開發的後期,也歡迎改變需求。敏捷過程利用變化來爲客戶創造競爭優點。
注:歡迎變動需求但不是意味着能夠隨時變動,在一個計劃節點內要保證需求不變動
三、常常性的交付能夠工做的軟件,交付的間隔能夠從幾周到幾個月,交付的時間間隔越短越好。
注:好比scrum,節點週期每每設置爲2到4周
四、在整個項目開發期間,業務人員和開發人員必須每天都在一塊兒工做。
注:研發人員對業務的理解可使產品更具有可用性甚至有卓越的用戶體驗,業務人員對技術的理解也會讓其更專業,還能夠加深不一樣團隊的交融理解
五、圍繞被激勵起來的個人來構建項目。給他們提供所須要的環境和支持,而且信任他們可以完成工做。
注:好比針對需求和實現性你們的頭腦風暴,鼓勵每一個人發言,好比任務採起主動領取,而不是被動分配,倡導民主和開放
六、在團隊內部,最具備效果而且富有效率的傳遞信息的方法,就是面對面的交談。
注:面對面交談不但效率高,並且有利於清晰透徹的瞭解對方的意圖,直面解決衝突
七、工做的軟件是首要進度度量標準。
注:每個節點都要保證軟件是可用的,而不是99%的完成但不可用
八、敏捷過程提可持續的開發速度。責任人、開發者和用戶應該可以保持一個長期的、恆定的開發速度。
注:scrum節點就如同心跳通常讓咱們的計劃有規律
九、不斷地關注優秀的技能和好的設計會加強敏捷能力。
注:倡導每一個人要有自主學習能力,創建學習型組織
十、簡單----使未完成的工做最大化的藝術----是根本的。
注:書籍 大道至簡 (豆瓣), UNIX編程藝術 (豆瓣) 的核心思想
十一、最好的構架、需求和設計出自於自組織的團隊。
注:《失控》中的去中心化,生物般的進化
十二、每隔必定時間,團隊會在如何才能更有效地工做方面進行檢討,而後相應地對本身的行爲進行調整。
注:「實踐——檢討——修正——成長......」的正循環
基於以上這些原則和關鍵詞,抽出幾個敏捷開發的核心:「價值」、「客戶」、「人」、「團隊」。
敏捷實踐之Scrum
你們要明白一個區別,敏捷開發是一種思想,下面來說述一下承載這種思想落地的其中一種開發過程Scrum。
從這張開發過程使用的統計圖中能夠看出Scrum的流行程度。Scrum自己並非方法論,它只是一個框架,它只定義了高層次的管理流程,以下圖示
它並不涉及具體開發方法或者人員的有效溝通技巧等。這些沒有涉及的領域須要同其餘理論和技能互爲補充,以確保項目的成功。
能夠看到Scrum的實施過程是創建在敏捷開發思想12原則基礎上的。反過來,對流程的實施也能夠加深你們對敏捷原則的理解。
Scrum兼有的價值觀
核心價值觀:承諾、專一、公開、敬重和勇氣
提倡的原則:自我管理、涌現機制、可視性和評估/適應循環
Scrum的要點提煉
Backlog——明晰商業價值,場景化用戶故事
任務估算——精細,可控,準確
會議——專一,高效,開放
目標——清晰,可達成
《硝煙中的Scrum和XP 》
《高效程序員的45個習慣 》
Jira && confluence 項目管理、wiki知識庫
Redmine 需求、原型、協做
jenkins 持續集成