Saturday, November 2, 2013

Should we stop using stop using Story Points and Velocity?

Most of the Agile teams break down their work into a couple of weeks at a time, and often estimate that work. They usually get done most of what they predict they’ll get done in that iteration.
A common scenario runs like this:
  • Developers are asked for estimates for upcoming work.
  • Team goes into estimation session which runs for almost an hour or two. People are optimists, so these estimates tend to be too low, even without pressure to make them low (and there's usually at least some implicit pressure)
  • These tasks and estimates are turned into release plans tracked with burn-up/burn-down charts
  • Time and effort goes into monitoring progress against these plans. Everyone is upset when actuals end up being more than estimates. In effort to increase pace with the estimates, developers are told to sacrifice quality, which makes things worse.
In short, Agile teams estimate so that,
  • Track velocity
  • Decide scope for the Iteration
  • Help Prioritize stories
  • Help Release planning
I am sure most of the Agile teams went through this exercise during their Agile Journey.
Efforts put into estimation is kind of waste as it is a guess rather Guessitmate. Project Managers/product owners tend to relate these estimates to number of days it will take to complete the story, in some teams estimate is equal to deadline. Most of the teams which use story points to estimate the work face these issues. This results in lack of confidence on development team when stories are taking more time to complete.
If you have red Mike Cohn's book "User Stories Applied" you will find set of claims around story points.
  • Claim 1: The use of Story points allows us to change our mind whenever we have new information about a story
  • Claim 2: The use of Story points works for both epics and smaller stories
  • Claim 3: The use of Story points doesn’t take a lot of time
  • Claim 4: The use of Story points provides useful information about our progress and the work remaining
  • Claim 5: The use of Story points is tolerant of imprecision in the estimates
  • Claim 6: The use of Story points can be used to plan releases

Claim 1: The use of Story points allows us to change our mind whenever we have new information about a story
If a story changes the size slightly there's no impact on the Story Point estimate, but what if the story changes size drastically? Well, at this time you would probably have another estimation session, or you would break down that story into some smaller granularity stories to have a better picture of it's actual size and impact on the project.
if we were to use a simple metric like the number of stories completed we would be able to immediately assess the impact of the new items in the progress for the project.

Claim 2: The use of Story points works for both epics and smaller stories.
The fact is that we don’t really know if an Epic is really equivalent to a similar size aggregate of User Stories (say 20 times 1 Story Point story). There is no significant added information by classifying a story in a 100 Story Points.
Claim 3: The use of Story points doesn’t take a lot of time
In fact, as anybody that has tried a non-trivial project knows it can take days of work to estimate the initial backlog for a reasonable size project.

Claim 4: The use of Story points provides useful information about our progress and the work remaining.
This claim holds true if, and only if you have estimated all of your stories in the Backlog and go through the same process for each new story added to the Backlog. Even the stories that will only be developed a few months or even a year later must be estimated! This approach is not very efficient.
Instead progress assessment on the Number of Items completed in each Sprint is faster to calculate (No. of stories in backlog/No. of stories completed in each sprint=No of Sprints left)

Claim 5: The use of Story points is tolerant of imprecision in the estimates.
There's no data to justify the belief that Story Points do this better than merely counting the number of Stories Done. In fact, we can argue that counting the number of stories is even more tolerant of imprecisions.

Claim 6: The use of Story points can be used to plan releases.
My argument to this will be, we can use any estimation technique to do this, so how would Story Points be better in this particular claim than any other estimation technique?
We will see how counting the number of Stories Done (and left to be Done) is a very effective way to plan a release.

Real Life Use of Simple Metric for Project Progress Measurement:

I was working for car insurance company to build Mobile web app to allow users to buy car insurance on the go. We did 2 week inception to identify the project vision, product backlog, MVP Scop. Product owner was asking for rough estimate of how much time it will take to complete the MVP scope. Instead of estimating each individual stories in product backlog, we asked question to development team can this story be completed in 1 week Iteration by a dev pair? If not then break the story down.
From past experience of working on Agile projects, one can say that by continuously estimating the size of the Stories/Epics you are creating a distribution of the sizes around the median:

Assuming a normal distribution of the size of the stories means that you can assume that for the purposes of looking at the long term estimation/progress of the project, one can assume that all stories are the same size, and can therefore measure progress by measuring the number of items completed per Sprint.
The size differences got evened down over the period of time.
So how does this help in release planning? Well, by counting number of story cards we knew that we have to develope around 100 story cards to complete MVP scope. We looked at the features that can be developed in parallel. Team realized that we can only work on 3 parallel streams of work in sprint. So in a way we would need 3 pairs to work in parallel.
As usual team played velocity game to come with no. of cards a pair of dev can complete in 1 week sprint. So we started with assumption that this team will deliver X stories end of sprint 1. We then calculated no of stories in backlog/no of stories completed in a sprint= No sprints to complete the MVP scope. This information was then shared with Product owner. This helped us in identifying how many approximate sprints we need to complete MVP scope.
After the first 2 Iterations we relooked at the team velocity and adjusted the planned velocity accordingly. Using no of story cards completed in 1 week scrum helped us to get to the velocity number for the team.
We used burn up chart (based on story count) to track team progress.

As you can see in the below picture, crossed stories show completed scope. It was easier for product owner to view the completed/uncompleted scope at any given time. We also used something called backlog wall to show project progress. Instead of Burn up one can use this to show project progress.

At the start of the scrum, during the scrum planning meeting team looked at past velocity (story count) and signed up for more or less same number of stories for upcoming Scrum. More focus was on discussing story value and business priority instead of estimation.
We also used Cycle time to help team to improve and streamline process. Cycle time is a useful metric to provide informed insight into the progress of your development process
In case of story point, there is this natural tendency of changing the story effort (from 1 SP to 2 SP or 2 SP to 4 SP) when story scope changes. In this case, any scope changes or missing requirement resulted in new story and thus helped team to track changes in scope in a easier way. Product owner was more involved in discussing business value rather than getting into discussion around story point. Continuous prioritization of planned scope helped in working on most important or valuable stories first rather than working on stories which give quick gain in story points. I have seen cases where story point is used to track team progress there is this tendency to add up story points to show better velocity. Using story count definitely helps in avoiding such situations.

Product owner and Team were happy with this change as
There are significant benefits we get from this move:
Fewer metrics, more conversations:
In Scrum planning meetings, we shifted focus from the number to a collaborative conversation. This provided a better platform for our team to discuss and eventually establish a shared understanding about what to build and how. We noticed that subsequent development work became much smoother after these conversations.

Less math, more effective planning:
In planning meetings: Earlier we used to translate our scope to points, scratched our heads to figure out the exact number of points to put in or take out. Freed up from these calculations, we focused more on business value and being more responsive to ad-hoc requirements.
Better way to track change in scope:
Any new requirement/scope resulted in new story instead of adding up story points on existing story. Helped team to track scope changes in effective manner.

As Martin Fowler said: “So whenever you're thinking of asking for an estimate, you should always clarify what decision that estimate is informing. If you can't find one, or the decision isn't very significant, then that's a signal that an estimate is wasteful." -- PurposeOfEstimation
This is an experiment we just started, so would like to use this on other Agile projects as well. This works best for projects with duration more than 3 months and where there is lot of trust between Product owner and developement team.
In the end I will say stop wasting time trying to estimate a never ending Backlog. There's no proof that that will help you predict the future any better than just counting the number of stories "Done".

Note: Presentation @AgileIndia2014:

Tuesday, July 16, 2013

Continuous Retrospective

What is Retrospective?
  • Retrospective is a periodic meeting involving the entire team for the purpose of inspecting and adapting methods and teamwork.
  • The goal of the retrospective is to determine concrete actions that can be taken during the next sprint to help the team improve.
Why do we have Retrospective?
  • To improve the communication
  • To improve the team's capability
  • To improve productivity
  • To improve product quality
What is Continuous Retrospective?

 Continuous Retrospective is inspired by the retrospective practice.  It is not same as Retrospective meeting that the team has at the end of every Iteration. It can also be called as Continuous Feedback Board which provides effective mechanism for improvements within the team.

I have seen number of events, conferences that use Continuous Retrospectives to gather and immediately act on any feedback. The organizers establish a wall with sticky notes, markers and some clearly marked columns. They used this input to change the conference format and act on any feedback provided the day before. Most of conferences this wall is placed towards the entrance or exit.

Continuous Retrospective can be used on Agile projects as well. One can set up a wall with sticky notes, markers and some clearly marked columns. Each member of the team can put sticky on the wall as and when needed. The team can then check the sticky next day after the stand up and can have a quick discussion about the same and agree on the action item. One can also put the sticky limit of X before team discusses all the sticky notes as a group. So as and when number of sticky notes on the Continuous Retrospective Board goes upto or beyond X, team will come together to discuss and identify the action item for each of them.

Some teams establish a continuous Retrospective wall to gather retrospective data. Members are encouraged to put up sticky notes with their input on the wall. Minor items that team feels they can can address are dealt with immediately and taken down. A significant number of notes left on the wall after end of Iteration then triggers a normal retrospective with the notes providing the input for the retrospective.

Advantages of Continuous Retrospective:
  • Team doesn't have to wait for end of Iteration to raise concern or appreciation
  • Team can immediately act upon the action identified
  • It is less likely that team members will miss out any important event which happens mostly during the normal Retrospective at the end of Iteration or Release retrospective.
  • Even if team uses the inputs from the wall for normal retrospective it helps to save the time spent on gathering inputs during the retrospective event.
Drawbacks of Continuous Retrospective:
  • Conversation can be one way, with attendees putting up whatever they like without any motivation to help or implement improvements.
  • some of the feedback may include actions that are not feasible or that are unlikely to be achieved until after the period, whilst other information can contradict each other, leading to confusion about the action.
  • Teams should monitor time spent in discussions on the sticky notes, it is more likely that team end up spending lot of time on wall inputs instead of identifying action.

Friday, June 1, 2012

Walk the Board

The daily stand-up meeting (also known as a "daily scrum", a "daily huddle", "morning roll-call", etc.) is simple to describe:
The whole team meets every day for a quick status update. We stand up to keep the meeting short.
That's it.

Why a Daily Standup?

What is the purpose of the daily stand up?
  • To agree as a team on how to deliver the most value in the next working day
  • To inspect and adapt the sprint plan if necessary, in order to deliver the most value in the sprint
We also have agile principles to guide us in the daily standup.
  • Focus on outcomes over output (or results over activity)
  • Focus on priorities
  • Emphasize team ownership of results over individual assignments
The standard format of three questions (What did you achieve? What will you achieve? What impediments are in your way?) too easily devolves into a mere status meeting, failing to achieve the purpose of the daily standup and failing to embody these principles. 
A mature team must first understand the goal, follow the principles, and then skillfully apply the appropriate tools and techniques to achieve the goal for the daily standup.

In my current project we are doing "Walk the Board" which helped us in making stand ups more effective.
It also makes good use of the Iteration wall,
  1. Gather around your team’s Iteration wall. 
  2. Start with the highest priority story/feature in progress.
  3. Ask what we, as a team, can do to get that story done (per our Definition of Done).
  4. Ask what is blocking us, as a team, from getting the story done.
  5. Repeat steps 3-4 for the next few priority items, up to your team’s WIP limit. 
  6. To finish, validate that everyone on the team has been heard and all are focused on the top priority stories.
Other option to make stand up effective is to answer the below mentioned questions during the stand up:
  • What did we (as a team) achieve to get closer to the Iteration/Release goal?
  • What is blocking us from focusing on the Iteration/Release goal?
  • What do we agree on doing today to make sure we reach the Iteration/Release goal?
I personally prefer "Walk the Board" as with this board in place, the stand-up moves through each work item from end of process to start of process (e.g., right-to-left) and from highest-to-lowest priority (e.g., top-to-bottom). You may even explicitly indicate on the board what sequence should be used.

Wednesday, September 7, 2011

Iterative and Incremental Design

In traditional software development the design phase happens in the beginning of the project, takes quite a long no-coding or little-coding time. At the end of the phase, the design is considered being more-or less frozen. It might sound logical to plan ahead in a detail, however, I have often seen that design changes quite a lot during the development period and not having space for incremental design can hamper things during development. Therefore attempts to fix the design well in advance often lead to the wrong assumption and sub-optimal solutions.

The XP practice of Incremental Design is a reflection on the fact that the best design emerges from the trial and error. Incremental Design does not prohibit thinking about the highest levels of the system. However, it encourages the team to plan in detail only what is going to be constructed soon and to make the design evolve iteration by iteration based on the current customer priorities and discovered technical limitations. We have done this in the past on diff projects and it has worked really well. One might need to educate the customers to help them understand the incremental design. I have seen lots of customers ask for designs to be done upfront but once they understand the value of incremental and iterative design, customer will be more than happy to work iteratively.