One of the
most debatable topics in Agile especially Scrum is whether a team can actually
deliver something potentially shippable in the first Iteration or Sprint. Some
folks suggest a Sprint 0 while some oppose it as they feel it is against scrum
principles.
The purpose
of this article is to help you understand whether a Sprint 0 really makes sense
or not…
What is
Sprint 0?
Sprint 0 or
Iteration 0 is technically the first iteration of an agile project but it is
more used for getting the preparatory work done rather than actual development.
It is like a feeder sprint for the scrum team and product owner to work
together to understand the backlog, discuss the relative priorities, estimate the
top priority items and get ready to work on the most important stories in the
first official development sprint of the project.
Do we
really need a Sprint 0?
Technically
No.
Lets assume
you are the scrum master and are starting a new scrum product development project.
You are meeting the product owner and the scrum team on a Monday morning which
happens to be Day 1 of your Sprint 1.
You and the
team are probably new and have little to no idea about the product you are going
to building. The product owner is probably still refining his priorities and
the first few days of the sprint will go in the team getting to know each
other. Unless you do a 4 week sprint, by the team they identify the top
priority stories, estimate and break it down into tasks we are probably 50% or
more into the sprint and will not have enough time to do any worthwhile
development that can be shipped by the end of the sprint. Even in a 4 week
sprint, it is highly debatable as to how much actual development the team would
be able to do after they get the basics sorted out.
According
to Scrum, a Sprint is time boxed and you have to mark the sprint as completed
by the end of the sprint. So, chances are high that you will have many incomplete
stories by the end of your first sprint.
By adding a
Sprint 0, I took the delivery pressure off the team and spent the first few
days building the team and working collaboratively on the backlog to understand
what the team is going to build. At the end of sprint 0, we have a decent shape
backlog and the team has a few user stories that they can start work when
Sprint 1 starts.
How long would
a Sprint 0 be?
Ideally a
team would need anywhere between 1-2 weeks to get familiar with each other and
get the preliminary backlog of work ready. So, I would suggest you plan for a 1
week sprint 0 if your usual sprints are 1 or 2 weeks in length and a 2 week
sprint 0 if your usual sprints are 3 or 4 weeks in length.
Is adding a
Sprint 0 to the release schedule really scrum or agile?
Going by
technical definition of the methodology No, I don’t think so. Sprint 0 is more
like a planning period where the team work out the details of how they can work
together in the coming weeks/months. Since, scrum doesn’t explicitly recommend
a planning phase for a project and expects us to cover everything within the
sprint, we cannot say that our project is doing scrum if we add a sprint 0.
At the same
time, Agile is an adaptive mindset and approach where the team is free to tweak
their processes to enhance their output. By adding a sprint 0 the team is
basically improving the efficiency and delivery capabilities of sprints 1 and
beyond so, I would say that even if we add a sprint 0, we will still be doing
agile if we follow the other core principles that agile was built on – customer
focus, regular delivery of value, adapting to changes and continuous
improvement.
Real life scenario:
In real
life agile projects, you can also find teams that use a stabilization or
regression sprint toward the end of the major release where the team will make
sure all bugs are fixed, pre-existing functionality that was delivered as part
of the last major release are working fine and the product meets the quality
standards set forth by the organization.
Again scrum
& agile purists will argue that adding such an iteration is against the
scrum methodology.
Yes, I cannot
deny that. But, practical usability and fitness for purpose always trumps
idealistic processes. If I am delivering a major product version to a customer,
he would be more concerned about my project team delivering a quality product
rather than following scrum perfectly. So, going by customer focus as our teams
main goal, we are using one sprint to make sure the product is fit for use and
delivering the same to the customer and I would still say that my team followed
agile methodology because we did follow all the agile principles.
What are
your thoughts on sprint 0 and a stabilization testing sprint? Sound off in the
comments section…