Agile and Scrum Videos

Watch Mountain Goat Software videos on agile, Scrum, product ownership, estimation, planning, and teamwork.

All Videos

Unpacking Non-Functional Requirements on Agile Projects

Transcript

Suppose you're developing a product and want it to work in a new language, handle a minimum number of concurrent users, or work on specific browsers.
Should these qualities be on your product backlog?
These are known as non-functional requirements.
Unlike the more common functional requirements, nonfunction requirements describe attributes of a products rather than the functions it supports.
For example, one facet of a product could be that it works in English, Spanish, and German.
Users do things in the product in each of those languages.
A non-functional requirement describes the state of being of product or system.
Non-functionals present unique challenges for agile teams.
Agile teams emphasize getting small items done quickly.
Non-functionals are often not small, and as we'll see, they aren't really things a team can be done with.
It's as though non-functional requirements don't belong on the product backlog because they don' t cleanly move across statuses such as to do,
doing, done, because it may never be.
The trick to handling non-functional requirements on agile projects is to think of each as having two parts.
First is the need to bring the product into initial compliance with the nonfunction.
Second is they need keep it in compliance.
Separating these makes it easy to handle non functionals.
Imagine we'd like to extend our existing product to work in Spanish.
We add a product backlog item describing that quality.
It doesn't have to be in the form of a user or job story, but it could be.
If so, it would be something like, as a Spanish speaker, I want the product work my language so that I can use it easily.
The team then sets to work.
They translate screens, perhaps move user interface elements a bit to adjust spacing, add an option to allow a user to select a language of preference,
and so on.
Let's assume this bundle of tasks is not quickly completed and it takes a couple of iterations.
But once it's completed, the team calls that backlog item done.
The product now supports Spanish.
Let's see what happens next.
In the next iteration, some new functionality is added that requires a new screen, and maybe a button is also added to an existing screen.
These changes require some translations, but the team is done with the product backlog item of work in Spanish.
Should they add that item back onto their product backlog and do it again this iteration?
And then again, every time there's a need?
No.
When the backlog item is first completed, the team should add something to its definition of done.
If you're not familiar with a definition done, I've got a video linked in the description on definition and done In short,
it's a set of things that must be true at the end of each iteration for work to be considered done.
Once a team has translated a product to Spanish, no new backlog items should be consider done until they too have been translated into Spanish.
So, works in Spanish goes on to the team's definition of done, from now all new work will need to comply with that, just like items need comply other parts
of the definition done Each non-functional requirement has two parts.
A product backlog and it will bring the product into initial compliance and then in addition to your definition of done to ensure the products remains
in compliance.
As a quick second example, consider a website that has decided to support a new browser.
There will be some initial work to do that, minimally testing to make sure every page renders and behaves correctly.
So that's a new product backlog item.
And just as with the Spanish example, after the team is done getting all existing functionality to work in the new browser,
they call that backlog done and add the quality to the definition of done.
Most teams will estimate the work of the initial product backlog item to bring the product into compliance with a non-functional.
They don't estimate a new item on the definition of done.
A team's definition done is usually best thought of as a tax on productivity.
If a team has to support a product in 38 languages and nine browsers, that's a higher tax than a teams supporting one language and three browsers.
By the way, this should be no different than how a team thinks about its definition of done today.
If this video has been useful, please do me a favor and click the like button and subscribe so you don't miss out on future tips to help you succeed with Agile.
It really helps YouTube know to share this with others.
Also, in the comments, let me know what challenges your team has faced with non-functional requirements.
Thank you for watching and I'll see you next time.

User Stories Explained: What They Are, How to Write Them, and Why They Work

Transcript

