敏捷(Agile)是什麼?

要確實按表操課?

前言

在大學的時候,偶然聽到敏捷式開發(Agile Development)。在就讀大二時,由台新銀行尚瑞強總經理開啟敏捷開發的第一槍之後,近年來,許多銀行也開始使用敏捷式開發增強其網銀應用程式。我們時常耳聞的一個名詞,中間夾雜了不少成功案例,或許或多或少對於這個名詞有概念,但式卻又不知道全面的東西。

文件內容多數參照維基百科翻譯,確保大家找資料時,不會受到專有名詞不一致產生疑惑。

敏捷宣言的來由

「敏捷宣言」,這個宣言起源於 2001 年初,十七個人在度假聚會、吃喝玩樂的時候,因緣際會下促使敏捷「軟體開發」宣言出現。Agile 代表性的方法包含有極限編程(XP), Scrum ,動態系統開發方法(DSDM)等等。

敏捷的價值

如果你到 http://agilemanifesto.org/ 開始瀏覽內容,你會發現首頁映入眼簾的台詞:

這段話的意思是「我們正在藉由親自並協助他人發現更優良的軟體開發方式。透過這項工作,我們已經開始重視.....(下文略)。」

強調要下去幫忙,而非打嘴砲式的實施敏捷精神。

敏捷四價值

這張圖片詮釋了敏捷的四個核心價值,中譯如下:

  • 成員(Individuals)與互動:重於流程與工具
  • 可用的軟體:重於詳盡的文件
  • 與客戶合作:重於合約協商
  • 回應變化:重於遵循計劃

雖然重視右邊的內容,但是我們更重視左邊的內容。

其中,每句話的意思有:

  • 成員(Individuals)與互動:自組織的團隊以及良好的溝通模式是很重要的,因為如論專案以及產品,都是透過大量的溝通來完成的。
  • 可用的軟體:隨時確保軟體可用,因為軟體可以帶來價值,當然文件也很重要,但是敏捷認為製作過量的文件,文件會過期,撰寫時也需要花費大量心力維護,甚至該文件只是因為官僚體制下的要求。
  • 與客戶合作:由於需求無法在一開始就定案,所以最好直接與客戶面對面,以便在可用軟體的回饋的基礎上逐步闡述和調整出更精煉的需求。
  • 回應變化: 快速響應局勢變化和持續發展。

整理的重點如下圖:

敏捷十二原則

下方解釋皆為個人體會與看法。在學習時,我將敏捷的十二原則分為三大類:不斷產出、團隊溝通與提升設計。

不斷產出

我們永遠希望自己的工作或是產品都能有進度,這樣才能交付工作內容領薪水,或是把產品推到人們面前產生金流。

因此,敏捷宣言有提到幾個與不斷產出有關的事項:

  • 我們最優先的任務,是透過及早並持續地交付有價值的軟體以滿足客戶需求。
  • 經常交付可用的軟體,頻率可以從數週到數個月,以較短時間間隔為佳。
  • 可用的軟體是最主要的進度量測方法。
  • 敏捷程序提倡可持續的開發。贊助者、開發者及使用者應能維持穩定的步調。

人們多數都是看到才相信,也因此,交付一件事情變得非常重要。如何交付,除了交付有價值的事情外,再來就是穩定,沒有任何人喜歡事情被他人虎頭蛇尾,特別如果這件事情的責任是他扛的話。

整理的重點如下圖:

團隊溝通

專案完成靠溝通,這是千古不變的道理。溝通是作為一種交換訊息、交流情感的方法。若完成一個產品是引導團體和個人一起完成目標的過程,溝通則是完成此事的重要靈魂。因為在過程中,無論是確認需求、安排工作、化解衝突,還是進行產品規劃等,無不需要良好的溝通。敏捷宣言有提到幾個有關溝通的事項:

  • 業務人員與開發者必須在專案全程中天天一起工作。
  • 面對面溝通是傳遞資訊給開發團隊及團隊成員之間效率最高且效果最佳的方法。
  • 最佳的架構、需求與設計皆來自於能自我組織的團隊。
  • 以積極的個人來建構專案,給予他們所需環境與支援,信任他們可以完成工作。
  • 團隊定期自省如何更有效率,並據之適當地調整與修正自己的行為。

整理的重點如下圖:

提升設計

持續改善是指「對企業不同領域或工作位置上所做的不斷的改進和完善。」逐漸、連續地增加改善,是進步的最大要素,也許與會的人員認為透過以下三個原則,可以為自己以及團隊持續在軟體設計上進步:

  • 持續追求優越的技術與優良的設計,以強化敏捷性。
  • 精簡──或最大化未完成工作量之技藝──是不可或缺的。
  • 竭誠歡迎改變,就算處於開發後期。敏捷流程掌控變更,以維護客戶競爭優勢。

整理的重點如下圖:

結論

敏捷的概念並不難,不但有學習資源,也沒有太高的進入門檻,有許多中譯文章及大師級前輩的分享心得在網路上,但需不斷在實踐中練習,你也可以開始「敏捷」起來!

--

--