﻿# 一次搞懂 Azure Boards 的 Iterations, Areas 與 Teams 差異之處

我經常在企業內訓分享 Azure Boards 的專案管理心法，它是一套極其強大的專案管理工具，只要你能突破其門檻，將可有效的掌握專案進度，大幅提昇專案透明度，同時也能減輕 PM 的工作負擔。我們在一個參與人數多達 30 人的專案時，就開始用到了 Teams 與 Areas 的功能與概念，這篇文章我就來分享 Iterations、Areas 與 Teams 這三個概念的差異之處。

![Azure Boards](https://stwillblogassets.blob.core.windows.net/files/images/external/user-images.githubusercontent.com/7d27d35f4f7345889841-211608611-848316c3-d68f-4a68-a39b-dfdced81f0ac.png)

### TL;DR

`Teams` 用來定義一個到多個「**團隊**」，不同的團隊有不同的「專案可視範圍」與「工作流程」，你可以對不同的團隊管理不同的團隊成員，並替不同的團隊設定不同的存取權限。

> 建立 Azure DevOps 專案時，預設就會建立一個 Team 給你用，預設名稱為 `{專案名稱} Team`。

`Areas` 用來定義一個專案的「**工作小組**」，主要用來區別不同小組之間的工作。例如我在一個**專案**(Project)中有一個**團隊**(Team)，該**團隊**有不同的**小組**(Area)，而不同的**小組**之間通常所需要負責的工作內容不盡相同，所以預設來說不太需要看到彼此的 Backlogs (Scrum) 或 Stories (Agile) 等需求描述，這時我們就可以透過 Area 來區分不同的**工作項目**(Work Item)。

> 建立 Azure DevOps 專案時，預設就會建立一個 Area 給你用，預設名稱為 `{專案名稱}`。

`Iterations` 則是定義一個「**迭代週期**」，你可以定義 Iteration 的**名稱**與**起訖時間**，好讓 Azure DevOps 可以更方便的套用 Scrum 或 Agile 流程，他可以幫助 Azure Boards 在時間到期後自動將「當前週期」切換到下一個 Iteration。

> 建立 Azure DevOps 專案時，預設會建立 6 個 Iterations 給你用，預設名稱為 `Sprint 1` ~ `Sprint 6`，不夠用的話自己可以自行新增。

### Iterations (迭代週期)

我們使用 Azure Boards 通常都以 Scrum 或 Agile 流程為主，在敏捷流程的前提下，我們透過不斷的迭代(`Iteration`)可以做到在短時間內(通常是1-4周)完成一個可交付的版本，並在每次迭代結束後與客戶(或利害關係人)進行反饋，以便對下一次迭代進行改進。透過這種方式，專案經理和團隊成員可以更好地掌握專案的進展情況，並更快地檢測和修正問題，因此好處非常的多！👍

我們在專案一開始的時候，通常會依據專案計畫，先定義好整個專案的**迭代週期**(Iteration)或**衝刺週期**(Sprint)資訊，設定的資訊包含：

1.  我們預計要跑**幾次**迭代(Iterations)
2.  每次迭代的**名稱**與**起訖時間**

我們在設定 Iteration 名稱時，不一定要設定預設的 Sprint 編號，你也可以學習我們公司 Iteration 的命名方法，發揮創意，讓專案更有趣！😆

![Iterations](https://stwillblogassets.blob.core.windows.net/files/images/external/user-images.githubusercontent.com/252d133907467d3ed11d-211593611-d1cbcc6b-7cef-4346-9ac1-015bcb6dec37.png)

### Areas (區域小組)

`Area` 又稱 `Area path`，當專案越來越大，參與的人越來越多時，所有人一起看所有人的 `Backlogs` 就會顯得過於凌亂，為了降低團隊成員的面對龐大需求的壓力，透過 `Areas` 便可有效率的區分不同小組的工作。

我們可以透過不同的 Areas 來篩選 PBI (Product Backlog Items)，讓不同團隊的人可以看到不同的 Backlogs，如此一來專案便能進行得更加順利。

![Areas](https://stwillblogassets.blob.core.windows.net/files/images/external/user-images.githubusercontent.com/b451e917e8dd67f34d76-211596616-2445d8d8-868e-4aa0-a503-85c3f9e42529.png)

> 通常 Area 都會隨著 Team 一同建立，但你也可以建立多個不同的 Areas 來區分不同類型的 PBI。

### Teams (工作小組)

Azure Boards 裡面的 `Teams` 通常與「人」有關，他代表著一群人要做某些事情，你可以想像成在一個 Azure DevOps 的**專案**(Project)中，可以透過**團隊**(Team)來區分不同的**子專案**，然而你可以以「團隊」為單位進行**授權**，讓不同「團隊」的成員可以依據「權限」設定，讓不同團隊的人看到不同的**工作項目**、**原始碼**或 **Pipelines** 等等。也可以讓不同的團隊之間擁有截然不同的敏捷流程設定！

![Each team gets their own set of tools](https://stwillblogassets.blob.core.windows.net/files/images/external/user-images.githubusercontent.com/cd758bf1533e92396cd8-211605545-f55d71a7-314b-4aee-91fd-c580745d6331.png)

> [About teams and Agile tools](https://learn.microsoft.com/en-us/azure/devops/organizations/settings/about-teams-and-settings?view=azure-devops&WT.mc_id=DT-MVP-4015686)

不同的團隊之間，可以設定不同的管理者來管理各自的團隊成員，也可以設定一組 Team Image 圖像。除此之外，你也可以針對「團隊」進行細部的設定，下圖三個箭頭指向的連結，就是可以讓你用來設定「團隊」專屬的各項設定！

![Project Settings > Teams > Settings](https://stwillblogassets.blob.core.windows.net/files/images/external/user-images.githubusercontent.com/671db6199c42fdc2579f-211599749-d4744c10-805b-41ac-a63a-ac0452b3ce26.png)

在建立 Team 的時候，你可以指定一個團隊名稱、選取團隊成員、決定團隊管理者是誰，也可以直接建立一個同名的 Area 起來！

![image](https://stwillblogassets.blob.core.windows.net/files/images/external/user-images.githubusercontent.com/cd37c67bad9078038243-211598207-5430c81a-0057-4ff2-af41-f6ef0f9ff823.png)

> 因為 Team 與 Area 經常用到相同的名稱，所以很容易搞不清楚兩者的差異之處！🔥

每個團隊都可以設定不同的 Backlogs, Working days, Working with bugs

![Project Settings > Team configuration > General](https://stwillblogassets.blob.core.windows.net/files/images/external/user-images.githubusercontent.com/c1265773435a3721d3d2-211585240-51222dfa-931e-4184-b679-312aa72aeeae.png)

也可以設定挑選預設 Backlogs 使用的 Iteration，也可以選取現有專案的 Iteration 中的特定一個到多個 Iteration 做為該團隊需要進行的衝刺週期！

![Project Settings > Team configuration > Iterations](https://stwillblogassets.blob.core.windows.net/files/images/external/user-images.githubusercontent.com/44cf204aba76c511c1e9-211601115-10c67549-ea6e-4519-8c62-861f8d2194cb.png)

由於「人」會隸屬於特定「團隊」，而「團隊」又可以選擇「預設小組」(Default area)，所以你在進行 Sprint Planning 的時候，Azure Boards 就會依據你所參與的小組所設定的 Default area 來顯示 `Backlogs`，這裡就是 Azure Boards 的精華之處！也因為如此，你可以在一個 Azure DevOps 專案中，同時跑好幾個不同的 Scrum，彼此協作又不會互相干擾，超棒的！👍

![Project Settings > Team configuration > Area](https://stwillblogassets.blob.core.windows.net/files/images/external/user-images.githubusercontent.com/fb16a0e6027b13aaae26-211601584-9763e250-9040-4ebc-b1f6-73507c3b898b.png)

最後一個可以針對「團隊」來設定的功能，就是「工作項目範本」，你可以在不同的團隊之間訂製不同的「工作項目範本」，幫助團隊成員更容易上手 Azure Boards 的工作項目建立！👍

![Project Settings > Team configuration > Templates](https://stwillblogassets.blob.core.windows.net/files/images/external/user-images.githubusercontent.com/19ef0142ab829b043061-211602587-12549575-64de-4f01-89ae-265ff236e462.png)

### 總結

當 Azure DevOps 專案建立好之後，通常會這樣進行專案設定：

1.  先定義專案要有多少團隊 (Teams)，建立團隊時可以順便建立 Area
2.  進入 Project configuration 規劃更完整的 Iterations 與 Areas
3.  細部調整每個 Team 的 Backlogs, Iterations, Areas 與 Templates

### 相關連結

-   [About teams and Agile tools](https://learn.microsoft.com/en-us/azure/devops/organizations/settings/about-teams-and-settings?view=azure-devops&WT.mc_id=DT-MVP-4015686)
-   [About area and iteration (sprint) paths](https://learn.microsoft.com/en-us/azure/devops/organizations/settings/about-areas-iterations?view=azure-devops&WT.mc_id=DT-MVP-4015686)
-   [Define area paths and assign to a team](https://go.microsoft.com/fwlink/?LinkId=786956)
-   [Define iteration paths (sprints) and configure team iterations](https://learn.microsoft.com/en-us/azure/devops/organizations/settings/set-iteration-paths-sprints?view=azure-devops&WT.mc_id=DT-MVP-4015686&tabs=browser)