Let's talk about user stories.
User stories are here as a requirements technique on projects.
Generally, agile projects, but I think user stores work well even on traditional projects so we don't have to just do this on agile.
Use your stories here to help with a requirement challenge.
In a software project, those who want some software Need to communicate with those who are going to build the software.
And in that communication, there are a couple of problems.
A couple things that can go wrong.
Want to touch on these things, that need to be in place.
The first is that the balance of power has to exist.
I don't want to have a situation where the business is dominant.
or the development team is dominant.
There has to be a balance of power between the business and the developments side.
If either side is dominate, we end up with some problems.
if the Business is all powerful, they walk into the developers and say things like, I need this, i need it by this date,
make it so.
Now that may sound fun if we're the business, we might think that sounds fun, but here among friends we can say that's clearly not the right way to get
the best product built.
It's not going to be good to walk in and say, make it so, I need this, so.
So we don't want to necessarily be in a position where the businesses gets to dictate everything.
On the other hand, sometimes we see organizations where the developers are dominant.
In those situations, what we say is the developer is replacing the language of the business with their own.
We make the businesses speak our language.
Will build whatever you want, but you have to fill out this complicated use case template.
Fill this out and that will tell us what to build for you.
If you don't fill this, out we won't build you the right thing.
So when we do that, when, we force the business to speak technology's language, We lose the opportunity to hear from them in their own words,
because they're having to translate things into our templates and our language.
And so we lose an opportunity hear, from the, business.
so the first thing that can go wrong is this balance.
Second challenge or second thing that can go wrong is the question of resource allocation.
Resource allocation has to be a shared problem.
Businesses often, perhaps even almost always, want more than they can get in a given time.
I need this.
I can't give you all that by September.
Businesses often want more than we can give them.
This is a resource challenge.
How can we best use our resources to give the best amount?
Well, I want there to be a balance here as well.
Resource allocation, the shortage of scarce resources, cannot entirely be the development team's problem.
It can't be entirely the business's problem either.
We need some balance here.
If we make the development team entirely responsible for solving the problem of scarce resources, the developers will often make bad trade-off decisions.
Our programmers may look at something and think, well, OK, negative data is never going to get here.
I don't need to code defensively.
Negative data can't possibly make it to this part of the code.
And then, of course, we know negative date does get there.
Now, I don't know that that's a bad decision.
It might have been an OK decision, but the point is it shouldn't have a decision that the programmer makes on their own.
That should be more or less a combination, a joint decision programmers shouldn get to decide where we take shortcuts.
Similarly, if we make the problem entirely the businesses, We see a different set of problems.
If we make the problem of scarce resource entirely the business's problem, this is where we see the great big spec document,
great, big specification come in.
Think about it this way.
As software developers, we like to make fun of the 300 page specification.
But no business person ever said, hey, I want some software.
I'd like to write a 300 page document.
They don't like that document any more than we do.
We're the ones that make them write that.
we tell them, we will build whatever you want.
But you better not change your mind.
If you change our mind, We will make it expensive for you.
So get it right.
And we introduce the great big specification document, and we make then fill that out.
This leads to, essentially, the waterfall process.
If you're familiar with the water fall process, it's essentially do all the analysis, do the design, all of the coding, put the whole system into operations.
Well, that's the hypothetical waterfall.
Here's a real-world waterfall that we see.
I like Donald Reinertsen calls it the fuzzy front end.
We got the Fuzzy Front End, then we got some sort of construction phase, and then the last phase of the waterfall process,
the rapid de-scoping phase.
Just rapidly drop all the things we're never going to have time for.
Rapid de-scoping.
That's what we see in the real world.
This is clearly not the right way to build software.
Third problem, our depressing start to the session, third problem.
Imperfect schedules.
If you know this, but I've written a book on estimating and planning.
But I'm going to say that estimatin' and planin' software projects is notoriously difficult.
Very difficult, right?
If we can't perfectly predict the schedule, it makes it very hard to have discussions about what should be in, what'll be,
in what won't be.
It's very to hard have those trade-off decisions, that kind of what if analysis, if we cant predict a schedule.
All right, very difficult So what do we do about all these things?
We make decisions based on the information we have, but we do it often.
And rather than one all-encompassing set of decisions, we spread decision-making throughout the project.
We avoid making one big set decisions upfront.
Here it is.
It's all documented.
This to me is where stories come in.
Stories are gonna help us do those things.
Story are going to help overcome those problems that we just listed.
Let's see what stories are.
To start with, let me grab something over here.
What stories are?
Ron Jeffries is one of the three guys who originated the extreme programming process.
Extreme programming is on of agile processes and user stories come to the rest of Agile world including Scrum and other processes from extreme programing.
Ron has written about something he calls the three C's.
Three Cs of a user story.
The first C is the card.
I've got these little index cards here.
And so when we think about user stories, we thing about writing them on these cards.I love these things.
i like that I can take these into meetings, I could spread them around on a table,I can turn them sideways or up on their end if I want.
So maybe a card this way means bug.
A couple months later, we get together for a different meeting.
Maybe a card turned this way means something the company CEO announced at the annual users meeting, right?
I like that I can rip them up.
I like that these things do not feel as permanent.
Things go into a software system, they feel permanent and we don't ever want to delete it.
So I love these thing as a tool and I was very opposed to these at first.
When I first started doing ads, when I came across stories and product backlogs, I'm a Software Guy.
I am not going to use these.
My grandmother wrote recipes on these.
Your guys' grandmothers do that, too?
Does that happen here?
My grandma wrote recipe on this.
I'm not going to put software features on here.
That's silly.
And so we built systems for this, and then later I had the first team I worked with that was using cards.
Wow.
Very powerful technique.
There's something about being able to have your hands on it that makes it more powerful.
We interact with it differently.
So Ron wrote about three C's, the card, and the conversation.
The conversation is this, a programmer grabs a card ready to go work on this.
Programmer grabs the tester.
And the programmer and tester walk over and talk to someone called our product owner or key stakeholder.
We say, hey, product owners, tell us more.
What is this story about?
What do you want?
How should it look?
And so the conversation, probably the most important part of the three C's I'm going to build up here.
I'll add one more C.
Conversation, the probably most In that conversation, the card serves a couple of purposes.
The card to me serves as a reminder or a promise to have the conversation.
Think of how powerful that promise is.
It is a promised from the team to the product owner.
We will come talk to you before we start.
That promise what frees the Product Owner up to not write every last detail down on here.
If the Team might start this thing, before they have a conversation with the product owner.
As the Product Owner, I'm going to feel compelled to not just write this little bit on a card, but to write a specification document and staple it too here.
Because the team might get started on there.
I better write a full-on spec and put it with this.
So the promise to have a conversation.
Now, the card is not a requirement.
Don't think of the user story as a requirements.
Think of a user's story is a pointer to the requirement, kind of programming term.
The requirement might be elaborated in a conversation.
The product owner talks to me and tells me what I need to know.
Maybe it's a workflow diagram, a little Vizio diagram.
Stapled to this.
Maybe its a math algorithm.
Do it this way, here's the mathematical prototype.
May be it a UI design, stapled to here.
So I think of the card not as a requirement, but as pointer to the requirement.
One more C.
Find my mouse.
Behind me, there we go.
Third C, conversation.
We go to the product owner, we talk, or confirmation, I'm sorry.
I was getting backed up.
Confirmation.
The third C here, confirmation.
This is the acceptance criteria that we use to judge when a story is done.
When I was 17, I as in the last year of what we call high school.
I don't know if you guys call it, what is it?
Is it gymnasium here?
Gymnasia?
So I'm 17. In the year before I go to university, and I had a literature teacher.
And she said, write a paper on Macbeth.
We'd been reading MacBeth in class.
She says, Write a Paper on McBath.
Boom, my hand goes up.
How long does it have to be?
And I asked Ms.
Nelson, my teacher, Ms Nelson.
I said, how long does it have to be?
And she just ignored the question and just kept lecturing.
And, I waited a few seconds.
Ms, Nelson you didn't answer my question.
How long will this paper have be.
She said I'm not going to answer that.
OK.
how does need to if I want a good grade?
I figured I'd try it a different way.
It needs to longer than if you want to a bad grade.
Ms.
Nelson, how long would it be if you wrote it?
Oh, it would be the right length then.
I don't know how I got her to give in, but she finally gave in.
And she said, Mike, just make it five pages.
Just make a five-pages.
You can tell I'm bitter about this all these years later.
I contend that that was part of her job was to convey her expectations to me.
That fact that, that paper had to be five pages were part her acceptance criteria.
Right, if I had turned in a half a page on Macbeth, and let's suppose for a moment it was brilliant, it wouldn't have been,
but let suppose it brilliant half page MacBeth.
No way was I gonna get a good grade.
Supposing it 50 pages on McBath.
No way would that have been brilliant either.
If I had turned in 50 pages, she might have written down a couple of good thoughts in here, cut out the junk next time.
Give me a bad grade on that too, F.
So she had an expectation.
She should have shared it with us.
Our product owners have expectations.
That's what we're after here with confirmation.
How will I judge this story when you're done with it?
It's our acceptance test.
Macbeth paper has to be five pages.
User story has be such and such.
Let's see a a few example stories.
As a user, I want to reserve a hotel room.
This would be from a travel website.
I don't reserve hotel rooms.
As the user I went to cancel a reservation.
Let's see one more.
as a vacation traveler I can see photos of the hotels.
Now, notice I did something different here.
The first one and second one were as a user.
This third one, as vacation traveler.
We embed the type of user in the story so that it can provide some context.
As a vacation travelers, not as business traveler, right?
I'm here this week as the business travelers.
I didn't spend any time looking at what hotel to stay at.
And I asked the conference organizers, I said, where should I stay?
They said which hotel?
And booked the reservation.
My family came over here.
We were here two years ago.
And we spent about five weeks in Norway.
we had this grand plan, see Norway, right?
And then you start to plan it.
It's like, OK, let's see the middle of Norway So we did here to Bergen, Lillehammer, Trondheim and back, and so we're arguing about next year,
do we go north or do go south?
So, we are arguing that for next years holiday.
But when we planned that trip, We came here two years ago.
We actually tried to come here three years, but my wife got so caught up in trying to make sure we picked the right hotels and the cities.
How can you see?
We had the plan to see Norway, and you couldn't.
And so she spent so much time picking out hotels.
She did a great job.
But a vacation traveler is going to look at photos of hotels, right?
I'm a business traveler.
OK, I am teaching at the conference center here.
Oh, there's a hotel connected.
I'll stay there.
All right, didn't look photos.
Of it I just stayed over there, all right.
One more story.
As a frequent flyer, I can rebook a past trip.
I flew over here on Friday, so it was May 31st or something.
Why in the world would I want to rebook a trip from Denver to Oslo on May 31, 2012? Does that make any sense?
Rebooked a past trip.
Does it make sense.
Sometimes the story doesn't make since until we add what is called a so that clause.
Let me add one here.
So that I save time booking trips I take often.
I love coming here, I'm fortunate enough to be able to come over to also four times a year.
But I would love it though if I could go onto a website and say, Give me the usual, please.
And it booked me Denver to Chicago, Chicago to London, London to Oslo, Oslow to Frankfurt, Frankfurt to Denver.
I'd love it if it could book that for me with one click.
All right?
I'm a frequent flyer.
Rebook a past trip?
Yeah.
Not the same date.
Of course not the date, right.
I consider the sew that clause to be optional here.
You'll notice I didn't have it on the other ones.
As a user, I want to reserve a hotel room.
I don't really need a sew-that clause there.
There's only two ways I can think of to end that sentence, and only one of them is moral, right?
So I don't really need to sew that clause there.
I consider it optional.
But from these four stories, you can kind of infer the template I like for writing stories.
Like to write them this way.
As a type of user, I want or I need or can, or am forced to, something like that.
And then optionally, so that and some reason.
The sew-that clause is sometimes very helpful in telling us why somebody wanted something.
Oh, that's why you want it.
OK, can give that a completely different way, in fact, we already support that in the system.
So the sow that clause to me a little bit optional.
Now in these stories, where are the details?
These things are short.
We only have this little tiny card.
Where do the detail go?
Let's think about this story about I can cancel a reservation.
I'd have a lot of questions.
I walk over and talk to my product owner and I've got questions Does the user get a full refund or a partial refund when they cancel?
Is the refund policy the same at this Radisson as the Radison by the airport?
How about the radison buy the old airport, right?
is it the Same cancellation policy at all Radisons right how far ahead does the User have to cancel their reservation?
I don't have A lot Of questions So our question is, what do we do with all the answers?
A couple of things.
One thing we can do, with those answers, is we use them to write what are called conditions of satisfaction.
Conditions of Satisfaction are essentially test cases, high level test case.
What I like to do is I take a user story, I can cancel a reservation, and then quite literally turn it over and on the back write our high-level acceptance test.
All right, let's think about my English literature teacher a moment ago.
Write a paper on Macbeth, on the back must be five pages, all right?
So the bag of the card has the acceptance criteria for this.
So in this example, we might have acceptance criterion like these.
Verify that a premium member, somebody who joins our website, can cancel the same day without a fee.
They verify that non-premium members are charged a free, Verify that we send an email out and verify that the hotel's notified that they have a room available again.
Those would be my essentially acceptance tests.
Okay, I use the phrase acceptance test.
So why am I using this weird phrase up here, condition of satisfaction?
Here's what I found.
If I walk into my product owner's office and I say, hey, product donor, tell me your acceptance tasks.
Who do they tell to me to go talk to instead?
Tester.
They say, go talk to a tester.
So I'm a busy product owner.
You're here to talk about tests?
Get out of here.
Go talk a to tester, right?
And I don't want to to test her.
Well, that doesn't sound right.
I Don't mind talking to the testers, but I want get the conditions of satisfaction.
Want to get high level answers straight from my product owners, not a tester.
The product owner is the one who, a couple of weeks from now, at a sprint review or iteration review, is going to sit in judgment of this user story and say,
it's done, or it is not, go change it.
So I want to know their acceptance criteria.
What I found is by using a slightly different phrase, hey productowner, tell me your conditions of satisfaction.
I get better results.
So a slightly different phrase.
Sometimes the words that we've used for years have loaded meaning.
Find that especially with things like beta test.
Beta test means such different things to all sorts of different people.
It's kind of a hard phrase these days.
I go to my product under a different phase.
Tell me your conditions of satisfaction.
What do you need to see to be satisfied with this?
The end of the sprint, I mentioned that we do an iteration or sprint review.
One of ways to know that you're writing those conditions of satisfaction at the right level is this.
Think of them as the script for the Sprint Review.
Two weeks from now, three weeks, whatever it is, you are going to demo this user story to your product owner.
Those conditions on the back are the Script.
Those are the things I'm going to want you to show your product owner.
You're going walk through, you're gonna show them.
That's why when I do this I actually quite literally with cards I will draw that little box here.
I don't draw a bullet, I draw little check box.
Then when i'm giving my product under the sprint review, i check it off.
Okay we've shown you this, we're showing you.
This that becomes the script for the Sprint Review.
These are essentially high-level tests.
i just use a different phrase.
So I'm going to back up here.
We said we're talking about detail.
How do we add detail?
We go have a conversation, product owner starts laying on us a bunch of detail, one way to capture that detail tests on the back.
Another way add to detail is to use smaller stories.
So we have story here, I can cancel a reservation.
I ask my product owner what that means.
I get a lot of detail out of my project owner and I decide to write smaller stories.
In this case I might write the stories as a premium site member I can cancel a reservation up to the last minute.
As a non-premium member, I cancel but I'm charged 10%. As the site visitor I am given an email when I canceled, things like that.
So I could write small stories, that's the other way to get at additional detail.
I want to point out something that I think is pretty subtle, but I thing is very important.
Look at the user stories up there.
Premium member can cancel, non-premium members charged.
I'm going to back up a slide.
So here are those conditions of satisfaction on the back.
They're the same, OK?
These two techniques are essentially two sides of the coin, right?
We can write smaller stories.
I can right conditions of satisfaction on the back.
Both techniques or the say.
The effect is different.
And I end up with more stories, or I put tests on back of this story, but the technique being different, we get the same result.
It's a way to add detail.
Now you don't need today to decide which of these approaches you like.
You like this approach.
you Like writing tests on the back.
Meanwhile, you got a co-worker back in the office reading a book about Agile, and your co worker decides that he or she likes writing smaller stories instead.
And now you've got problem.
If you liked one approach, your coworker likes the other.
Not really a problem, You're going to use both.
When you have a great big user story, the natural thing to do will be to turn it into smaller story.
When you have a story that you've turned pretty small, the natural thing to do will be turn it over and write tests on the back.
So we're going to use both of these approaches, okay?
You'll use of both these approach, which is what this slide is saying here.
You're gonna use to both approaches.
It's gonna be a natural think.
I pointed out here to make sure you're aware of it, but you are going do both things that will happen naturally.
Okay?
I want your product backlog to look like an iceberg.
I don't want your backlog to look like an iceberg.
Now, what I'm talking about here is I want small things at the top of your back log.
Small, detailed things.
Those are coming into the next sprinter iteration.
They have to be small enough we can do them in the couple weeks.
But we've got other things we're not going to do for a while.
We might not do it for six months or a year.
I wanted those to big, vague.
All right, we had a travel site up there a minute ago.
Let's think about a Travel Site.
Let's think about orbits.
I've never worked with orbits, I haven't worked for three travel sites.
Haven't work with orbit, so I'll use them as an example here.
Let us think of about this.
A guarantee that orbits has a product backlog item.
They have something that says, as a traveler I would like to book a cabin on a cruise ship.
Orbitz doesn't support cruise ships.
But somewhere, they have a requirements document or a backlog that says, do cruise ship, but they've been in business for 10 years or whatever and still
never got to that.
It would have been a waste for them to write that as a very detailed set of user stories.
The right thing for then to do, if they haven't done it yet, just leave it alone, great, big, huge user story at the bottom of their backlog.
Someday, orbits will finish all their other higher priority travel site stuff, and they'll be sitting around and this story will have moved from the bottom
to the top.
And they will be, hey, let's do it.
Let's finally do cruise ships.
We've done everything else.
But until it moves to top, It's a waste of time to invest in that backlog item.
I don't want to add detail to it when it's not important.
So if we think about a real world iceberg, not our product backlog iceberg.
Think about real-world iceberg floating out there in the North Atlantic.
Helicopter flies over and lifts off the top of the iceberg for some reason.
What happens to the remaining part of iceberg?
What's it going to do?
It's going to float up, thank you, it's gonna float.
There's less weight pressing it down, and it floats up.
I like that as a metaphor for our backlog here.
It points out a couple of things.
New things are becoming visible at the bottom.
The iceberg floats, new things become visible.
We've got a flat spot at top of the backlog, we have to do something about that.
Here's what we're going do.
We're going to take things that are in the middle of the backlog and break them into smaller pieces so that we now have a suitable set of small things
at the top of our backlog.
This is something that Agile teams call grooming the backlog.
Grooming the Backlog refers to keeping the backward in good shape.
We groom the backpack.
All right, we make sure that every sprint or every iteration we're spending a little bit of time Keeping the backlog in good shape so that we end up at
the next sprint planning meeting walking in and we've got small things at The top ready to do we don't want to walk into the Next sprint planting meeting
and have those great big things in the bottom.
All right, then we say what do?
We do and somebody says cruise ships.
Oh Gee, you know, what we have to for a cruise ship.
What's it gonna be like?
How are we gonna do this?
so we to have a little bit of this grooming going on to keep the back log in Good shape And thinking about your product backlog iceberg,
I want to introduce a couple of terms here.
The first term, epic.
Epic just means great, big one.
Typically means bigger than a sprint, bigger that fits in one iteration.
This is going to take us more than in a few weeks to do.
Now, over here in this part of the world, a lot of times people, teams will call this a saga instead.
I'm fine with that.
Saga, Epic, whatever.
Just means big.
The other term I want to introduce here is theme.
A theme is a group of related items.
So suppose we're sitting around in orbits and we decide, hey, let's do cruise ships.
And so we take our cruise ship story, it's a great big one, I mean epic, All right, I rip my epic up, and I write a bunch of smaller stories that all have
to do with cruise ships.
So we write all those.
We do all that work.
we get a whole bunch stories written.
And then somebody walks in and says, oh, great idea.
Let's change how we do hotels.
Really do this instead.
What's not do the cruise ship stuff?
Well, darn it.
I just spent all the time writing all of those stories.
Well here's what we're going to We're going to take those cruise ship stories, put a rubber band around them, and then we're gonna put them back in our
shoe box or wherever we keep our stories.
And we want to treat that as essentially one thing.
All right, it's got a rubband around it.
It's really only one think.
I don't got to look in here at all the things.
Now I'm just gonna write on top of this theme, I mean, to write cruise ships.
So a theme is a group of related.
Think of it as a staple or a Rubber Band around a Group of Stories.
An epic, one big one.
two terms that we use.
Now I want to give you an example.
As an examples from one of my clients, these guys are in two cities in the US, one city in India.
They make software for large retailers, so big stores.
So here's one their stories.
as the vice president of marketing at a store, I wanted to review the performance of historical promotional campaigns so that I can identify and repeat
profitable ones.
Basically, the story here is saying I'm the vice president of marketing.
How should I spend my ad budget?
I don't want to know how to spend by ad-budget.
I asked the team how big was this.
And I said, I want know your estimate.
That's too hard.
But if I were to ask you to estimate this, would you come back with an estimate in hours, days, weeks, months, or years?
So what type of unit pops to mind?
Because even if you had to do that, just seat of the pants type thing, and they said oh, many, OK, this is clearly an epic.
This is going to take lots of weeks.
Clearly an Epic.
So let's split it up.
I asked the team to split up, here's what they did.
As the VP of Marketing, the top one, I want to select the time frame to use when reviewing the past promotional campaigns.
The bottom one, I want to select the type of campaign.
Radio, direct mail, email marketing, television marketing.
This is a good split between our stories here.
The top one was selecting the date range, the bottom was the selecting type.
What's nice about this is these stories were independent.
We'd like to have stories that are independent, right?
I could do the top or the the one.
I can do these in either order.
Suppose we did the first.
If we did the top one first, the team could select a time frame to use.
They could say, show me the summer season, or show just Easter, Or show June for the last five years.
But they would get June, for all types of advertising.
Radio, television, email, print.
If they did other order, if they do the bottom one, first.
The team can say show only email advertising, But they'd get it back through the dawn of time.
So these stories are independent.
We could do them in either order.
It's a good split.
I asked the team, how big were these?
I said, are these epics?
Bottom one is.
Bottom is still pretty big.
so we split the bottom one up.
Here's how we've split, the Bottom story.
As VP of Marketing, I can see information on direct mailing, another one about television ads, and another about email ads.
This is an example of this story starting out at the top of the backlog, moving up, Eventually, something like TV ads would get to the top of the backlog.
At that point, we'd turn it over and write its conditions of satisfaction on there.
Conditions of Satisfaction for a television ad story would be things like, I want to know how many people watched it last night.
I wanna know, how may of them were in this income bracket.
How many of them were 18 to 25 years old?
That's our target audience.
I'd want to know things like that about our television.
Very different than what I want know about email ad.
Email ad, I wanna know click through rate, bounce back rate.
Things like.
Different conditions of satisfaction.
So let's talk about writing user stories.
Let's see if we can yell some of these out.
I want you to think about this and see you can help me out here.
Suppose we have a login user story, right?
We have story that is about logging into the system.
We want to see we could write some these together.
Help me figure out a couple stories.
And here's some examples.
As a registered user, I'm required to log in so that I can access the system.
That, of course, is our base story.
A forgetful user.
I could request a password reminder so I that can log-in even if I forget my password.
Anybody have any other examples?
What else might we write as a story related to logging in?
Anybody think of any examples, you'll have to totally format it into this syntax if you don't want, but any A new user, right?
So we could write a new users story.
As a user I can register on this website so that I have an accountant come back and have it remember things about my usage.
Any others?
Oh, good.
Good.
As a user logging in for the fifth time, I get a discount.
I just did something.
We changed our email marketing system.
Use this thing to send out emails.
And they sent me something because I sent my first email campaign with them.
So I've logged in many times, but I send the first campaign.
They sent something, right?
So, like that one, we get reward to somebody.
Let's get one or two more.
What else do we have?
You're the hacker.
So that's a great example.
That's the great examples.
We're talking about user stories, right?
That is an example of an abuser story.
Right?
Abuser.
Now we don't want to write abusing stories but we want think about them.
All right, we wanna think of them so that we make sure we prevent those things, all right.
And so sometimes it is useful to think things like what does a hacker want, and that can lead us to writing stories like As the chief security officer
of this company, I want all passwords to be eight letters long, minimum eight-letters long non-dictionary words.
Got to include a digit or something like that in there.
Or as a user, i am required to change my password every 90 days.
As a use,r I'm locked out after three failed attempts.
We can write stories like.
And those might originate from the idea of, oh, we got to careful of hackers on here.
The way I like to write stories is in something we call a story writing workshop.
In a storytelling workshop, we bring the whole team together.
Yep, I want the programmers there.
Yep I what the testers there, analysts, designers, database people, scrum master, product owner, bring the whole team together.
Not going to do this every sprint.
My recommendation is to this about every three months.
What I'd like to is set a goal, a target out there on the horizon.
Three months from now we will have this set of functionality done.
We're going move there every two weeks or so.
But I wanna longer term goal.
And we get together and we write stories about where I wanted to be in three month.
Three months later, we write another goal about where we want to be two, three, four months, later.
So we keep setting these kind of goals out there every few months.
We get together, not every sprint, but every three months or so, and we right a bunch of stories about what we wanted done.
What do I want to do on a cruise ship?
I'm going to book a berth on cruise ships.
I wanna be able to see a floor plan so I know if I am close to the pool.
Want to be to request what deck I on.
All those type of things will be part of our cruise-ship stories.
Now when you do a story writing workshop, you need two things to successful.
Two things.
The first thing you need is you a bounding scope.
I always hated that phrase, think outside the box.
That phrase always bugged me and I never knew why.
If I read an article about it a couple years ago, and it was talking about creativity, it said creativity comes from thinking inside the Creativity comes
from thinking inside the box.
I gave you a question a moment ago, I said, hey, help me write user stories for logging in.
Imagine I had yelled out instead, Hey, somebody yell out a user story.
That would have been harder.
Writing a new user's story for anything in the world would've been hard than when I constrained it.
Write a story about this, because that puts your mind into a particular area.
So this article, and I totally agree with this, said that creativity comes from thinking inside of a boundary, inside a box.
So the think outside the box thing is never necessarily was the right way to go.
The first thing you need to be successful is a bounding scope.
Second thing we need be to successful with Story Writing Workshop is some sort of graphical arrangement.
I like doing it in just a simple hierarchy.
There's all sorts of ways to do this.
You can do mind maps, all sort things.
Just going to over the simplest here, a hierarchy, We think about on our travel site, who are our users?
Well, frequent flyers.
They're one type of user.
What are some of the things they want?
Now, I want to do this within our bounding scope.
Now what are the some things that they what?
Those are probably epics.
And then time permitting, we take those and break those down into smaller stories.
So we have to have some sort of graphical arrangement in the story writing workshop.
Otherwise, what happens is you end up with a big pile of cards all over the table and somebody yelling out, did we already write stories for this?
You have no idea.
So something that gives you some presentation of this.
I think stories are a great technique.
I want to talk about why.
Going to end with why here.
One of the things that stories do for us is they shift our focus from writing to talking.
We are not with Agile trying to get away from documentation.
The Agiles Manifesto has this great statement where it says, we value working software over comprehensive documentation,
a lot of people misinterpret that and think, oh, Agil's against documentation Absolutely not.
But on Agile, we are trying to create a shift from documents to discussion.
Write less, talk more.
That's a generalization some projects need to write more to.
but in general, as an industry, We should be talking more, writing a little bit less.
And stories are meant to help us do this.
Now there's this thing, I call it the Grand Myth.
The Grand myth is this, that if we write the requirements down, the user is going to get what they want.
And that's not true.
If we write requirements down, at best, the user is going to get what was written down.
Which may or may not be what they wanted.
My company bought another company a few years ago.
And one of the guys we got as part of that acquisition was an amazing product manager.
I don't want to call him product owner, because he wasn't agile yet.
An amazing project manager, and he had written a wonderful specification document for his team.
So we buy this company, I've got a number of teams there, And I'm going to convert them all to agile over time, but I can't convert all agile day one.
And this one team has a great spec, wonderful specification document.
And it's about a two-month project, so I'm not going to convert them to Agile.
I am just going let them go.
It's an amazing document written by this wonderful product manager.
The product manger is going be busy.
For the next couple of months, I need him traveling around the world, merging our two product lines.
He's the guy who's going figure out what features from which projects are going end up in the consolidated product.
So I will have him travelling around figuring that out.
But it doesn't matter.
They've got a great document, great IEEE, the system shall this, this system, shall that document.
The team starts off on that project, they run it for two months.
The end of two month, the product manager and I are back in their city to see what they've done.
They give us a demo.
they got everything that was in his document.
At the end to that meeting, I remember what he said, because I got up and had to get it out of my head, so I wrote it on the wall,
exactly what it said.
He said you built what I asked for, but it's not what i need.
Now, he owned up to his responsibility for this.
His attitude was essentially, you nailed it.
This is exactly what I had in my document.
What in the world was I thinking?
This was a system for doctors years ago, and he's like, no doctor will ever use this, what was thinking, this is crazy.
No doctor ever touch this?
Now I don't know where we would have figured that out if we had built this project in an agile manner with stories.
Now it took us eight weeks till we got to the end of the project, maybe we could have figure it out after two weeks, but probably not.
Maybe after four weeks.
That's pretty likely.
Maybe, after, four, weeks I'm using twos, because we probably would have done two week sprints.
Certainly after six weeks, I think by then, at a minimum, he would've looked at it and said, wow.
I should probably go show this to some doctors.
This is not looking like something they'd use.
So I don't know where, but probably before the eight weeks we would figure that out.
Stories are going to help us get to the point where we're talking more, writing a little bit less.
We're not quite as reliant on the written word.
One of the reasons I want to be less reliant on the written word is how imprecise words are.
Words are horribly imprcise.
I went to a restaurant in Denver for lunch and this was on their menu.
It said entree or main dish.
Main dish comes with soup or salad and bread.
This is a microbrewery.
They make their own beer there, they've got these big vats of their beer, and they make a really good French onion soup.
And so I wanted the French onions soup with my lunch instead of the salad that day, but I was kind of hungry.
I don't think I'd had breakfast.
So I'm a little bit hungry and I looked at that and said, well, I still want some bread too.
and i wasn't sure how to parse that sentence, right?
Was it soup or salad and bread no matter what, or did you only get the bread if you ordered the Now, I've been to a lot of restaurants,
so I was pretty sure how things worked.
But I'm looking at it, and I realize I am not 100% sure.
And as I look at this, the waitress walks over, puts some bread on the table, And said, can I take your order?
I pretty when I ordered the soup, she wasn't going to take the bread away.
No bread for you.
But there's nothing wrong with that sentence up there, apart from having a French word in it.
But whoops.
Apart from that, there is nothing really wrong that sense.
That sense is perfectly grammatically correct.
Right?
But it's still impossible to know the exact meaning of the sentence.
And I want to show you a couple other examples of words being imprecise.
I've just got a few other slides to share you guys here.
These are both from the same specification document.
And this is actually a really good document, I feel bad for picking on this document because these are probably the only two things in the document I could
pick on.
It was a good really document but this was the bioinformatics system, really hard core medical stuff and there was requirement in there that said the user
can enter a name, it can be 127 characters.
This was a Windows Explorer-like part of the interface.
You were naming folders of genetic data.
So think about Windows explorer.
And it said it can be 127 characters.
I looked at that and I said, well, that's a weird requirement.
Wonder if that is a maximum.
Now most of us will look at and go, of course that a is maximum number.
But this was weird system.
There were requirements on this system where you had to enter names of things that had be 32 characters made up only of letters A,
C, G, and T.
That's a weird requirement, right?
I don't remember enough from my old genetics class, and for me, it would have been high school.
But there's reasons for that to do with DNA and stuff.
It was wacky requirements.
So when I saw this can be 127, I actually had to go ask.
I said, can it be 128? No, no, that's the maximum.
OK, good.
Another requirement on this thing, the system should prominently display an error message.
Should, what does that mean?
Promotively display what that means.
These are all things that we would have to discuss.
A couple other reasons why I think stories are good.
One of the things that is true about stories is they're understandable.
OK, we're in a little session right now.
We're on a one-hour session about Stories.
But we were talking about some of vagaries of them, how to write them and things like that.
we don't have to teach customers how read them.
Customers can read these things.
They'll instantly know what they mean.
As a user, I can book a cabin on the cruise ship.
they'll know that means without any training.
There's a very famous study.
It's called Scripts and Memory for Text.
And what this study did is they dumped a bunch of facts on people, brought a group together like this, just told them a much of fact,
tested them for recall.
They brought another group of individuals together, and they told him some stories.
Embedded in the stories were the same facts.
The tested that group for a recall, which group do you think had better recall?
Second group, stories, right?
I think back, and I remember when I was a little kid, we started school in the US at about five.
I don't remember anything from being five, but I remembered my second year of school.
Remember when was six.
And I can't anything I particularly learned in that class.
If that was the class where I learned how to spell or the alphabet or how add, I dunno what I've learned there.
But I totally, clearly remember sitting in a classroom and the teacher reading us Charlie and The Chocolate Factory before lunch each day.
I remember the stories from that class, but I don't remember anything else.
I mean, I'm sure I remembered how to spell or whatever I learned there, But I didn't have any conscious memories of it.
Stories are memorable.
Now I am not going to say our user stories are as memorable as Charlie and the Chocolate Factory.
It would be nice if they were.
But when we read our stories, they are more likely to stick in our heads I think than little statements, the system shall this,
this system, shall that.
Those just pass right through.
These other things, because they're in first person, we start to relate to them.
have a little bit better recollection of them.
Story support and encourage.
I think that's important.
And encourage iterative development.
This is because of how easy it is to move between a epic, a big story, small story.
Rubber band the small stories back up into a collection of stories called a theme.
Because of how easy it is to move from high level to low level of detail, it makes it easy for us to work on an iterative manner,
to iterate through the project, build a little bit of something at a time.
I was writing the book on user stories a few years ago.
One of the things that blew my mind about stories, I went back, and I had my publisher help me out.
We did some research on what had been the best-selling requirements books of last 20 years, what have been best selling requirements of all time.
And so I read all these old books on requirements planning.
No requirements technique before stories had really come along and ever said, Hey, if it's big, make it smaller, because it is too big for the team to do.
Think about all the stuff you might have learned about traditional requirements gathering.
None of it ever said, hey, it it a big nasty scary hard to-do requirement, you should split it up.
That was never part of that.
So stories were the first requirements technique to come along that were really about a way to document requirements, in a sense,
and plan the project.
And so stories solve two purposes.
They're kind of pointers to requirements, like I said.
But they're also about planning the project.
Serve dual duty.
Very important, I find.
There was a study done at Stanford University in California in 1990, long ago.
It was an interesting study.
The professor who did the study was interested in the question, do we design top down or bottom up?
Top down, or, bottom, up.
Answer to me is kind of obvious, both, right?
But she wanted to solve the problem.
You know, being a researcher, she want proof, not just an opinion of both.
So she brought in elevator designers, and she posed a problem to them.
Your designing the bank of elevators for a building.
The building is this big, it gets this much freight, has this many people working in the building, how many elevates do we need,
which routing algorithm should we use?
And so she videotaped them talking through the problems.
As after she was done, she reviewed the videotapes and documented, were they thinking top down or bottom up?
And she documented where they had breakthroughs, where had epiphanies.
And what she discovered is that we designed, not top-down or, bottom-up, but what was she called, opportunistically.
All right, we design top, down until we get stuck.
Then we go bottom, up for a while, then we top , down, and we bounce back and forth opportunisticly.
Well, stories, again, help us do this because of how good stories are at helping us go between big and small.
Epic down to smaller story, rubber banded back together into theme.
Stories help as go back and forth from high and low levels of detail.
Last real benefit on stories I want to touch on here is that stories support what is called participatory design.
There's two schools of thought on design, the first school of thoughts is what's called empirical design and empirical designs we treat our users like
lab rats.
We bring them into the room.
We watch them through the one-way mirror.
Maybe we record their keystrokes.
we study them, we poke and prod them.
Some of this can be good stuff.
I'm not down on that.
Where we go wrong, though, is that then we, the all-knowing software professionals, make decisions for them We've studied you.
That's where we go wrong.
The other school of thought is called participatory design.
In participative design, we engage the users in the process.
And stories help us do this because of how easy it is for our users to participate in a process, right?
We bring them in, say, hey, write some stories.
I don't train users on how to do this.
I bring them into the room, I write on a whiteboard, as a blank I want blank, so that blank.
And I say, let's fill that bank in.
What do you guys want?
What type of users exist?
what type subpopulations exist in our user community?
We fill in the blanks.
Users become active participants, or can be active participant.
Want to look at one example here.
of kind of an IEEE 830 style requirement.
Is there something up there?
Oh, something went wrong on that slide.
This slide is supposed to have a kind of an IEEE 830-style spec.
I remember enough of it, so I'll ask you to just kind go along with me on this.
Suppose we had a specification that said something like this, we're building a real-world product, not a piece of software,
real world, tangible product.
What I want you think about is, where does your brain go, as I give you a couple requirements?
The product shall have a steel body, the product will have four wheels, The products will a rubber tire mounted to each wheel,
and the products shall a multi-speed transmission.
Where's your head going?
Now you know I'm setting you up for something here, but just go, where are you mentally going with that set of requirements?
Right?
It's the thing we interact with most frequently that fits those things.
Right.
That is a list of system attributes.
The system shall this, the system show that.
Let's see what we would do differently if we had user stories instead.
Keeping in mind that what user's stories focus on is what the user desires of the systems, not the systematic attributes,
so here are a couple of user story.
As a user, I want to mow my lawn quickly and easily.
I want to be comfortable while mowing my lawn.
And so we realize that we're building something completely different.
So the goal here is to focus on the user's goals, not the attributes of the system.
This is something that user stories help us do.
Last thing I'm going to share with you guys.
Don't forget the purpose.
The user story is not a requirement.
So the text we write on the card is less important than the conversations that we have.
excuse me, a pointer to a requirement.
It's a point to do a conversation, it's pointer an Excel document showing me some sample calculations.
There's the pointer a Vizio workflow diagram, something like that.
So the conversation is more important than the card.
The card's point or to that conversation.
I'm going to end there.
I've got classes coming up.
They just told me to announce this.
So I do classes here every couple of months.
Here's my contact information.
And I love talking about this stuff.
But I should have mentioned at the beginning, all the slides from all of the talks I have done today are on my website.
You should go to mountaingoatsoftware.com.
All the presentations are up there, plus over 100 other presentations I'd given over the years.
so you can download all sorts of stuff from up here.
Thank you guys very much.

