Wednesday, June 29, 2011

Scrum Cadence

It’s unfortunate that the the Scrum product iteration increment is called a Sprint, implying that each increment is delivered by the team in a mad rush, full throttle.  The image I have in my head is a 100 yard dash, everyone running as fast as they can to reach the finish line.  Developing software is more like running a marathon than it is a back-to-back series of 100 yard dashes.  In order to successfully complete a marathon you have to find a one mile pace you are comfortable running at, and keep running at that speed for 26 miles.  Sprinting hard for the first several miles often means you are walking (or even crawling) the last mile, if you even make it that far.
Me, still running at mile 26, in the 1998 Boston Marathon
One of the challenges many new Scrum teams face is developing a sustainable pace, sometimes called cadence, over multiple sprints over the course of a project.    

New to Scrum, teams often struggle to find a sustainable cadence for delivering potentially shippable product increments.  What I’ve observed happens is this:  Early in a new Scrum project the teams is (I hope) excited to adopt a new way of working.  They understand the Scrum principles and the time-boxed Sprint iteration, and more importantly, they feel a strong commitment to succeed on their newly committed Sprint deliverables within the first few Sprints. After all, at the end of the Sprint they will be proudly demonstrating their work to their stakeholders, which usually includes there boss and department head.  However, since everyone is new to this different way of working, it is inevitable that certain work, usually that requiring specialized skills such as QA and documentation writing skills, ends up being delivered late in the game.  Undeterred, the team works extra hours, heroically delivering the Sprint goals.  This extra effort delivers a much needed early success, builds organization confidence, and can kick-start viral adoption.  However, this type heroic effort doesn’t scale - after 2 or 3 Sprints the team starts feeling burned out and may fail to deliver Sprint-committed work.

In an ideal situation, the Team inspects and adapts, and, over the course of several sprints, build a sustainable cadence.  However, many teams will continue to struggle, and can fall back to the “old way of doing things”.

While every team, project and environment is different, here are some points to consider to help get to a sustainable cadence:

  • Work, as a full team, on only one story at a time.  Make sure that story is DONE before starting the next story.  In other words, implement stories sequentially.
  • Avoid picking stories targeted for one individual due to their specialized skills.  Make sure the whole team is involved in delivering each story.
  • Develop an “in it together” feeling among the team.  If you aren’t feeling this, your team isn’t operating as a true TEAM.  
  • Commit to less stories to make sure your Sprint backlog really is DONE at the end of a Sprint.
  • Become more of a generalist. Scrum certainly favors “jack of all trades” type of developers.  Coming from a Waterfall environment, where there are separate groups for QA and documentation, work can fall to those with that domain specialization.  As a team member, don’t look at work as “that person’s”, view it as a team deliverable. Learn a new skill to help a team member (and thus the Team) out, be it coding, QA or documentation.
  • Be honest and innovative during your Sprint Retrospectives.  It’s your chance to change how you work together to deliver software.
  • Get additional training or coaching.  Read Scrum blogs and ask questions on Agile forums.  Likely you are not the first team to run into the issues you are experiencing.
  • If you are manager reading this, realize that team cadence, a predictable velocity, is key to delivering on corporate objectives.  Work hard to remove team obstacles and allow them to focus and succeed.  This is the true value of a manager in an Agile world.
Developing a sustainable cadence is one of the keys to the success of the Scrum Team and project effort.  Remember, running a marathon full throttle is unsustainable, unless, of course, you are an ultra-elite runner.  I know I’m not one.

Wednesday, June 8, 2011

Inspect and Adapt


“SCRUM assumes that the systems development process is an unpredictable, complicated process that can only be roughly described as an overall progression.”
-Ken Schwaber, Scrum Development Process, 1995

One of the things that I like about Scrum is that its creators defined it knowing that no development process is perfect.  The Scrum Guide does not tell us how to build software, rather, it openly acknowledges that building software is complicated and unpredictable.  This may seem odd, with Scrum being thought of as a development process (it’s not).  In a recent post to the Yahoo! Scrum Development group, Ken Schwaber stated that “we purposefully constructed Scrum with a lot of holes in which a person or team or organization has to continually figure out the best thing to do.

So how does a Scrum team “continually figure out” how to do the best thing?   To facilitate iterative and ongoing improvement, Scrum specifies that each Scrum Team hold a Sprint Retrospectives. Further, these retrospectives must happen frequently, occurring immediately following each Sprint Review.  

It is often overlooked when starting out with Scrum, but I believe the Sprint Retrospective is the most important meetings a Scrum team participates in.  While the Sprint Review is a valuable “public” meeting where working product is demonstrated to stakeholders and customers, the Sprint Retrospective is a “private” team meeting, allowing the team to safely discuss what’s working and want could be improved with regards to how they are delivering their work.  In the Sprint Retrospective, anything that relates to how the team operates can be discussed and possibly tuned or improved.  Up for debate could be how the team communicates, technology issues, done-ness criteria, or even choice of tools, as was recently discussed for one of our new Scrum teams in my organization (They reverted back to whiteboard task charts and spreadsheet burndown charts!).

What this ultimately means is that each Scrum team is evaluating, refining, and improving how they work together and build software every 2 to 4 weeks.  Almost continuously improving throughout the life of the project!  Over a 12 month project there can be upwards of 24 opportunities to “do things better” and improve how the software is built and delivered.   Compare that to our our Waterfall-like development model where we generally conduct formal retrospectives twice, once after Beta and once after we release.   In our current model, we, at best, have one predefined opportunity to improve our practices during the release, at Beta when there is usually no more than 3-4 months of (QA and bug fixing time) time remaining before the software is released.  Process improvement is clearly not highly integrated into our Waterfall process.

With frequent inspection and adaptation we can become more efficient at building and delivering high quality software that meets or even exceeds customer expectation.  So my advice is: take full advantage of your Sprint Retrospectives.   As a Scrum team member, it’s your (frequent!) opportunity to make a difference...

kaizen  (kaɪˈzɛn) - n  a philosophy of continuous improvement 
of working practices that underlies total quality management 
and just-in-time business techniques [Dictionary.com]