隨著科技的進步速度呈指線型增長,及近年來因中美貿易戰、疫情衝擊、全球性惡性通膨等因素,讓未來充滿著高度不確定性,「敏捷」就在這樣的背景下逐漸走入大家的視野中。
何謂敏捷開發?
敏捷開發是一種以人為核心、迭代、循序漸進且持續交付的開發方法。在開發過程中會將目標切分為數個可作業的階段性目標,再將這些階段性目標細分為多個互相聯繫且可獨立運作的小項目,以此減少前期所需投入的規劃和設計資源。在每次迭代結束後,都會有一個可用的發行版,透過多次的迭代漸進的達到目標。
敏捷核心思維
- 【個人與互動】重於流程與工具:不強制規範開發團隊的作業流程與工具,而是讓團隊盡可能去嘗試各種敏捷工具、方法論和流程,並從中找出最適合自己團隊的作業模式。敏捷的精神是以人為本,流程跟工具只是用來替人服務,不應該本末倒置。
- 【可用的軟體】重於詳盡的文件:這點是敏捷精神最容易讓人誤解的一點,很多人會誤以為敏捷團隊不寫文件也不做計劃,但事實上敏捷團隊在文件跟規劃上所花的時間遠比傳統方式多很多,為了配合不斷迭代必須隨時檢視計畫並調整計畫與文件,但想只靠調整文件來因應敏捷專案的高度變化性是很困難的,所以在敏捷精神中希望透過便利的軟體來提高效率,以更好的應對專案變化。
- 【與客戶合作】重於合約協商:合約立約者的報價通常都是種賭注,賭他們能在時限內完成任務,利潤則是取決於是否能又快、又好、又省的完成客戶需求。所以合約為基礎的專案通常都只著重在方向與時間。但在敏捷精神中專案內的各角色就像一群合夥人,大家齊心協力發揮最大價值。透過客戶的持續參與及敏捷團隊的持續交付可用軟體,確保客戶可以獲得所投入時間與金錢的最大回報價值,以降低前期洽談合約的必要性。
- 【回應變化】重於遵循計劃:在專案執行的生命週期中,隨時隨地都會發生變化,如果不在原計畫出現偏差的初期就修正,那就會造成「失之毫釐,差之千里」的窘境。所以敏捷精神希望建立一個可以預見以及欣然接受變化的靈活流程。既然計畫趕不上變化,不如就針對變化再重新計畫吧。
敏捷十二原則
- 我們的首要任務是通過早期和持續交付有價值的軟體來滿足客戶。
- 樂於接受不斷變化的要求,甚至是開發後期。敏捷流程利用變化來實現客戶的競爭優勢。
- 經常交付工作軟體,從幾周到幾個月,優先考慮更短的時間尺度。
- 業務人員和開發人員必須在整個項目中每天一起工作。
- 圍繞有動力的個人建立項目。為他們提供所需的環境和支持,並相信他們能夠完成工作。
- 向開發團隊內部和內部傳達訊息的最有效和最有效的方法是面對面交談。
- 工作軟體是進步的主要衡量標準。
- 敏捷過程促進可持續發展。贊助商,開發者和用戶應該能夠無限期地保持穩定的步伐。
- 持續關注技術卓越和良好的設計可提高靈活性。
- 簡單性 — 最大化未完成工作量的藝術 — 至關重要。
- 最好的架構,要求和設計來自自組織團隊。
- 團隊定期反思如何變得更有效,然後相應地調整和調整其行為。
敏捷與精實-異曲同工之妙
敏捷與精實的精神中有很多相似之處如:
- 以人為本
- 消除不必要浪費
- 持續迭代追求完善
- 為客戶尋求最大價值
敏捷和精實差異比較:
兩者有許多相似的概念,差異點也可以互相補足,所以進而延伸出了「精實開發」、「敏捷製造」等等的混合應用方法。
延伸閱讀
維基百科:精實軟體開發
MBA 智庫百科:敏捷製造
結語
大多數的企業一聽到敏捷就非常的排斥,但不可否認的是敏捷思維相當適用於現今高度不確定性的大環境下,那要如何著手導入呢?筆者認為可以「敏捷」的實踐敏捷方法,先從切割專案及定時交付可用成果開始,在逐漸縮短迭代間隔並視情況慢慢加入其他敏捷方法,總之就是先做再說,然後再針對回饋結果進行改善,如此循環往復。
另外不是導入了敏捷後就不需要其他的管理工具,針對不同的情境總會有最適合該情境的解決方案,應將敏捷看作是一種方法或是態度。還有導入敏捷並不是為了加快開發速度,而是用來解決複雜或高度不確定問題。