"We don't have time to plan. We just have to start developing."
Have you heard this before? Have you even said it? It's tempting to think that, when timeframes are tight, setting up a software development project is a waste of time. After all, isn't that what agile is about -- working software? Why can't we just get going building something? We'll sort out the details later.
We believe there's no substitute for "Slowing Down to Speed Up." We call it Sprint 0, and its purpose is to get everyone on the same page so that when we do start developing, the team performs like a well oiled machine. Everyone knows what we're doing, why we're doing it, and what their individual contribution is supposed to be.
So what is Sprint 0 then? First, let me take you back a step to Discovery. We begin most projects with a Discovery phase, a high level working phase involving client stakeholders, that determines scope, defines "done," and results in a feature roadmap. Sprint 0 then builds on Discovery.
In Sprint 0, we fill in details of features determined during Discovery, creating mature user stories and the tasks necessary to complete the stories. We move from high level thinking to release-specific thinking. Outcomes of Sprint 0 include comprehensive planning for Sprint 1, and user stories determined for Sprints 2 and 3. A successful Sprint 0 results in all stakeholders and team members being on the same page about what will be in each release, what the essentials are, and what the "nice to have" items are. The net effect is that the entire project team is 2-3 sprints ahead in terms of thinking and planning, which gives much greater flexibility to the project as a whole.
I recently sat down with Tony Nigrelli, Professional Services Manager at Core10, and asked him a few questions about Sprint 0.
Lee Farabaugh: Tony, what does Sprint 0 look like in real life?
Tony Nigrelli: Oftentimes it focuses around an in-person session with the project team and the client stakeholders, and involves a whole lot of whiteboarding. It will also involve other interactions, meetings, and work sessions to complete the user stories and tasks. The end result is that everyone gets a chance to talk about what they think the application will do, and we iron out a lot of potential misunderstandings and pitfalls. At the end, everyone has a much clearer expectation of the release.
LF: How do you determine if Sprint 0 will be successful?
TN: Did we achieve the outcomes of having the first release planned out and the first 3 sprints set, with the first sprint literally tasked out, and the second and third sprints ready for sprint planning? And, do we have an idea of what the "must haves" versus the "nice to haves?" If you ask each person involved separately, they should all be telling you the same thing.
LF: At Core10, we use a tool called Target Process for our sprints. How important is it to have a tool like that?
TN: It's not so important what tool it is, but more important that you know the tool well and how to manage it. You should be comfortable enough with it to input information quickly in a work session to keep things moving. Having a tool allows you to communicate, keep track, and manage your project well, as well as keep track of features, stories, tasks, iterations, and releases. We are big fans of things like decision logs, and retrospectives, and we use the tool to stay consistent across multiple projects.
LF: We've talked a lot about what the benefits of Sprint 0 are. What are the risks of not doing a Sprint 0?
TN: The biggest risks are scope creep and scope change. Sprint 0's function is to clearly define what we're doing so that we can recognize scope creep and scope change when it happens, and make good decisions about how to handle it. Another risk is decisions on the fly that can drastically change the expectations or definition of done. Skipping Sprint 0 opens you up to expectations not being met, and greater potential for completely refactoring work because you haven’t done the due diligence on the front end. There's also a bigger chance for a gap in understanding of the work between Core10 and our client.
LF: What thoughts would you leave us with on Sprint 0?
TN: Sprint 0 introduces transparency into the project. We want our customers to understand what we’re doing, why we're doing it, and to be on board with it. Organization up front allows the project to ultimately move faster. We have a process we believe in and want them to join us in that process. We don’t want it to be “what’s behind the big curtain.” They don’t need to know every little step, but customer should feel comfortable knowing what we’re doing in each sprint, and Sprint 0 ensure that from the beginning.