敏捷開發——互聯網時代的軟體開發方式
正因為敏捷開發的這種不斷迭代升級的開發模式,使得其更加適合當今瞬息萬變的互聯網,可以說是互聯網時代的軟體開發方式。
好了,下面請看官們聚精會神,用5分鐘完成你和敏捷開發的第一次全接觸:一、什麼是敏捷開發?


第二種:如圖2
先做輛酷炫滑板車,滿足客戶家小孩兒玩耍的需求;再改造成時尚單車,滿足客戶上班騎行的需求;再改造成哈雷摩托,滿足客戶周末拉風的需求;最後依據客戶迭代升級成敞篷酷炫的電動特斯拉跑車,客戶全程滿意,最終妥妥地把支票遞給你~~如果是你,會選哪種?其實如果把造車換成開發一個軟體項目的話,那麼第一種方式我們稱為傳統的瀑布式開發;第二種方式就是我們的敏捷式開發。 請注意上述例子中有兩個關鍵詞:需求變更和迭代升級。由於現實生活中,客戶的需求是隨著市場在不斷變化的,因此那種一張圖紙做到底的方式顯然無法適應客戶頻繁變化的需求;通過迭代升級,每一次迭代都能夠交付一個最小可用的產品(MVP),客戶可以基於此產品繼續提出新的需求來不斷完善。
二、互聯網時代為什麼需要敏捷開發?
這個問題總結下來有兩點:快速試錯和擁抱變化。
今年張小龍在WXG大會上提到:『我們今天可以想一些與眾不同的點子,然後我們可以很快就看到效果,因為我們可以很快把它上線了,然後可以去驗證,如果不對就下線,如果還有改進餘地,下個版本再去改它。這是一個能夠持續實現你的想法的過程』
張小龍所說的上線、驗證、改進的持續循環流程實際上就是一個快速試錯和擁抱變化的過程。 當今的互聯網,市場變化日新月異,在不斷變化的市場中取得成功就要擁有快速試錯的能力。下面是滴滴打車最新的客戶端截圖。從圖中可以看到,滴滴支持的全部車輛服務已經覆蓋到了快車、小巴、計程車、順風車、專車等多達10種服務,而大眾剛剛熟悉滴滴時,滴滴僅有計程車、快車和順風車三種車型。
三、有哪些公司在使用敏捷開發
可以說,在如今的軟體開發領域,敏捷開發模式已經成為主流,從BAT等互聯網一線大廠到中小創業公司,從傳統的銀行、保險等企業,再到北大、清華的圖書館,都在使用敏捷開發。
國外使用敏捷開發的公司更不用說, 微軟、Google、Facebook的工程師們都已採用敏捷開發的模式進行軟體項目的開發。四、敏捷開發適合哪些項目?
實際上,敏捷開發比較適合那種有明顯緊急的時間要求、項目本身複雜程度高且比較新穎、團隊自主性強的項目。
首先,這個項目一定是有明確的時間要求,要在某個較短的時間內完成交付成品,傳統的瀑布模型無法在如此短的時間內做出快速反應,保持對項目的緊張性和專註性是敏捷開發的優勢之一。 其次,這個項目本身複雜度要高些且比較新穎。一般來說,軟體開發項目的複雜度都很高,最後,團隊成員自主性要強。實施敏捷開發的基礎就是要有一個高度自覺和自主性的團隊,敏捷開發是以人為本的。
裝修就是一個很好的敏捷項目實踐,舉個例子:小明是一名Web開發程序員,經過多年奮鬥終於在帝都買了一套100平米的豪宅,接下來的頭等大事就是裝修。 裝修可以看成一個很典型的使用敏捷開發的項目:- 緊迫感--恩,裝修的工期是非常有限的,因此必須保證在規定時間內完成
- 複雜度--裝修過的人懂的,丈量、設計、採購、裝修等等環節,每個環節之間的配合都很關鍵
- 團隊自主性--全家總動員,熱情節節高,你懂的~
我們可以把每個環節想像成一次小的迭代過程,通過完成一次次的迭代最終完成整個項目。
五、相比傳統,為什麼高效?
敏捷開發講求Idea的快速落地、高效實踐。
怎麼理解這句話呢?我們還是先來看一下敏捷開發和瀑布式開發的流程圖,左下方是瀑布式開發,右上方是敏捷開發。
在傳統的瀑布模型中,需求、開發、測試人員都在不同的Team中,假設開發要與需求溝通,那麼要跨Team去溝通,時間和空間無法保證同步,因此溝通成本較高;而敏捷開發團隊中的人員都在一個Scrum Team中,團隊不大,溝通起來成本很小。
最後是風險成本:對於瀑布模式,最大的風險成本來源於一旦開發過程中有需求變更或者嚴重的問題,所有流程都要回滾到上個階段推倒重來,且越到後期風險越高,修改的成本越大;而對敏捷模式,可以很靈活輕鬆的面對需求變更,有任何bug、需求更改可以放到下一個迭代去做,大大降低了開發過程中的風險成本。六、以人為本
敏捷開發的十二條原則中有一條叫做:激發個體的鬥志,以他們為核心搭建項目。
敏捷開發是一種以人為核心、迭代、循序漸進的開發方法,在敏捷開發過程中,人是第一位的,過程是第二位的,當然也對個人的能力和自主性提出了更高的要求
七、敏捷開發流程總覽
說了這麼多,來看一張真正的敏捷開發過程SCRUM的完整流程圖吧:

- 敏捷開發宣言:agilemanifesto.org
- Scrum Guide:scrumguides.org
- Scrum Primer:Short Introduction to Scrum
文章來自於特邀嘉賓極客學院高端培訓品牌魔鬼程序員教學總監
更多乾貨分享可以關注公眾號:魔鬼程序員推薦閱讀:
※敏捷開發必須要通過用戶故事來溝通嗎?
※項目是否必須在產品經理出整個產品的所有原圖之後才能開始進入開發階段?
※如何應對客戶頻繁但簡單的需求變動?
※為什麼Scrum不行,您的團隊是否採用過Scrum模式,效果如何呢?
