一百種簡單整人方法
User stories are a great way to plan development work. In theory. But how do you avoid getting burned in practice? I propose a radically simple approach.
用戶故事是計劃開發工作的好方法。 理論上。 但是,如何避免在實踐中被燙傷? 我提出了一種非常簡單的方法。
Here's a popular template to describe a user story:
這是一個描述用戶故事的流行模板:
Here's an example user story:
這是一個示例用戶故事:
User stories look at software from a perspective of user value. After implementing a story, the developers can get feedback from users whether they're satisfied or if there's something they'd like changed. That's the core idea of agile development.
用戶故事從用戶價值的角度看待軟件。 實施完故事后,開發人員可以從用戶那里獲得反饋,無論他們是否滿意或是否需要更改。 這就是敏捷開發的核心思想。
Good user stories follow the three Cs: Card, Conversation, and Confirmation [1].
良好的用戶故事遵循以下三個C: Card , Conversation和Confirmation [1]。
Card means: user stories are short. They focus on the value provided to the user. You can write them on an index card, or a Post-it. Of course, a Post-it doesn't contain all the information necessary for development.
卡 表示:用戶故事很短。 他們專注于提供給用戶的價值。 您可以將它們寫在索引卡或便利貼上。 當然,便利貼并不包含開發所需的所有信息。
So the team developing the software has conversations about the stories. Input from users and business stakeholders is necessary, but developers bring their ideas to the table as well. It's important that everybody keeps an open mind in these discussions.
因此,開發軟件的團隊可以進行對話 關于故事。 用戶和業務利益相關者的輸入是必要的,但是開發人員也將他們的想法也擺在桌面上。 每個人在這些討論中都要保持開放的態度,這一點很重要。
The team documents the results of the conversations as acceptance criteria. Checking the acceptance criteria later serves as confirmation that the team has implemented the story correctly.
團隊將對話結果記錄為接受標準。 稍后檢查驗收標準作為確認 團隊正確實施了故事。
驗收標準和投資 (Acceptance criteria and INVEST)
The acceptance criteria should answer questions like:
接受標準應回答以下問題:
What are the possible user inputs?
可能的用戶輸入是什么?
For example: "The payment options are MasterCard, Visa, [...] PayPal
例如:“付款選項包括萬事達卡,維薩卡,PayPal。
."
。”
How does the system react to user input, or a business relevant event? Under which conditions?
系統如何響應用戶輸入或與業務相關的事件? 在什么條件下?
For example: "When the user enters a wrong credit card number, the system shows the following error message: [...]"
例如:“當用戶輸入錯誤的信用卡號時,系統顯示以下錯誤消息:[...]”
There are many ways to document acceptance criteria. Bullet points, sketches, examples, tables. Development starts a few days after the conversation about the story. So developers need just enough documentation to remember the conversation.
有很多方法可以記錄接受標準。 項目符號,草圖,示例,表格。 在談論這個故事后的幾天開始發展。 因此,開發人員僅需要足夠的文檔來記住對話。
How does a team check if a story has a good enough quality to start implementing it? The INVEST criteria define a quality checklist for each story [2]:
團隊如何檢查故事是否具有足夠的質量來開始實施? 投資 標準為每個故事定義一個質量檢查表[2]:
I for Independent. The story can be implemented independently of other stories. This facilitates priority changes.
我為獨立 。 故事可以獨立于其他故事實施。 這有助于更改優先級。
N for Negotiated. The conversation between developers and stakeholders about the details of the story has happened.
N代表協商 。 開發人員和利益相關者之間就故事的細節進行了對話。
V for Valuable. The story provides visible value for users. In contrast to implementation tasks like querying the database, for example.
V表示有價值 。 故事為用戶提供了可見的價值。 與諸如查詢數據庫之類的實現任務相反。
E for Estimable. The developers can estimate the story.
E為可估計的 。 開發人員可以估算故事。
S for Small. The story can be implemented quickly. In Scrum for example in a Sprint.
小號的 S。 這個故事可以很快實現。 例如在Scrum中的Sprint中。
T for Testable. The story is so concrete that the team can derive test cases.
T為可測試的 。 這個故事非常具體,團隊可以得出測試用例。
實踐中的問題 (The problems in practice)
I like user stories. In product planning, they shift the focus from technical details to users and their needs. That's good.
我喜歡用戶故事。 在產品計劃中,他們將重點從技術細節轉移到用戶及其需求。 非常好。
And yet, in my work as an agile coach and trainer for agile approaches, I've started questioning the common way people deal with them.
然而,在我作為敏捷方法的敏捷教練和培訓師的工作中,我開始質疑人們對付它們的常見方式。
I've seen backlogs with hundreds of stories that became extremely hard to manage. I've witnessed people use the terms "feature", "epic" and "business requirement" without sharing an understanding what that even means. I've heard endless discussions about detailed acceptance criteria, and how to slice stories based on them. It was frustrating.
我看到積壓下來的數百個故事變得非常難以管理。 我目睹了人們使用“功能”,“史詩”和“業務需求”這兩個術語,卻沒有達成共識,甚至意味著什么。 我聽過無休止的討論,涉及詳細的接受標準以及如何根據這些標準對故事進行切片。 真令人沮喪。
I claim there is an alternative. A simple way to avoid all these traps. First, you need to understand that there are two fundamental levels of user stories.
我聲稱還有另一種選擇。 避免所有這些陷阱的簡單方法。 首先,您需要了解用戶故事有兩個基本級別。
目標帶來價值,但無法實現 (Goals deliver value, but can't be implemented)
In one of my courses, I ask questions like: "What can you do with a web shop?"The typical answers are: "Buy a ?product", or "Order products".
在我的一門課程中,我問一些問題,例如:“您可以在網上商店做什么? ”典型的答案是:“購買產品”或“訂購產品”。
What the participants talk about are goals. If we were a team developing a web shop, we might come up with the following user story:
參與者談論的是目標。 如果我們是開發網上商店的團隊,那么我們可能會想到以下用戶案例:
Is this goal level story valuable to the user? Yes! It reflects the needs of the web shop customer.
這個目標水平的故事對用戶有價值嗎? 是! 它反映了網上商店客戶的需求。
Can you implement this goal directly? No! In order to implement a goal, you need to derive steps to reach it first. For the story "Buy Product", the steps might look like these:
您可以直接實現這個目標嗎? 沒有! 為了實現目標,您需要采取步驟首先達到目標。 對于故事“購買產品”,步驟可能如下所示:
Each step could be documented with the user story template: "As a web shop customer, I want to enter the address so that the product is shipped to me."
每個步驟都可以用用戶故事模板記錄下來:“作為網上商店的客戶,我想輸入地址以便將產品運送給我。”
Can you implement this step level story directly? Yes! As soon as you have clarified the acceptance criteria. But is it valuable for the user? Without the other steps, no.
您可以直接實施此步驟故事嗎? 是! 一旦您弄清了接受標準。 但這對用戶有價值嗎? 沒有其他步驟,沒有。
Value only emerges when the goal has been reached. Each step represents progress towards the goal. But independently, the step has no value. Does it make sense to use the story template for it then?
價值只有在達到目標時才會出現。 每個步驟代表朝著目標前進。 但是獨立地,該步驟沒有任何價值。 那么,使用故事模板是否有意義?
徹底簡單的方法 (A radically simple approach)
The stories at the goal level are coarse grained. They can be used for long-term planning, without wasting effort on details:
目標級別的故事是粗粒度的。 它們可用于長期計劃,而不會浪費細節:
You can often realize good user stories at the goal level independently of each other. And they deliver value. They are Independent, Negotiated, and Valuable. But they are not Small, easily Estimable and Testable. Because you cannot define acceptance criteria for them without talking about steps.
您通常可以彼此獨立地在目標級別上實現良好的用戶故事。 他們創造價值。 他們是我 ndependent,N egotiated和V aluable。 但他們不是S商城,輕松?stimable和T estable。 因為您不能不討論步驟就為他們定義驗收標準。
The stories at the step level are Negotiated, Estimable, Small, and Testable. However, they are not Independent and do not provide Value alone.
在步驟級別故事是N egotiated,E stimable,S商場,和T estable。 然而,它們不是我 ndependent,不提供價值孤單。
How do you combine the two kinds of stories into one simple approach? Here's my proposal.
您如何將兩種故事組合成一種簡單的方法? 這是我的建議。
The team picks a goal, say "Buy product". The team then reflects: "What is the simplest way to reach the goal? And how can we reduce architectural risks early?"
團隊選擇了一個目標,說“購買產品”。 然后,團隊反映:“實現目標的最簡單方法是什么?我們如何盡早降低架構風險?”
Let's assume that the team sees the greatest risk in the communication with PayPal, because they've never implemented an interface to PayPal before.
讓我們假設團隊在與PayPal的通信中看到最大的風險,因為他們之前從未實現過與PayPal的接口。
So what does a simple way to get to the "Buy product" goal look like? The team puts goal level story, step level stories and acceptance criteria as stickie notes below each other:
那么,達到“購買產品”目標的簡單方法是什么樣的呢? 團隊將目標級別的故事,步驟級別的故事和驗收標準放在彼此下方的粘滯便箋上:
Here's what the acceptance criteria say (green stickies). There is only one fixed product that can be ordered. No search, no choice. The user interface is basic, and only allows users to pay with PayPal.
這是驗收標準所說的(綠色膠粘物)。 只能訂購一種固定產品。 沒有搜索,沒有選擇。 用戶界面是基本的,僅允許用戶使用PayPal付款。
These are the first steps that the developers implement. Once the developers have implemented a step, they demonstrate it to company internal stakeholders. At latest when a goal is reached, the team involves users. Getting feedback and deriving insights for further iterations is crucial.
這些是開發人員實施的第一步。 開發人員實施步驟后,便會向公司內部利益相關者展示該步驟。 最遲在達到目標時,團隊就會吸引用戶。 獲得反饋并獲得進一步迭代的見解至關重要。
In later iterations, the team adds and changes stories. Examples include: more products, a search capability, and new payment methods. Or the team picks another story as a goal. Whatever is most valuable and makes sense at a given point in time.
在以后的迭代中,團隊添加和更改故事。 示例包括:更多產品,搜索功能和新的付款方式。 或者團隊選擇另一個故事作為目標。 在給定的時間點上最有價值并有意義的事物。
摘要 (Summary)
You focus on a few goals to look further ahead. But you only discuss the acceptance criteria of the steps that you will implement in a few days. You implement the steps and gather feedback. You use the feedback to inform what you will develop in the future.
您專注于一些目標,以進一步展望未來。 但是,您僅討論幾天內將要執行的步驟的接受標準。 您執行這些步驟并收集反饋。 您可以使用反饋來告知您將來的發展。
That way, everybody has a clear idea of what happens in development. You avoid wasteful discussions. And you keep backlog management to a minimum.
這樣,每個人都對開發中發生的事情有清晰的認識。 您避免浪費時間的討論。 而且您可以將積壓管理降至最低。
I've followed this approach many times. When everybody involved is on board, it works great. It makes development a joy.
我已經多次采用這種方法。 當每個人都參與其中時,它會發揮很大的作用。 它使發展充滿歡樂。
And that's it. ?
就是這樣。
Sources:
資料來源:
[1] Ron Jeffries 3Cs: https://ronjeffries.com/articles/019-01ff/3cs-revisited/
[1] Ron Jeffries 3C: https : //ronjeffries.com/articles/019-01ff/3cs-revisited/
[2] Bill Wake on INVEST criteria: https://xp123.com/articles/invest-in-good-stories-and-smart-tasks/
[2] Bill Wake關于投資標準: https : //xp123.com/articles/invest-in-good-stories-and-smart-tasks/
To get the basics of agile software development right, visit my online course. If you want to keep up with what I'm doing or drop me a note, follow me on dev.to, LinkedIn or Twitter. Or visit my GitHub project.
要正確掌握敏捷軟件開發的基礎知識 ,請訪問我的在線課程。 如果您想跟上我的工作進度或給我留言 ,請在dev.to , LinkedIn或Twitter上關注我。 或訪問我的GitHub項目 。
翻譯自: https://www.freecodecamp.org/news/a-radical-simple-approach-to-user-stories/
一百種簡單整人方法