User Story Mapping Tutorial: How to Create and Use Story Maps

Transcript

Knowing how to create, read, and use a StoryMap are essential agile skills.
A Storymap can help you uncover user needs, find alternative ways of achieving a user's goals, help organize your product backlog,
visually communicate how the steps a users performs fit together, prioritize what to develop and more.
Story maps were invented by Jeff Patton.
In this video, we're going to cover how to read a story map, the vocabulary used for talking about story maps, when to create a Story map who should participate
in creating the Story Map, how turn a storytelling map into a roadmap, and how a storyline map relates to a product backlog.
Let's start by looking at how to read a story map.
By the way, my name is Mike Cohn, and I'm the author of three best-selling books on Agile and Scrum.
I help teams succeed with Agil.
A story is a two-dimensional visual representation of actions a user will perform to achieve some goal.
The first dimension of a StoryMap is across the map, Cards lined up horizontally show a sequence of steps a user will perform.
Because the horizontal dimension of a story map represents a Sequence, you can read across a map by mentally inserting the word Then between cards.
So the map here is read as a User does Step 1, Then Step 2, then Step 3. For example, if we're mapping the act of sending an email,
we might identify the steps of select recipients, enter a subject, compose the message, and send the email.
Each step becomes a card on the map.
You'd read the maps by inserting then between each card.
First, the user selects the recipients.
Then the users enters the subject.
The user composes the messages.
So far, so good.
But I said story maps are two-dimensional.
So let's look at the second dimension, which is going to be down.
The vertical dimension on a story map shows alternatives.
Sticking with the simple email example, there are actually a few ways to select the recipients of an email.
A user can type in an e-mail address or type a recipient's name or select a name from a contacts list or a select name for past recipients.
As you can see, we read down a map by mentally inserting the word or between cards.
Cards containing alternatives should be placed on the map in descending order of priority, the most important at the top and the least important the bottom.
Priorities established like this in a story map incision shouldn't be rigid, and their product owner can change them.
But it can be useful to have short discussions about rough priorities within a column of alternatives.
In my example story map, I'm saying that typing an address of an email recipient is the top priority.
So if we're developing this email product, i'd love for it to support all four ways of selecting recipients.
But if the team only has time for one, The top row of a story map is called the Backbone.
Generally, cards in the backbone are not stories you'll implement directly.
You won't, for example, bring the card Select Recipients into a sprint.
Instead, you will bring in one or more of the cards below it into the sprint A team might,for example decide that in coming sprint they will work on the
Type an Address and Type a Name cards, leaving the other two cards for later.
If your map gets a little too wide and unwieldy, you can make it easier to read by adding a second row to the backbone above the top row.
Think of the Top Row of The Backbone as analogous to signs along a highway, those signs that tell you when you're entering a new city or such.
On a story map, cards in the top row tell you when you're entering a new area of functionality.
But instead of, welcome to Arizona, the signs on the backbone say, Welcome to Saving a Document, or Welcome To The Checkout Process.
As long as we're talking about terms, let me go ahead and define a few other terms used with story maps.
After that, I'll describe how to create a Story map and how use it to convey a product roadmap.
In story mapping, we use the term step to refer to any card on the map.
Sometimes it's useful to referred to a group of steps.
In a story map, an activity is a collection of Steps that achieves some goal.
For example, logging in might be an Activity with the multiple steps of entering a name, entering password, passing a CAPTCHA challenge,
enter a code sent to the user's mobile device, and so on.
The steps and activities will become the user stories that give Story Maps their name.
Steps will typically be small implementation-sized user Stories.
An activity will be typically larger in what some teams and tools will call an epic.
If you put an activity under your product backlog, you'll probably later split it into the smaller steps or user Storys so that the team has small units
of work that fit well into sprints.
Finally, the term narrative is used to describe a sequence of items read across a map.
I was describing a narrative when I said you can read a across map by mentally inserting then between each card or step.
Looking back at our story map for writing and sending an email, we can a read narrative across the one line of the backbone.
Select recipients, then enter the subject line, and then compose the message, send the email.
By the way, if you want a one-page story mapping cheat sheet to help remember these terms and how to read a story map, I'll leave a link in the description.
It will give you a nice one page PDF on storymapping.
Let's talk about when to do story mapping.
I recommend doing it at the start of a project to get a feel for the overall product or system being built.
This is early on in a product, so don't get too detailed.
And I also recommend creating a story map any time a team is ready to develop significant new capabilities for users.
For example, suppose we're developing an e-commerce website and want to add wish lists as a new capability in the coming period.
We would create a story map showing how users will be able to interact with the new wish list capability.
I don't think you need to do a story map for everything.
For example, suppose we added wish lists to our e-commerce site years ago, and now we want to enhance that feature, perhaps with the ability to add a note
to items in a wish list.
We can probably just add user or job story to the product backlog describing this.
A user story could be, as a logged-in user, I can add note of an item in my wishlist so that I later remember why I added it.
Or I could write that as a job story.
When viewing an item in my wish list, I can add a note so that I later remember why I added it.
If you're not familiar with job stories, check out the video on them in this playlist and linked in the description.
Sure, there will be some UX design needed on this, but you probably don't need to map something out that is this small overall.
Who should participate in story mapping?
I want the product owner in any system or business analyst to participate.
We also want to consider including any users or stakeholders who can speak to the specific needs being story mapped.
If the team has a scrum master or coach, that person should facilitate the story mapping session.
And I want team members to participate, ideally the full team.
But this is not a meeting that I'm going to cancel if someone has dentist appointment.
I just generally want the whole team there.
When team members participate, they're going to hear the underlying reasons users and stakeholders want whatever is being developed.
Hearing about needs, problems, frustrations, expectations, or more directly from users or stakeholders can sometimes lead team member to insights they
may have otherwise missed.
And of course, I want team membership to participate because they often have very good ideas.
Ideas that non-technical participants may not think of.
Team members can also help steer discussions to the right level of depth.
I've seen more than one Story Mapping session where participants would have spent more time talking about something than it would've taken developers to
just do it.
Because a Story Map is arranged vertically in priority order, it's really easy to use a story map to convey a roadmap.
This allows a product owner to show the intended delivery sequence of features in one or more upcoming releases.
To create a roadmap, add a horizontal line to the map and then drag above the line everything that must be included in the next release or version of the product.
Then add label to map indicating what the items above line represent.
Here I've indicated that the cards above the line are part of the minimum viable product, or MVP.
Notice in this map that I put two cards from the third column above line.
This is fine.
It's just saying that those two alternative ways of doing something must both be supported in the MVP On the other hand,
notice that I didn't put anything from the fourth column above the line.
Again, this is fine.
It indicates that a suitable minimum viable product can be delivered without anything form that column.
Situations like these are common and to be expected.
To indicate additional milestones on a story map, you simply add additional lines.
Here I've added a second line to indicate the quarter three release.
I also moved a few cards above it and one lonely card below it.
Story maps can help teams discover important product backlog items they might have otherwise overlooked.
To do this, walk through the steps on your story map, thinking about each step from the perspective of a user.
It can be very helpful to ask a few questions at each stop, such as, what will a use most likely want to do next?
What mistakes could a user make here?
What could confuse a use at this point?
what additional information could the user need at the step?
If your product has multiple types of users, ask these questions for each type of user.
Story maps are my favorite tool to help product owners, stakeholders, and developers understand user needs and the interconnectedness of those needs.
I find story maps extremely effective for brainstorming the product backlog items that will be needed to achieve a team's next significant objective.
Do you use Story Maps?
Have you found them helpful?
What challenges have you experienced with Story maps?
Please share your thoughts in the comments below.
If this video has been useful, please click the Like button as it helps others find the video.
And if you're new to the channel, click Subscribe so you don't miss out on future tips to help you succeed with Agile.
Thank you for watching, and I'll see you next time.

