Sunday, July 26, 2015

Agile Product Ownership in a nutshell

Heard about this absolutely fantastic video that I thought I must share! Thanks to the wonderful people at This Agile Life for sharing it!






Rate this post!

Thursday, July 23, 2015

Sanity check: Are you really doing Scrum?

Although each team implements Agile in their own special way, it helps to take a step back and think about whether you are really following Agile principles. Here are some things to think about.


Are you really following Scrum if -

  • You don't know what a minimum viable product is
  • You don't do demos
  • You don't do retrospectives
  • Your don't follow Scrum roles
  • You don't have a backlog
  • Your team is constantly overwhelmed with end of sprint deadlines
  • You follow 2 week iterations, but don't even attempt to produce working software at the end of each iteration
  • Folks on the team are stuck and don't bring it up or ask for help
  • Your team thinks 'stand-ups' are a complete waste of time and regularly skips them
  • You have separate 'development scrum team' and 'verification scrum team'


If you answered yes to the questions above, you may not be benefiting much from your Agile experiments. I encourage talking about your approach someone who has experience implementing Scrum. Possibly, my post on getting started on your Agile journey may help you find reasonable a start to some of the problems.

Rate this post!

Friday, July 10, 2015

As you begin your Agile journey...

Doing 2 week sprints doesn't make your team Agile. Here are a few thing you might want to consider having in place as you set out on your Agile journey:

Create / Work from a backlog
The first step to solving a problem is to identify what the problem is. Creating a backlog is a great way of thinking through the first iteration of a solution. If you already have a backlog and aren't really using it, I recommend taking some time to groom it so it becomes a valuable resource.

You don't need to wait until you have hundreds of items prioritized correctly in the backlog. I recommend having just enough stories to get started, or just enough for the first minimum viable product. 

When grooming the backlog, consider rewriting some possibly poorly written user stories. We slice a birthday cake vertically, not horizontally. Similar to that, I recommend have your stories span all the layers of your application. I do not recommend having 'create the UI' (that does nothing) as your first solution. Instead, try to find ways to build a shippable and usable product.

Get your roles correct
Although development leads, test leads, project managers, team leads, system architects, development managers may seem like good fits for various Scrum roles, it may not always be the right thing to do. 

I have seen teams where a single person worked as the Scrum Master and the Product Owner. I have seen a team where a relatively non-technical Project Manager was asked to be the Product Owner - creating and grooming the backlog of highly technical work items. 

I recommend taking a little bit of time to think about the roles and get them right.

Start your team on a path of self organization
Self organizing teams stick together through tough times and hold each other accountable for quality. There are some things you can do to nudge your team on a path of self-organization. 

a. Allow failures
If / when the team fails to meet their commitments for a sprint or fails to deliver good product quality, you can use that opportunity to drive conversations so that the team starts holding itself accountable. 

b. Get the team to commit
Drive the commitments by team-input rather than coercion or deadlines. You are more likely to get frequent successes when sprint and release commitments are driven freely by the team.

c. Data driven retrospectives
I recommend collecting good data and having the team reflect on that data in retrospectives. This helps identify problems about why the team didn't meet their commitments. 

Start thinking about improvement opportunities
When teams start Scrum / Agile, the first few sprints are usually bumpy. I recommend that Scrum Masters to maintain a list of items that are good candidates for improvements. Some of them may be:
a. Quality of User stories, Backlog Grooming process
b. Team practices - e.g. code reviews, pair programming
c. Team processes - e.g. "JIRA workflow", quality of retrospectives
d. Delivery cycles - e.g. thinking about how to establish a release cadence

I find that Scrum seems relatively easy in theory, but can be hard for teams to implement. Taking the right steps initially can help create a culture that support Scrum / Agile and can set you up for success.




Rate this post!

Wednesday, July 1, 2015

User story examples

From my Scrum Master experience, I find that everything starts with user stories. If your user stories are bad, everything can go downhill, no matter how good your process or team is. 

I wanted to write about characteristics of user stories, but I thought it would make more sense to take some examples and discuss them. Here are a few example user stories

