“敏捷(Agile),即創造和回應變化的能力。”國際敏捷聯盟(The Agile Alliance)是這樣定義“敏捷”的。
在這個 “VUCA”時代,任何組織不僅謀求當下的生存力和競爭力,而且它們也意識到唯有擁抱變化才是永恒的主題,因此更希望自己具有不斷適應難以預測變化的能力。在面對不確定性時,我們往往會嘗試很多種可能有效的方法,通過收集、分析和學習,做出相對應的調整,如此反復。如何能在更短的周期內完成更高的投入產出比,則是敏捷所關心的問題。
從上世紀90年代開始,人們試圖以敏捷的方式開展作業。在軟體開發領域,傳統的軟體構建方式逐漸被摒棄,在實踐中先后誕生了一些頗受關注的輕量級的軟體開發方法。2001年,17位軟體開發人員聚集在猶他州的Snowbird,討論他們各自領域對于作業的想法以及各種軟體開發方法,尋找其中的共性,最終提出了著名的“敏捷宣言”以及12項原則,正式宣告了敏捷開發運動的開始。

傳統的開發模式是基于“計劃”開展的,但大多數專案周期通常較長,這種計劃模式在實施程序中會遇到很多問題,比如專案需求一開始并不明朗,專案團隊也不一定完整,這時候計劃本身都是存在瑕疵的,那專案開發管控程序可想而知。
而敏捷開發模式則提供了一種新的模式,即小步快走,不斷調整,快速迭代!你需求不明朗沒關系,我們先做一小丟丟,對了就繼續不對也不至于說損失很大,調整方向也來得及,通過這種模式不斷糾正最后不斷趨近客戶最終想要的東西。
團隊成員之間的信任和開放式的溝通、協作、適應是敏捷的核心,而在團隊中形成產品質量、可用性和完整性等方面的統一標準,持續優化作業規則和流程則是自組織的體現。敏捷倡導者和實踐者堅信,自組織是敏捷開發團隊發揮最佳的靈活性、創造力和生產力以應對變化的能力源泉。
適用敏捷的專案、團隊
一些研究資料表明,不是所有敏捷開發專案都能取得成功,也并非所有瀑布模式的專案一定會失敗。理智的軟體開發團隊應在對產品、專案和團隊特性分析的基礎上,選取更合適的開發模式。
任何專案都會受到三類條件的約束:
? 范圍:即專案的目標、任務以及相關方的期望是什么;
? 時間:即規定專案需要在多長時間內完成;
? 資源:包括專案的經濟成本和人力資源。
專案管理就是在三者之間尋找一個相對平衡的點,以便讓專案盡可能實作預期的進展和結果。在判斷采取哪種開發模式時,我們可以自問:是用更長的時間,甚至冒著延遲的風險,交付一個足夠好的產品?還是盡早推出一個可用的產品,通過市場反饋和高頻迭代讓它持續變好?
瀑布模式的邏輯是將專案范圍,也就是客戶提出的產品需求作為固定條件,基于此預估軟體開發專案所需要的時間和資源,形成專案計劃。假如某開發團隊在日程表走過一半的時候,發現幾乎無法在計劃的發布日期前完成剩下的作業內容,要么他們不得不將發布日期推遲,要么向專案增派更多人力 —— 顯然這樣將會增加專案成本,還不一定確保專案能按新調整的計劃完成。為了避免這種窘境,采用瀑布模式的軟體開發專案往往沒具備以下特征:
? 在開發啟動前,專案的所有需求都非常明確、清晰,不會在開發程序中變更,并以此作為里程碑或最終交付的驗收標準;
? 開發團隊做過類似的產品,對于需求足夠熟悉和有把握。
對敏捷開發而言,“大而全”的產品被拆分成若干個小迭代,如果將每次迭代看作一個專案,那么專案范圍中最為關鍵的是以交付一個可面向市場的、可作業的產品作為目標基調,先將迭代周期長度或產品發布的時間節點(時間條件)、開發團隊產能(資源條件)確定下來,再反過來考慮在這些條件下,按最需要實作的需求或功能的優先級排序,盡力能將產品做到什么程度。相比瀑布模式,敏捷開發更適合這樣的專案:
? 對于開發團隊來說是一個新的挑戰;
? 產品需求復雜或不確定;
? 相關方對上市時間的要求大于對產品完善程度的要求。
那么,敏捷開發適合什么樣的團隊呢?如何確定敏捷是否適合你的團隊?
在心態層面,盡管敏捷原則性的內容易于理解,但由于缺少特別標準、普適的實踐方法,剛開始接受敏捷的團隊需要有足夠的勇氣和耐心試錯、磨合,從實踐中總結經驗以適應敏捷的開發風格。在技能層面,敏捷團隊希望它的成員都是多面手,這樣在開發程序中的任何時刻,每個人都可在不同的任務上以不同角色貢獻自己的力量,從而確保團隊能夠高效釋放產能,在有限的迭代周期內完成更多任務。在協作層面,敏捷團隊推崇開放和相互信任的關系,樂于保持高頻、雙向、充分的溝通互動,讓產品用戶及其他相關方參與完整的開發旅程。
除了團隊本身以外,當我們談論敏捷時,也需要關注敏捷開發團隊所在的組織能否為他們的敏捷實踐提供一個有力的支持環境,這就需要組織高層對于敏捷價值觀有高度認同、對于敏捷基本理念和概念有正確理解,并給予敏捷開發團隊足夠的信任、自主權和精進空間。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/283267.html
標籤:敏捷開發
上一篇:AI 炫酷障礙文字
下一篇:陳明軒
