在Scrum敏捷開發(fā)興起之前,最開始的軟件行業(yè)普遍采用的是瀑布式開發(fā),瀑布式開發(fā)分5 個階段:需求分析、設計、編碼、測試和維護。
--需求分析階段通常定義系統(tǒng)的需求,明確系統(tǒng)的目標;
--設計階段通常確定系統(tǒng)使用什么數(shù)據(jù)庫、系統(tǒng)模塊的劃分、各個模塊的功能;
--編碼階段用編程語言實現(xiàn)設計階段的任務;
--測試階段分黑盒和白盒測試,測試系統(tǒng)的功能是否能實現(xiàn)、是否準確;
--維護階段是根據(jù)用戶新的需要重新修改系統(tǒng),使系統(tǒng)更加穩(wěn)定,更符合用戶的要求。
瀑布式開發(fā)比較大的缺點在于產(chǎn)品投放市場的時間太慢,對變化及變更的響應難度大、成本高,員工士氣、動力和責任感方面都很低,投資回報率低,經(jīng)常失敗。
瀑布式開發(fā)現(xiàn)在正逐步被“迭代增量式開發(fā)”所取代,Scrum是一個迭代式增量軟件開發(fā)過程,通常用于敏捷軟件開發(fā),Scrum最初只應用于軟件開發(fā),后來也可以被成功地應用于其他產(chǎn)業(yè)。
現(xiàn)在Scrum通常被認為是一種用于開發(fā)任何產(chǎn)品或管理人和工作的迭代式的、增量的過程。
Scrum敏捷開發(fā)宣言主要有4 條,分別突出和強調(diào)個體與交互、可用的軟件、客戶協(xié)作和響應變化。
1.個體和交互勝過過程和工具
企業(yè)能不能做大、做強,不是說擁有一流的商業(yè)模式就可以成功,現(xiàn)代企業(yè)之間的競爭是人才的競爭,人才是關鍵因素,人是項目獲得成功最重要的因素,沒有人來執(zhí)行,即使有再好的工具和資源,也不起作用。人的合作能力、溝通能力以及交互能力比單純的編程能力和工具更重要,其實質(zhì)是強調(diào)團隊的價值,好的團隊,凝聚力強,揚長避短,成員之間互相信任、有激情、合作默契,能夠解決很多復雜的交互問題,這樣的團隊溝通效率高,再復雜的問題,可能一兩句話就溝通清楚了。人要是出了問題,再強大的工具和先進的方法都沒有用,人是工具和方法的主體,人要勝過工具和方法,只有人結(jié)合強大的工具和先進的方法才能提高生產(chǎn)率。
2.可用的軟件勝過完備的文檔
在第一個原則中也提到了好的團隊,彼此信任、溝通效率高,復雜的問題可能一兩句話就溝通清楚,這個時候,面面俱到的書面文檔就顯得有點多余,甚至有的時候還不如沒有文檔,這就好比本來用手機通話溝通就能解決的問題,偏偏選擇寫書信的方式來進行溝通,但是這并不是說就不要編寫文檔,而是在迫切需要并且意義重大時,才進行文檔編制,編制的內(nèi)部文檔應盡量精簡并且主題突出,容易理解。
3.客戶合作勝過合同談判
在產(chǎn)品實踐中,經(jīng)常會碰到與甲方客戶簽訂合同的情況,對于一個項目的情況,產(chǎn)品人員能將所有的需求細節(jié)都考慮到是較困難的,所以不可能做到一次性將甲方客戶的需求完整、清晰地表述在合同中,何不如在彼此信任的基礎上,建立互助合作式關系,積極、快速地響應甲方提出的需求,為開發(fā)團隊和客戶的協(xié)同工作方式提供指導的合同才是最好的合同,而不是在合同里追究所謂的“違約”造成彼此要承擔的責任義務。
4.響應變化勝過遵循計劃
變化是現(xiàn)實中客觀存在的,需要積極應對變化。在產(chǎn)品實踐中也一樣,計劃安排必須有足夠的靈活性,太死板不利于調(diào)整,不能盲目地按照計劃執(zhí)行,需靈活應變,短期的迭代計劃比中長期計劃更加有效。