首先什麼是敏捷開發呢?
敏捷開發指的是一種面臨迅速變化的需求快速開發軟體的能力!
敏捷式軟體開發 (Agile Software Development)宣言:
·個體和互動 勝過 過程和工具
·可以工作的軟體 勝過 面面俱到的文檔
·客戶合作 勝過 合約談判
·響應變化 勝過 遵循計劃
雖然右項也有價值,但是我們認為左項具有更大價值。
具體詮釋[註:()內為本人看法]:
1.個體和互動勝過過程和工具
人是獲得成功的最為重要的因素(強調以人為本的思路本來就是符合唯物主義思想的,但是好象還有很多公司無休止的加班,又違背了這一思路)但是更應該強調團隊的作用(如何組織一批富有創造力的優秀團隊成員是一門很高深的管理哲學,個人認為團隊成員的合作精神比單純的技術更重要,技術可以磨練,但是合作精神、人品、觀念是難以在短時間內得到質的飛躍);
團隊的構建要比環境的構建重要的多(這就是為什麼現在有很多聰明的老闆、公司喜歡集體挖人的原因了,招入一個成型的團隊將可以讓一家年輕的公司迅速步入正軌,現在的it人員往往比較急功近利,很注重眼前利益,這山望著他山高,也許是人員跳槽最頻繁的一個行業吧,所以一個公司想培養一個成熟、穩定、生產效率高的團隊要付出很大的成本);
2.可以工作的軟體勝過面面俱到的文檔
(請注意這裡指的是“面面俱到”的文檔,要編製和維護這些“面面俱到”的文檔要花費很多人力物力,很容易陷入文檔災難),當然“沒有文檔的軟體是一種災難”,然而過多的文檔比過少的文檔更遭。
最好的兩份文檔是代碼和團隊,人和人之間的互動是把這分團隊成員頭腦中儲存著時常變化的系統脈絡傳授給他人的最快最有效方式(這裡有點偏激,至少在國內行業普遍存在一種現象,就是公司特別是中小公司時常處在人員流動狀態,要想每份代碼都能達到團隊所有成員或新成員接手時清晰是很難的,估計沒幾家公司能辦到,包括各大公司,是一種理想狀態);
Martin文檔第一定律:直到迫切需要並且意義重大時,才來編製文檔。
3.客戶合作勝過合約談判
成功的項目需要有序、頻繁的客戶回函。不是依賴於合約或者關於工作的陳述。那些為開發人員和客戶協同工作方式提供指導的合約才是好合約;成功的關鍵在於和客戶之間的真誠協作,並且合約指導了這些協作,而不是試圖去規定專案範圍的細節和固定成本下的進度(目前很多項目開發合約僅僅是業務上的一個約束,並沒有在項目的開發上進行多少關注,往往在項目完成前就失去對客戶和開發人員的協同指導作用,如何將合約達到以上提及的目的呢?值得思考)
4.響應變化勝過遵循計劃
響應變化的能力常常是決定著一個軟體項目的成敗;
較好的做計劃的策略是:為下兩周做詳細的計劃,為後三個月做粗略的計劃,再以後就做極為粗糙的計劃。(目前國內軟體行業正經曆著不斷變化,所以我認為國內軟體項目不怕變化)