Walk Through a User Story Map Example with Mike Cohn

Want Accurate Estimates: Don't Get Stuck in This Trap!

Transcript

I need a new backup drive.
I don't need 40TB drive, but the site I buy from listed one available.
Thought I might as well click on it and see the price.
The price seemed reasonable for that much storage, But what caught my attention is that the drive ships in 205 days.
Seriously, what are they thinking?
How can they possibly know the drive will ship in 205 days, not 204, 206? The website fell into what I call the precision trap,
which is applying a false level of precision to some estimate or plan.
We often fall into the precision trap because of the math involved in planning.
Let me clarify this with an example.
Suppose a team has estimated that it needs to deliver 100 story points of work to achieve some objective.
They've already calculated their velocity to be 15. Someone on the team does the simple math of 100 divided by 15 to get 6.66. Team members then proclaim
that they will be done in six and two-thirds sprints.
Or hopefully somebody decides to round that up and say it will take seven sprits.
But math like this leads to the precision trap.
You can see from this how the website decided the drive would ship in 205 days.
The precision track persists because we seem wired to like precision.
It feels good to say we'll be in 6.66 sprint.
We must be really smart to know that.
But we should instead favor being accurate over being precise.
Accuracy is about being right.
The easiest way to be right is to less precise For example, that website could have told me the drive would ship in about 7 or 8 months.
That would have been enough precision for me to decide whether to buy it.
When math tells a team they can deliver in six and two-thirds sprints, that's very precise, but it's probably not very accurate.
Just like the ship date of the hard drive, the estimate should be conveyed as a range.
Instead of six-and-two-third sprint, maybe it is six to nine sprinters or even seven to ten sprinter.
When estimating or preparing to communicate a plan, avoid falling into the precision trap.

