Management

Technical debt, or the elegant solution?

Posted in Development, Management on February 1st, 2010 by Martin Schapendonk – 1 Comment

Recently I wrote an article (in Dutch) for Whitehorses that discusses technical debt. What is it, when (not) to use it and how to deal with it in environments that have lots of it.

Read it here: “Kort-door-de-bocht of elegant?

  • Share/Bookmark

Starting With Scrum: The Minimum Viable Product Backlog

Posted in Development, Management on December 18th, 2009 by Martin Schapendonk – Be the first to comment

Sprint

Are you starting with Scrum? That’s good news!

  • You have a Team: check.
  • You have a Product Owner: double check.
  • You have a Product Backlog:  …. right?

Product Backlog? Yeah, we have a list with things we could work on, and when (if?) we finish it, we’re done. But is that a Product Backlog?

The minimum viable product backlog (yes, I got inspired) is not just “all items we came up with that we could work on”. It is a filled, estimated and prioritized list of work items. There are three key points in this statement.

The backlog is filled

This means it should at least contain enough work items to fill the first sprint and include an extra work item to expand the product backlog. Most projects start out with a backlog with high level items for the entire system (that may be a dozen to a hundred or more).

The backlog is estimated

The team must have enough information to estimate the items on the backlog. The Product Owner should be able to explain the items, the team should be able to give them a relative size (using planning poker, for example).

The backlog is prioritized

The Product Owner should have a clear vision on the entire product (think big), but also on what to build first (act small). Not always easy. The book says “pick the story with the most business value” but that doesn’t make it easier for most Product Owners.

A useful technique in this respect is a story map. The story map works top-down from the high level work items. These high level work items are typically things a system MUST support in some way or another. It’s just the sophisticatedness of the solution that determines the size of a work item. When Product Owner and Team together work out the least sophisticated solution to all high level items, we have what we call the walking skeleton, or minimum viable product.

Building the walking skeleton is a very useful prioritization, because it proves the (functional and technical) feasibility of the product.

Why this post?

Too often teams “rush” into Scrum to find out after a few sprints that the product backlog requires major maintenance. This might cost more capacity than one would like, possibly affecting velocity and the sustainable pace of the team. To prevent it, make sure you have a minimum viable product backlog from the start, and make sure it remains viable throughout all development activities.

Some people like to compress these activities in a few days, other like it to extend it to an entire sprint (to get used to the rhythm). Some people like to call this preparation “sprint zero”, others argue that it might as well be the first sprint. I don’t care how you call it, just make sure you do the activities associated with a controlled start.

Image taken from yoppy’s Flickr stream under Creative Commons license.

  • Share/Bookmark

Better Is Worse Than Good Enough

Posted in Development, Management on November 18th, 2009 by Martin Schapendonk – 1 Comment

einstein“Better is worse than good enough” (or the Dutch equivalent “Beter is slechter dan goed genoeg”) has been my tagline for quite some time. I put it below emails, use it on this blog and anywhere else where it seems applicable. BTW, I don’t deserve the credits, I first heard this quote from professor emeritus Nielen (not sure if he is the authentic source either).

Many people are confused when they read it and ask me what it means. How can better be worse? Better is better, right? And certainly better than good enough, right? Wrong.

The statement reflects pragmatism. Simplicity. Or, as Einstein put it: “Any fool can make things bigger, more complex, and more violent. It takes a touch of genius -and a lot of courage- to move in the opposite direction.”

It feels counter intuitive. We always want to make things better. But think of this: a better solution might be, uhm…, better, but it has at least three major disadvantages:

  1. It takes more time to make things better – we don’t have this time
  2. It costs more money to make things better – we don’t have the money
  3. It has a higher probability on errors – which cost time and money to fix

In software development, we tend to “gold plate” solutions and include all kinds of bells and whistles that will “certainly blow away our customer”. Will this customer really be delighted by those bells and whistles if it means that his project is over budget and too late?

The trick is to hit the sweet spot between “too little” and “too much”. The only way to know that spot is to get frequent feedback -early and often- from your customer. This is one of the core principles of agile software development: close collaboration between development and customers. Scrum implements this principle with the Product Owner role, collaborating closely with the team, delivering software in short Sprints, ending with a Sprint Review of working software.

Now you know what I mean with “better is worse than good enough”. Try it for yourself!

Photo taken from wallyg under Creative Commons license.

  • Share/Bookmark