Friday 21 February 2014

…and why we (temporarily) went back to Scrum

In my previous post I described the reasons why we’d moved from Scrum to Kanban.  This attracted a number of responses, ranging from “Yeah, that was our experience as well”  to “You’re doing Scrum wrong”.  Which is fine – the point of this blog is to write about my experiences and learn from others.

We've recently had a specific piece of work come up which we thought was ripe for trying with Scrum.  The simple headline of the project was "Re-brand the website to the new group brand".  There were a number of reasons we thought it worth using scrum again:
  • The project had a pretty well defined scope
  • The level of complexity was low, with few unknowns
  • The deadline was relatively close (2~3 months)
  • We wanted to try Scrum again, to test our thinking on our process

Creating the New Backlog

Working with the Product Owner, we produce a product backlog for the rebrand pretty quickly.  It had around 60 stories in it.  With a couple of people from the team, we quickly reviewed these, looking for the following:
·         Areas of complexity and /or technical risk
·         Logical dependencies (does it make sense to do Story A before Story B) [see below]
·         High level “T-shirt size” estimates
For around 60 stories, this was relatively easy to do.  We prioritised the stories that were complex, large or otherwise made sense to do sooner rather than later, and took them to sprint planning.

Story Dependencies

I should probably do an aside on story dependencies here, before someone jumps on me.  I know that stories are really meant to be independent and shippable alone or in any combination.  This is a worthwhile ideal, and something that we strive towards.  However, it’s just not always possible.  Particularly in this project - we wouldn’t ship, say, a rebranded header without the rest of the site being rebranded – in fact, the whole rebranded site will ship as a single release, tied in with other activity (customer communications, etc).   However, we have been releasing internally ‘work in progress’ versions of the site for other stakeholders to view and comment on.
However, that doesn’t get away from my general view on story dependencies. As I said, while independence is a worthwhile idea, sometimes it just makes more sense to do one story before another  e.g. story A might require some underlying software architecture or infrastructure work which other stories also need.

Sprint Planning for Sprint 1

I was nervous about our first sprint planning meeting, bearing in mind how terrible these were previously.  We took the prioritised backlog in, and starting discussing the stories.  While some of the old issues raised their heads, because of the relatively low level of technical risk and unknowns, people were able to generally agree on the points for each story without the endless discussions around implementation detail.  I think we got out of there in less than 2 hours, and with 7 stories worth 20 points for Sprint 1.  While this proposed velocity wouldn’t get the whole backlog done by the time we needed to ship the rebranded site, I wasn’t too worried as I knew that we’d front-loaded this sprint with the bigger and riskier stories.

What had we missed from Scrum?

Going back to Scrum definitely reminded us of some of the great things that we’d missed.  The short sprint deadline (we use 2 week sprints) definitely brings a degree of focus to the team that maybe we’d lost.   Sprint 1 went well, but in the process made me think about some of the things we liked from Kanban.

What did we miss from Kanban

As Sprint 1 progressed well, it looked like we’d over-estimated a couple of stories, and we wanted to pull some extra stories from the backlog.  Normally this is a no-no in Scrum, but from our previous Kanban experience, we weren’t worried about doing this.  We did set some basic rules – if a dev wanted to pick up a new story, they had to first check that there was no help (including testing) that they could offer on any existing stories in the sprint.  They also had to be confident that the new story could also be completed in the current sprint.

As the Project Progresses

We’re now at the end of sprint 3, and things are still going well.  Our decision to put the difficult/risky /technical stuff in the first two sprints has paid dividends, and the remaining work is getting simpler and simpler.  Sprint planning for Sprint 3 was particularly straightforward.
The constrained scope and low level of unknowns has meant that our analysts on the team are under-employed, however – most of the stories are so straightforward that a dev can often immediately start coding. It’s this lack of complexity which I think is key to our success on this project with Scrum.

What Next?

For the characteristics outlined above, Scrum works well for us.  Or, perhaps, it’s just easier to do. The stories are relatively homogenous, within a nicely constrained and defined scope, and with little analysis required.

Once we’ve delivered this rebrand, I expect to go back to Kanban.  I still think it works better when you have a range of heterogeneous stories, some with real complexity requiring analysis, and optionality on scope and release.