Want to Delight Users: Try This One Easy Thing

Transcript

I just got home from a trip.
The housekeeper at the hotel worked in a way that many teams do.
And unfortunately, working this way leads to unhappy users.
I arrived at hotel a few hours before the scheduled check-in time.I was really hoping to check in early because I'd left my home at 3am.
Unfortunately, the Hotel said I would probably have to wait a couple of hours for a room to be available.
Oh well, I knew I was gambling that my room would be ready early.
I worked in the lobby for a few hours until my phone buzzed to tell me my room was ready.
The next day I discovered why my rooms hadn't been ready early the day before.
As I walked down the hotel hallway, I noticed the housekeeper had eight room doors open and appeared to be cleaning all of the rooms simultaneously.
I was curious, so I asked her why she was working on all the rooms at the same time.
She said it helped her ensure she did all of the steps in each room, from making the beds to replacing the toilet paper.
I ask her if it was faster to do all rooms that way.
she told me it probably was not faster, might even slow her down slightly, but it help ensure everything was done to every room.
It was purely a QA technique.
This housekeeper had a lot of work in process.
A lot rooms all being cleaned, but not yet fully cleaned.
Had she worked on one room at a time, I probably could have checked in early.
In addition to lengthening the time to value by keeping features out of the hands of users, having a can lead to additional problems,
including multitasking, which has been proven to be less efficient, hiding problems.
It's hard to detect problems while work is in process, creating a bottleneck for whomever will work on the items next, and decreased team member morale
because it takes so long for work to finished.
One of the easiest, quickest wins a team can have is to reduce its work in-process.
You probably can't outright stop work on things in Process, but you probably cannot minimize how much new work is taken on until you clear out the queue
of work in process.
Had the hotel housekeeper finished one room before moving on to the next, I could have checked in early.
I would have been delighted.
Your customers will be delighted too when they receive new features more quickly.

