---
# System prepended metadata

title: 12th 鐵人賽 (Day_02) 為什麼要寫user story？
tags: [12th 鐵人賽]

---

---
title: 12th 鐵人賽 (Day_02) 為什麼要寫user story？
tags: 12th 鐵人賽
--- 
# Day02 為什麼要寫user story？
## user story？
一般來說在專案開發的時候，會將網站的功能轉化成，user story ，也就是利用簡短的方式，將功能描述出來，最常見到的寫法就是：
**(某個角色) 能夠做到(某種功能)，以達到(商業價值)**
>As a (role of user), I want (some feature) so that (some business value).
>
>例如：身為使用者，我可以新增、修改以及刪除貼文
>
雖然簡易的個人部落格是不太需要這件事情的，不過對於一個新手來說，還是來練習寫寫看吧！

身為使用者，我可以：
1. 編輯我的個人檔案
2. 新增、修改、刪除文章
3. 文章可支援markdown語法
4. 可上傳圖片
5. 看到貼文的留言
6. 將貼文做分類

身為訪客，我可以：
1. 看到所有的貼文
2. 可以對於貼文留言
3. 可以利用分類來篩選文章

在我學習的過程中，寫user story這件事好像變成是一種既定的流程．．．
## **為什麼要寫user story呢？**
在解答這個問題之前，先問問自己，知道什麼叫做敏捷開發或是Scrum嗎？
好吧，兩個月前的我的確不知道．．．。

在軟體開發的模式上，目前常常聽到的就是敏捷式開發(Agile），(另一種則是瀑布式開發（Waterfall）)，是一種：**以人為本，強調團隊間的合作互動**的開發方式，wiki上講到：
>是一種應對快速變化的需求的一種軟體開發能力。相對於「非敏捷」，更強調程式設計師團隊與業務專家之間的緊密協同運作、面對面的溝通、頻繁交付新的軟體版本、緊湊而自我組織型的團隊、能夠很好地適應需求變化的代碼編寫和團隊組織方法，也更注重軟體開發過程中人的作用。
>
而Scrum就是實現敏捷式開發的一種方法，採用小增量，多迭代，尋求回饋為核心價值。
若對上面不太了解的可以看看[wiki](https://bre.is/oXQpRyrz)跟這幾篇文章：
[深入淺出「敏捷軟體開發：Scrum」(上)](https://bre.is/Rme4MUP7)
[深入淺出「敏捷軟體開發：Scrum」(中)](https://bre.is/pW2eGkRP)
[深入淺出「敏捷軟體開發：Scrum」(下)](https://bre.is/8BMpbHej)

好，話題扳回來，在scrum的開發模式下，會要求把功能拆成細項，並寫成指定的格式，而格式就是我們上面所提到的：
>As a (role of user), I want (some feature) so that (some business value).
>
這是敏捷開發非常重要的一環，可以將功能拆分成有創造價值的區塊，每個區塊又各自獨立，十分利於管理！(還可以標註優先權！)


寫到最後來幫大家統整一下，為什麼要寫user story呢？

將功能寫成 user story 的方式，可以將功能拆分成細項，讓團隊實現小增量的提交，也能讓團隊便於管理專案的進度(通常會配合[看板](https://bre.is/WtYyg7aZ)一起使用！)

雖然這一篇跟 rails 好像沒什麼關係，不過在專案開發還是會碰到，就請各位大大見諒一下

謝謝各位，我們明天再見！

---
參考文章：
[ihower ](https://ihower.tw/blog/archives/2090)
[深入淺出「敏捷軟體開發：Scrum」(上)](https://bre.is/Rme4MUP7)
[深入淺出「敏捷軟體開發：Scrum」(中)](https://bre.is/pW2eGkRP)
[深入淺出「敏捷軟體開發：Scrum」(下)](https://bre.is/8BMpbHej)