什麼是敏捷式 (Agile) 開發?
敏捷式是一個名詞,用於描述軟體發展的方法、強調漸進式傳遞、小組共同作業、持續規劃和學習。 敏捷式不是一種流程,而是規劃小組所要執行之工作的觀念或思維。 以反覆式開發法為基礎,可協助小組更妥善規劃及因應軟體開發過程中無可避免的變更。 讓我們聽聽最新版本出爐後 Andy 與 Mara 兩人的討論。
Mara 認為她已讓小組對 DevOps 產生些微興趣,但進展仍然停滯不前。 小組忙於修正最後一版的 Bug,而無暇顧及其他項目。
您應該記得產品經理 Irwin,她提供了一些競速遊戲網站相關的重大客戶意見反應給小組。 解決這些問題的過程令人頭痛。 Andy 和 Mara 撰寫程式碼,再將程式碼交給測試人員 Amita。 Amita 似乎總會找出新的 Bug,只好將程式碼退回。 組建伺服器故障。 即使遊戲網站在開發和測試環境中一切正常,Tim 仍無法在生產環境中進入網站作業。 每個人都長時間工作,並犧牲了幾個週末加班。
版本終於出貨之後,Mara 和 Andy 坐了下來喝杯咖啡。 他們都累壞了。 Mara 感到很受挫,但 Andy 抱持不同的心態。
Andy:我不懂你為什麼會感到意外。 推出軟體本來就是個苦差事, 麻煩的事接二連三。 難道你以前作業的方式不同嗎?
Mara:沒錯,而且我認為我們應該可以讓這裡的工作更輕鬆一點。 我真的相信 DevOps 可以幫助我們。
Andy:我記得我們做過價值流程圖練習,接下來呢? 我們就開始忙新版本的工作了。 我還以為 DevOps 的部分已經結束了呢!
Mara:我們還可以做很多事。 我認為我們應該踏出第一步,做一些敏捷式開發規劃。 我們可以使用 Azure Boards 協助大家。
Andy:你說的敏捷式開發是什麼意思?
Mara:敏捷式開發是一種軟體開發的方法。 「敏捷式開發」是在 2001 年 Agile Manifesto (敏捷軟體開發宣言) 中首度出現的詞彙。 此宣言建立了一些指導原則,能夠讓軟體開發更有效率。 宣言內容如下:
我們重視:
- 個人與互動,更甚於流程圖和工具。
- 偏向工作軟體更甚於完整文件。
- 偏向與客戶共同作業更甚於合約交涉。
- 因應變化,更甚於遵循計畫。
Andy:如果你知道任何可以讓生活更輕鬆的神奇魔法,我絕對支持。 每次我回家時,孩子都已經睡著了。 不過,這些話說來動聽,卻沒有具體的解決方案。
Mara:這不是魔術,但我們可以一點一滴地做到。 Azure DevOps 可為我們提供實作敏捷做法所需的工具。 現在,當我們要進行規劃時,就可以使用 Azure Boards。 首先,你可以向我說明建置流程圖,並幫我找出關鍵問題嗎?
在喝了許多咖啡之後,Mara 和 Andy 找出了建置流程圖中最大的問題。 而所有問題都在最後一個版本期間爆發出來。 Andy 離開以後,Mara 看著手邊潦草的筆記,並決定自己進行一些敏捷式規劃。 她憑藉一己之力,使用 Azure Boards 的基本流程圖,並在單一位置取得所有問題。
她的下一個步驟就是向小組展示面板,並讓大家參與。
採用敏捷式開發的建議
小組正在準備開始採用敏捷式開發的第一步。 以下是任何小組都能用來在組織中納入敏捷式開發的一般建議。
建立支援敏捷式開發實務的組織結構
對於大部分的組織而言,採用敏捷式開發可能很困難。 因為會需要一些思維轉變和文化變革,以挑戰組織內的許多現有原則和流程。 傳統上,大部分的公司都使用水平式團隊結構。 在實務上,這表示小組會對應到軟體架構。 例如,可能有一個小組負責應用程式的使用者介面、另一個負責資料的小組,以及負責服務導向架構的另一個小組。
不過,垂直式團隊會為敏捷式開發專案提供更好的結果。 垂直式團隊會橫跨架構,並與產品結果一致。 例如,可能會有一個小組負責應用程式的電子郵件部分,而小組成員則來自於上述這三個專業領域。 垂直式小組結構的另一個優點是,可藉由新增小組來進行調整。
指導團隊成員了解敏捷式技術與做法
第一次開始採用敏捷式開發技術和實務時,有些團隊決定雇用外部教練。 教練甚至可以與多個小組合作,協助移除組織障礙和獨立運作的部門,因此通常都具有教學和管理技能。 他們也可以用敏捷式開發技術來訓練小組成員,例如如何執行站立和審核會議。 但經過一段時間後,小組成員必須培養相互指導的能力。 這表示,大部分的工作都應該共同進行,而不是由個人單獨花費大量時間進行。
啟用團隊間和跨小組共同作業
如果共同作業是成功進行敏捷式開發的關鍵,有哪些方法可以鼓勵您採用此方式? 以下是一些祕訣。
文化變革
要改變文化特性時,請記住幾件事。 小組成員必須有一個安靜、舒適的地點才能進行。 且需要可專注的空間,不會有分散注意力和外力干擾。
會議是工作不可或缺的一部分,小組成員會覺得會議占據了他們的工作時間。 若要讓小組成員擁有更多控制權,會議需要議程和嚴格的時間範圍。
非同步通訊 (如電子郵件和訊息) 可能會讓人產生壓力,通常大家覺得應該要立即收到回覆。 請注意,您不一定會立即收到通訊的回覆。
遠端小組成員現在是許多公司的標準。 每個人都需要熟悉所有的團隊成員,並且將所有成員一視同仁,無論是在辦公室內外工作。 透過通訊共同作業應該已成為組織的 DNA 的一部分。
即使意見不同,良好溝通的重要性依舊相當重要。 相較於敏捷式開發團隊,衝突解決是很好的技巧。
全方位小組
就像團隊成員共同合作一樣重要,小組也必須共同合作。 跨功能的團隊加入了新的技能和觀點,讓每個人都能夠更容易解決挑戰。 全方位小組也會讓整個組織更緊密。 可減少地盤之爭,並提高每個人一同達成共同目標的意識。
共同作業的工具
良好的工具可協助您的敏捷式開發小組成員在小組內和其他小組之間更有效率地共同作業。 以下是一些協助您快速入門的選項:
- Microsoft Teams:Teams 是一種應用程式,可提供聊天、開會、筆記和檔案儲存的場所。
- Skype:Skype 很容易使用,而且是實用的一般用途工具。 許多人已經安裝了該程式。
- Slack:Slack 可提供許多不同的通道,全都來自單一介面。 您可以透過許多方式來整理這些頻道,例如依專案、小組或主題。 系統會保留交談並可供搜尋。 新增內部和外部小組成員非常輕鬆。 您可使用多個協力廠商工具 (例如適用於原始程式碼的 GitHub) 來與多個 Slack 整合。
其他常見的工具包括 Google Hangouts、Asana、Trello、GoToMeeting 和 monday.com。 請嘗試熟悉這些選項,以了解哪些選項符合小組和公司的需求。