1.  As a user, I want to create a new account, so I access the system for my day job
  • This story adheres to a commonly used template - defining who is the actor, what is needed from the story and some business justification. 
  • I like the 3Cs defined in XP - Card, Conversation, Confirmation. 
    • CardThe story is short and can be written on a card. It is not a legal document covering all the possible edge cases in the world. 
    • Conversation - The story does allow for some conversation - the team can ask questions or express their opinions. For example - the team can have questions about what is all data that is needed from the user in order to create a new account, or what is the expected UX etc. The conversation about the story becomes part of the story even if all of it isn't explicitly documented. 
    • Confirmation - The story is defined well enough that we can write an acceptance test for it. However, no team I know of does perfect Agile / Scrum, and almost all teams I have worked with have lacked in the area of TDD and ATDD. In absence of acceptance tests, I like to redefine the third C as confirmation received from the Product Owner in a demo.
  •  The story adheres to INVEST -
    • Independent - The story can be made to stand on its own 2 feet.
    • Negotiable - Since the UX or parameters to be accepted from the user aren't expressly defined, the story can be thought of as negotiable
    • Valuable - The story adds value by allowing a user to register a new account.
    • Estimate(-able) - Teams should be able to put a time / story point estimate on this story - possibly after some discussion. 
    • Small - The story doesn't seem overly big. It looks like something the team can accomplish in a reasonably small sprint.
    • Testable - The story is testable as someone can query the server or database to see if the account was successfully registered.
  • Overall, I like this user story. This is a decent candidate for a 'ready' backlog.


2. As a user, I want my app to be fast and responsive, so I don’t get irritated while using it
  • Although this story adheres to the format, the 'fast' and 'responsive' words in the story make it non-testable. The parameters need to be defined in ordered for a tester to objectively pass or fail any implementation.
  • Although the sentiment behind the story is good, I wouldn't call this story as 'ready' for a prioritized backlog. Some more work needs to go into the story to define it better.


3. As a maker of smartphones, my company wants all apps in all app stores to be supported on all of my devices across formats and variants, so my company gains 100% market share
  • Just by reading the story you can tell that is (a pipe dream) and HUGE! It also looks completely non-negotiable.
  • I'd call this a terrible candidate for any backlog. A lot of work needs to be done on this story before it can be worked on by any Scrum team. 


4. As a developer, I want to connect to the database so that I can query for various pieces of information
  • Unless your product is the database itself, I don't like this user story too much.
  • Connecting to the database, getting the development environment setup and compiling etc. should be done as a part of Sprint 0 - the development and test set-up sprint. This should not be something that is needed in a product backlog when you start adding business value to the product.

5. As a tester, I want to have a separate test environment built for me, so that I don't have to test in production environment.
  • I like to think that if your organization doesn't have a separate production and sandbox / test environments you may not be ready for your sprint cycles yet. 
  • Having said that, I want to confess that this is a real candidate story from a project I have worked on. The problem we were facing was that our regular sandbox / development environment was going through maintenance causing our servers to go down randomly. This caused a lot of pain points for everyone on the team. It was impossible for us to build an entirely separate test environment. The story was too big, and there was no real value-add to the business, as the system maintenance was scheduled to be complete in about 2 weeks time. 
  • We just had to deal with the sandbox system maintenance nightmare by improving communication between the teams involved.


6. As a user, I want to be able to connect to database
  • This story has a lot of problems. You can tell by reading it that it does not spell out the business value.
  • Users usually don't connect to database, they use the UI to do various actions - which may entail connecting to the database. 
  • We need to carefully think about - the actor, the functionality and the business value when we write user stories.

In conclusion, I believe that writing good user stories is really important. Almost all the teams I have worked with find writing good user stories to be really hard work. I like to consider writing user stories as a matter of continuous improvement. You can possibly start off with some bad ones, but it really helps if you devote time and think carefully about the stories.

No matter how good or bad your user stories are, I recommend having a meeting where your team discusses the user stories. This allows for conversations about the user stories between the team and with the product owner. This lead to better shared understanding of the problem the team is going to solve.

Another quick point - Most Scrum Masters I know have talked about a definition of done at some point, but I think it is also important to talk about a 'definition of ready'. This definition can give the Product Owner some guidelines about what your team expects from the user stories in a 'ready' backlog / queue. 


Rate this post!