Two weeks is the worst sprint length
Mike Cohn over at Mountain Goat Software says this in My Primary Criticism of Scrum:
In today’s version of Scrum, many teams have become overly obsessed with being able to say they finished everything they thought they would. This leads those teams to start with the safe approach. Many teams never try any wild ideas that could lead to truly innovative solutions.
I believe a great deal of this is the result of the move to shorter sprints, with two weeks being the norm these days. Shorter sprints leave less time to recover if a promising but risky initial approach fails to pan out.
Most teams I have joined have been working in two week sprints, and it has always seemed like the wrong length. In fact, at CCP, I championed “anything but two weeks.” I saw teams unable to get features done and tested in two weeks, which caused teams to not take the “shippable increment” idea very seriously. Nearly every sprint was a failed sprint in one way or another.
My preferred solution was to move to one week sprints. I’ve written about one week sprints before. If Agile is all about feedback, then halving your sprint length gives you double the feedback and chances to improve. You can try something out for a week, find it doesn’t work, and move on without putting a release at risk. A sprint twice as long carries twice the risk. I feel this, more than longer sprints, much better addresses Mike’s goal to get back to creativity. That said, it requires an intense commitment from the team to adopt Agile and eXtreme Programming development practices, such as through automated testing, shared code ownership, and more. It also requires a team that can function and perform well, and someone to coach. Without these things, one week sprints will fail.
My backup solution, when I feel a team isn’t yet ready to go through the transformation one-week sprints bring about, is to move to longer sprints. This does not encourage the behavior I ultimately want to see, but at least it allows more experimentation. More importantly, teams can take the “shippable increment” ideal seriously.
This reasoning can be taken to absurdity, but avoid it. I once had someone seriously suggest two releases a year was too often, and we should go down to one release a year, so we could make sure it was high quality and bug free. These people just need a reminder of the history of software (and often their own company). Even stuff like printer firmware can be iterated on less than 4 weeks.
In the end, I still prefer one week sprints, which isn’t surprising as I’m an XP advocate. But if a team isn’t able or willing to move to one week sprints, don’t default to two weeks.
There are two notions of “agile” these days – project management approach, and programming style. Both are almost two different worlds. As management approach, agile is more an excuse than something that leads to results, really. It hardly makes sense, from programming point of view, to not start working a new item on a second thursday evening, because sprint ends in two days, or plan your success two weeks in advance on hourly basis – you’ll always overestimate to be safe. Probably a lot of developers could make a list of funny decisions project took on just because project tunnel-visioned into scrum practices.
I’m more of an advocate of “trust your developers” approach. Rely on fast iterations (by iterations I mean merging finished functionality into head and handing over to QA pipeline, not sprints, of any length), rapid deployments, TDD practices – the thing that truely makes development agile, ready to ship at any time. You don’t need sprint plannings here, or sprints. You’re still free to present customer all your new stuff every second friday, if they like such schedule. But you’re open to do it on wednesday, if you so choose.