What Are Product Goals & When Do Product Owners Create Them?

Transcript

On a recent Agile Mentors podcast, I turned the tables on host Brian Milner and interviewed him about a resource he created for our community called the
definitive guide to the what and when of product owner responsibilities.
The link to download the free PDF guide should be appearing just above my head as I speak, and it's also in the description.
In this video, I want to give you a sneak peek into that interview.
We'll start at the moment when I asked Brian to tell me more about one of the activities he recommends product owners do about every quarter,
Create a Product Goal.
I want to talk about your quarterly items on here.
And you've got a couple, let me just kind of read some of these here, so you got establish a product goal.
That's a relatively new thing in Scrum.
I mean, I still think of 2020 as relatively knew, but as a old timer with Scum, product goals is one of the newer enhancements.
You've got doing the story writing workshop, so you're supporting what you said there.
Talk to me about the product goal here.
Yeah.
So I feel silly talking to Mike Cohen about what a product is.
Product goals are just that, they're a milestone, right?
And that's typically the way I talk about this in class is to say, especially when you're starting something new, you may not know everything that you
are going to do, but you know the next big thing that need to accomplish.
You know, the big mile marker that your going hit in the life of your product.
And that's what we want to establish with a product goal.
Something's going to take longer than a sprint, multiple sprints to do.
I've got this in the quarterly section, and that kind of how we tend to talk about it a lot here at Mountain Goat.
But even in class, we'll even say quarterly-ish, you know?
It's the bigger than the sprint section.
Right.
Bigger than sprint.
And sometimes it'll be longer.
Sometimes it will be shorter.
That's okay.
You just want to have that big thing that the team can keep their eyes on and kind of know, you know.
Here's, You got a sprint goal that tells us why what we're doing in this sprint is important and how my small task feeds into that.
And you've got this product goal to say, how does the sprints work?
fit into this bigger picture of what we're trying to do.
So you're making those connections consciously for the developers so that they are not just, hey, here's a laundry list of stuff to,
but here is the objective we are trying accomplish.
Yep.
I think it's important to have something that's out there bigger than a sprint.
A sprint is just, it just kind of sub-optimizing, right?
I'm thinking about if you're climbing a mountain and a sprints is like, what's the highest thing I see?
And just always walk into the thing you see.
Meanwhile, those are all false summits.
The real summit is, you know, behind some valley, but you don't see it because you set out that bigger goal.
And I like how you talked about it quarterly because if the goal's too big, if it is too far out, there, we're not going to feel very motivated.
about it.
I had this, the wackest example of this.
Hope the guy's not listening.
Actually, I hope he is.
But he told me he was on a project with the large particle collider.
And he said his whole project won't be due for 40 years.
I mean, I don't get it, but it's like they've got to run like 40 years worth of data before it is like totally done.
And I just picture myself showing up for work on a 40-year project, right?
I know you, you're going to be reading Dallas Cowboys news for the first 35 years, sports news.
That's a forty- year project too.
You're not going to take it serious for 35 years.
Then you're going wake up and go, oh, the deadline's only five years away.
I better get to work on this.
And then what I would do is realize, wow, I'll be retired after 40. Right.
Exactly.
So anyway, I've been silly, but I mean, you're on a project with a 40-year deadline.
How do you say motivated, right?
And I think three months is a really good time where I can see a bigger impact than a sprint.
But it's not so far that that student syndrome kicks in, and I feel, oh, don't really have to worry about it.
Let's go to a long lunch.
We'll get to work on it tomorrow, so I do like the quarter-ish approach there.
We greatly exaggerated a project length to make a point, and I can never resist a dig at Brian's favorite Dallas Cowboys team.
But I do want you to notice that I said quarterish.
I call this level of planning milestone planning versus other terms like release or quarterly planning.
And I talk about all of that and more in my Agile Planning Layers video if you'd like to know more.
In the meantime, I'm curious, how do you handle product goals?
Do you set them?
do find them useful?
Are they something you do regularly?
Let me know in the comments.

