[v] #001 User Story 筆記

學 Rails 半年了,半年前剛接觸這些主題時,只能透過 google 到的生冷名詞解釋來理解;半年後,許多踩雷的痛轉換成一點點經驗值,而能夠在每篇的最後寫上個人小小的心得,做為學習成果的驗收。

這是第 001 篇

User Story 是什麼?

User story 是一種敏捷式開發的工具,不直接把 spec 寫死,而是模擬使用者情境,寫出在 who, when, why, what, 使用者是誰、因為什麼因素、在什麼情況下、需要什麼功能。這些都是使用情境,不涉及技術。

為什麼我們要用 user story?

  • 幫助釐清要開發的功能
  • 釐清後方便規劃開發流程
  • 會做的先做,重要的先做。

如何使用 user story ?

身為一位 ________ , 為了能夠 ________ ,我需要在 ________ 的情況下,使用 ____________ 的功能。

個人心得

剛開始練習寫 user story 的時候,不知道 user story 要寫多細,常常洋洋灑灑寫了一堆像是 specs 的東西,但又因為經驗不足而漏掉重要的 stories, 導致實作的過程常常為了補充 stories 而在商業邏輯和程式邏輯間不斷切換,干擾思緒。

我目前的作法是先寫下 user story 大致的架構,接著順著這架構去發展進一步的情境,思考每個情境的合理性,並在大的 story 下進一步發展出較細小的、更接近實作目的的小 stories. 過程中常常會有原本沒想到的 story 浮出來的情況,這是正常的,這時候再加進去就可以了。

舉例來說,我要做一個結合番茄鐘和待辦清單的 app, 我的 user story 發展的過程可能是這樣:

V1

使用者能用蕃茄鐘並記下代辦事項

V2

使用者能使用番茄鐘

使用者能自訂番茄鐘的時間長度
使用者能快速記錄干擾
使用者能中斷番茄鐘

使用者能記下待辦事項

使用者能快速記下待辦事項
使用者能給待辦事項分組
使用者能給待辦事項標上重要度

V3

使用者能使用番茄鐘

使用者能自訂番茄鐘的時間長度

  • 使用者有預設的番茄鐘時間
  • 使用者能設定每顆番茄時間、短休息時間、長休息時間、長休息頻率。

使用者能快速記錄干擾

  • 使用者能快速標註干擾的時間點
  • 使用者能記錄干擾的原因
    • 使用者能設定干擾原因清單
    • 使用者能從干擾原因清單挑選干擾原因記錄在干擾時間中

使用者能中斷番茄鐘

使用者能記下待辦事項

使用者能快速記下待辦事項

  • 使用者能按下一個 "+" 的按鈕就開始記錄待辦事項

使用者能給待辦事項分組

  • 使用者能給待辦事項設定任務分組
  • 使用者能給待辦事項加上標籤

使用者能給待辦事項標上重要度

  • 使用者能給待辦清單標上0-3的重要度

V4

......

V5

......

依此類推

當整個 user story 寫好後,對於要做哪些事情就有一個很清楚的藍圖,並且每個小 story 背後需要哪些 specs 來完成,也會有比較清晰的輪廓,因為這些在發展 user story 的過程中都思考過至少一遍了。