What Barbie Taught Me About Agile Project Management

Transcript

I finally watched Barbie.
I enjoyed it, which doesn't surprise me.
This movie had to be good.
Barbie was a must-succeed project.
If the movie flopped, it would probably be a decade before anyone could try again to make a Barbie movie.
But a successful movie would serve as a platform for sequels.
While watching Barbie and singing along to I'm Just Ken, I was struck by a few important lessons that apply to any must succeed project.
First, solicit and act on as much feedback as you can get on preliminary versions of your product.
For Barbie, the filmmakers ran test screenings in multiple cities, analyzed feedback, and ran more test screening.
In our words, they iterated toward making a great movie.
Second, leave things out.
Not every scene that's filmed makes it to the final movie.
During test screenings of Barbie, the filmmakers performed what product development teams call A-B testing.
Different versions of the movie were shown to different audiences to see which versions were best received.
The filmmakers used this feedback to remove scenes or shots that weren't necessary to the flow or humor of the film.
Not every feature a team builds should remain in the product.
The sunk cost fallacy often clouds our judgment.
When we spend time building that feature, we think we might as well leave it in just in case somebody wants it.
But no, unneeded and rarely used features clutter the user interface, just as un-need scenes can ruin a movie.
Third, have a visionary who keeps the project focused, but engage others for increased creativity.
Greta Gerwig was that visionary for Barbie.
She directed the movie and co-wrote the script.
Her vision drove what we experience when watching the film.
Agile projects have product owners who should act as visionaries for their products.
They should see the future and guide others toward it.
But no visionary, even an auteur filmmaker such as Gerwig, does it alone.
The best welcome creativity from others on the project.
For example, during the production of 2001, A Space Odyssey, director Stanley Kubrick used a novel idea from his team.
It was critical that Hal, the spaceship's onboard computer, overhear that crew members Poole and Bowman were going to disconnect him.
Kubrick brainstormed ideas of how Hal could overhear those private conversations, but could find no good solution.
The solution came from his associate producer, Victor Linden, whose job had mostly been filing insurance paperwork for the film.
Lunden casually suggested that Hal can read lips.
the vision for film adaptation of Arthur C.
Clarke's story remained very much Kubricks, But Kubrich knew to use great ideas without regard for their origin.
Finally, if you are working on a project that absolutely must succeed, have Ryan Gosling and Margot Robbie on the team.
Okay, their coding, design, and database skills are probably lacking, but they were perfect as Ken and Barbie.

What Curling Teaches Us About Agile Software Development

Transcript

If you've been watching the Olympics, you have probably seen curling.
Curling is one of those sports that the first time you see it you think, wait, that's an Olympic event?
Someone slides a stone down the ice, and then two teammates run alongside the stone, sweeping the Ice like their lives depend upon it.
And somehow the Stone ends up exactly where they wanted.
But the more you watch curling, the you realize something important.
Curling isn't about making a perfect throw.
It's about make adjustments after the throw, and that's why curling is actually a great metaphor for agile software development.
For years, traditional software work like Teams only got one chance to get everything right.
You'd have to write the perfect requirements document, create the design, implement everything exactly according to plan,
then hope that what you built was what customers actually wanted.
But software development doesn't work that way.
Customers often don't know what they really need until they see something.
And even when they do, communication is messy.
There's friction, there are assumptions, There is uncertainty.
In curling, that's the ice.
The team can't perfectly predict what's going to happen once the stone starts moving.
The ice conditions vary.
This stone might slide faster or slower than expected, so they sweep.
Sweeping doesn't completely change the throw, but it nudges the stones.
It helps it go a little farther or drift a bit less so it ends up closer to the bullseye.
And that's what Agile does.
The plan is like the throw.
It matters.
You still need to aim.
But once the work starts, you don't get to stop everything and start over.
you can only respond.
So agile teams sweep by getting frequent feedback.
They build something small, show it, learn from it and adjust.
That feedback helps them get closer to what users really need.
Not just what user said they needed, but what they meant.
The known needs and the unstated needs.
So the lesson from curling is this, the best teams don't aim once, they keep aiming.
And feedback is what turns a decent throw into a great result.
If you like this kind of agile metaphor, subscribe for more.
Enjoy the Olympics.

What Is a Spike in Agile? (Plus the Biggest Mistake Teams Make with Spikes)

Transcript

One of the more common mistakes I see teams make is relying too much on spikes.
A spike is an activity a team performs to get smarter about something.
With a spike, a teams isn't trying to immediately deliver a new capability.
Instead, they are building the knowledge that will allow them to deliver the new capabilities later.
Spikes are a great tool, and I'd expect every team to use them, but not on everything they work on.
The best use of a spike is to reduce excess uncertainty.
This could be uncertainty about how a feature should work or about it will be built.
A team may opt, for example, to spike the user interface for a particular feature, or it may use a spike to determine if a technical approach is feasible
or will perform at the required level.
Each of these can be a good use of a Spike.
The problem comes when a team wants to use Spike on everything.
Spikes should be used only in cases of extreme or excessive amounts of uncertainty.
spikes should not be use to reduce the typical garden variety uncertainty that exists in all work.
Further, spikes should not be used to eliminate uncertainty.
Teams need to be comfortable bringing work into their sprints or iterations with some open issues remaining.
Is your team reluctant to allow work-into-a-sprint with any remaining uncertainty?
That's sometimes the result of team members feeling excessive pressure to estimate perfectly, to always achieve the sprint goal,
or to deliver everything that they brought into a sprint.
If that's happening, a scrim master or coach needs to work with outside stakeholders or whomever is creating these unrealistic expectations.
Sometimes it's even team members putting this pressure on themselves.
But what's the problem with frequent spikes anyway?
It's that overuse of spikes extends your time to value.
This is especially true when the spike is done in one iteration and the rest of the work in a subsequent iteration.
Overuse of spikes also reduces the extent to which team members overlap work.
This can increase the burden on testers.
For example, consider the case of a programmer who uses a spike to reduce the uncertainty of the backlog item.
If that item is brought into the next sprint, the programmer's work has been made simpler by the spike, but the tester's has not.
If your testers are struggling to keep current with the programmers, consider whether the team is doing too many spikes.
It's a good question to ask yourself, even when the testors don't seem overburdened, if you want to succeed with Agile.
Hey, If you found this helpful, please click the like button and don' forget to subscribe.
Thanks and I'll see you next time.

What Is a User Story in Agile? (Examples + Template)

Transcript

Ever built something only to find out it's not what your user wanted?
Yeah, been there.
What if there were a simple way to make sure you're on the same page with your customer?
Enter user stories.
They're small, they're powerful, and they put your users front and center.
Whether you are agile, hybrid, or still figuring it out, user Stories work across the board.
they help teams stay focused on value, what users actually need, not just what we assume they might need.
But despite their usability and popularity, user stories are surprisingly misunderstood by teams and product owners.
Let's fix that.
Join me as we do a deep dive reset on user Stories.
User Stories are short, simple descriptions of a feature or functionality told from a user's point of view.
Their main purpose?
To make sure that what we build truly meets user needs.
A user story isn't a full specification.
It's a placeholder for a conversation, a starting point for collaboration between team members and stakeholders.
User stories solve a requirements problem.
How do we make sure that people building a product or service understand what users actually want?
User stories help ensure clear, human-centered communication, not just a dump of technical details.
They help bridge the communication gap between the people who need a product or service and those who build it.
User stories follow this classic format.
As a who, I want what, so that why.
This structure keeps the focus on user needs and the value delivered.
So who's actually responsible for writing user stories?
Short answer, the product owner.
They're the one who owns the backlog.
And it's their job to make sure each item on the back log is clear, valuable, and aligned with the project vision.
But here's the thing, it's not a solo mission.
Good user stories are a team effort.
Anyone can suggest a story.
The best stories often are created collaboratively.
Even if the product owner writes the initial story, the team should be involved in refining it.
That means developers, designers, testers, everyone who helps bring that story to life.
Sometimes the best stories come out of a whiteboard session or a quick chat where someone goes, wait, what happens if the user does this instead?
And boom, a vague story turns into a crystal clear one with real value.
The point is user stories are not just a documentation tool.
They're a tool for collaboration, shared understanding, starting point for great conversations that lead to great products and services.
Ron Jeffries, one of the originators of extreme programming, came up with the concept of three Cs to describe what it means to write a good user story.
The first C is card.
Back in the day, we wrote stories on index cards.
I still love to do that when I can.
Why cards?
They're tactile.
You can move them, group them flip them or even tear them up.
They feel less permanent than documents in a software system.
And they serve as a physical reminder to have a conversation.
Today, most user stories exist in tools and that's okay.
But be sure to not treat them as permanent inflexible or standalone spec just because they exist software.
Remember, a user story isn't the requirement, it's a pointer to the requirements.
The second of the three Cs is conversations.
Conversations are the heart of a User Story process.
conversations happen when the team is ready to work on a story.
A team member may say, tell us more about this story, or what does success look like?
Or what if the user runs into issue X?
Every user story contains a promise to have this conversation before development begins.
Without this promise, product owners might feel they need to write full specs upfront, which defeats the purpose of stories.
I want to mention an important point here.
Just because a product owner says they want something doesn't mean the team has to create it.
The team isn't Wesley from The Princess Bride who says, as you wish, to every request.
It's part of the team's job to push back and ask questions, and even to suggest different ways to accomplish a goal.
That's all part the conversation part a story.
If you'd like to hear more about this, it's a part another video called Nine Lessons from the Princess Bride.
You can get to it in the link above or in description.
Okay, back to the three Cs.
The third C is confirmation.
Confirmation means the acceptance criteria.
How we'll confirm the story is done and done right.
These come naturally from the questions teams ask during the conversation.
Acceptance criteria provide clarity.
A story must do this.
It must not do that.
And if X happens, we expect Y.
I recorded a separate video that dives deep into acceptance criteria and how the team and product owner arrive at them together.
You can access it through the link above or in the description.
Let's walk through a few examples of user stories centered around something we're all familiar with, logging into a website or app.
We'll start with a really basic story.
As a registered user, I'm required to log in so that I can access this system.
That's our foundational login story, but what other stories might relate to logging in?
Let's think through a few different user perspectives.
How about this one?
As the forgetful user I could request a password reminder so I that can log-in even if I've forgotten my password.
That covers the password recovery scenario every product needs to support.
What about someone who's never logged in before, maybe a first-time user?
That story could be, as a new user, I can register an account so that I could log in and save my preferences for next time.
Notice how each story frames a different user need or context.
Now, here's a fun one.
This is based on something that happened to me recently.
As a returning user logging in for the nth time, I receive a reward so that I feel recognized and encouraged to continue using the product.
The story is about adding a premium feature or even just an on-screen acknowledgement so the user knows they're valued.
The story says this happens on the nth time, because at the time the story is written, it's not important if this is the third,
the fifth, or the twentieth time they log in.
That can be determined closer to implementation.
These kinds of stories, basic, edge-case, and even delightful ones, can all help shape a better experience through thoughtful,
user-centered design.
I want to talk next about a special kind of story.
But first, are you looking for a little inspiration for writing your own stories?
You can download 200 real-world user story examples that I wrote on an early Agile project.
Some are good, some are awful.
I have notes throughout to explain what I'd do differently if I were writing those stories today.
It's totally free.
Just hit the link here and in the description to level up your story game.
Okay, let's talk about stories to help make your system more secure.
To improve the security of a system, think like a bad guy.
Seriously, when you're writing stories, don't just think about what should happen.
Think about you want to prevent.
That's where abuser stories come in.
They're like user stories but written with the bad guys in mind.
I worked with a company that let homeowners rent their homes to strangers.
Thinking about bad guys, burglars in this case, led us to write, as a homeowner, I do not want possible renters to know that my home is available,
that is unoccupied, tonight so that I don't get robbed.
If we hadn't thought about burghers, we might have let someone search for homes that are vacant tonight with expensive stereos and large TVs.
We don't write stories for abusers, but thinking about abusors can help you write the stories that prevent abuse.
You might have noticed user stories are short, really short.
Just one sentence usually.
So that raises a good question.
Where do all the details go?
That's the topic of the next video in this user story reset series.
Watch it by clicking the link shown here or in the description.

What Is the Definition of Ready in Agile and Why Is It Dangerous?

Transcript

Your Agile team probably has a definition of done, and that's a good thing.
On the other hand, a definitions of ready is dangerous and something most teams should avoid.
Hi, I'm Mike Cohn, the author of three best-selling books on Agiles and Scrum.
I help teams succeed with Agil.
And right now I can help you be more successful by convincing you not to use a definitive ready.
A definition of ready acts as entry criteria for the sprint.
Nothing is allowed into the Sprint unless it meets that definition.
To see how this works, let's look at a typical definition for ready.
It might include things like all acceptance criteria have been fully defined.
The product backlog item has been estimated and is five points or smaller, and the user interface has be designed and approved.
Nothing would be allowed into a sprint unless each of those statements is true.
A definition of ready such as this can absolutely help a team avoid problems.
If, for example, a theme has struggled because of bringing big items into its sprints, our rule governing the maximum allowable size of an item is great.
That rule will solve the problem.
But there's a downside, which is that a definition of ready can prevent a team from overlapping work.
Overlapping or concurrent work is a vital component of most Agile approaches.
Testing, for example, should overlap coding.
An Agil team doesn't delay testing until all coding is finished.
To differing degrees, the same could be said of all aspects of software development.
Analysis, design, testing, and coding all overlap.
A definition of ready can hamper a team's agility.
Think about the example I mentioned, which said an item is ready for a sprint only if all its acceptance criteria have been fully defined.
That may sound fine, but it is going to prevent the overlap of work.
The definition of ready is requiring that all acceptance criteria be figured out in advance.
So you can't have some people build the feature at the same time as other people define the acceptance.
Not only is knowing the criteria in advanced sometimes impossible, it's usually unnecessary.
Some acceptance are quite reasonably determined while the team is working on the item.
As another example, recall that the sample definition of ready I shared included that user interface has been designed and approved.
Again, including this in a definition ready will prevent work from overlapping.
This instructs team members that a user-interface design must be done before any other work can begin.
Think of any definition Ready as a gate into the sprint through which work must pass.
Only certain types of work pass through this readiness gate.
It makes sense to picture your definition of ready as a gate, because the whole idea really is nothing more than a step back toward a waterfall or stage
gate process.
So is a definition ready always a bad idea?
No, it's not.
You may want to consider a definitions of Ready to call out dependencies on other teams, especially if those teams frequently fail to deliver to you when
they say they will.
Suppose your team is dependent on something my team's building.
We promised to give it to you by Tuesday.
But Tuesday comes and goes, and my teams gives you nothing.
Wednesday comes, Thursday, Friday, a week goes by.
My team finally gives what we promised, but way too late for you to use it and finish whatever you committed to in the current sprint.
If my team does this too often, you may want to have a definition ready that says you won't bring anything into your sprint that is still waiting on something
from my Team.
If My Team owes you something to do your work, You want it in hand before the sprint starts because of how often MyTeam has jammed you up.
Note that this is absolutely an example of how a definition of ready prevents overlapping work.
It's less agile than if we could overlap work, but in this example, my team has let you down so often, you'll put in place a definitions of Ready to stop
it from happening again.
While we'll be less agile because of this, I think this is a good use of a definition of ready.
After all, your team has stakeholders you need to keep happy.
And when your promises to them about what you'll deliver are destroyed by my team not delivering to you, it's very reasonable for your teams to stop overlapping
work with my teams.
If you absolutely feel you need the definition of ready, I recommend structuring it as a set of guidelines rather than rules.
Consider a definition ready that says before anything can be started, any new or changed screens must be designed and the designs approved.
This rule will prevent overlapping work.
A better variation would be to say something like rough mock-ups of any new screens have been started and are just far enough along that the team can resolve
remaining open issues during the sprint.
This is a guideline.
It will still allow work to overlap.
The mockups need to be far-enough along, that team members think they can solve issues, during this sprint In some cases,
that could mean no more than a mock-up on a whiteboard.
In others, it could be an elaborate, nearly complete mockup.
Does your team use the definition already?
What's included in it?
And have you been able to continue overlapping work even with a definition of ready?
I'd love to read about your experiences.
So please share them in the comments.
And please do me a favor.
If this video has been useful, click the Like button.
and if you're new to the channel, Click Subscribe so you don't miss out on future tips to help you succeed with Agile.
Thank you for watching, and I'll see you next time.