Skip to content

Joe Arnold's Blog

Founder / CEO SwiftStack

After a sprint review meeting today I asked a few engineers, “From 0-10 how stable is the product?”

“two”
“three”
<nods>

The team has been working on the product for 11 sprints over six months. And I’ve been blown away by the amount of functionality the team has been able to add in such a short time. But the product hasn’t settled into a groove. There are a lot of features that almost work.

A couple of things are effecting the team:

  • Skewed feeling of progress
  • Isolated workIt’s time to re-define progress!


    At the end of the iteration it’s okay if the feature isn’t gold-plated. What you want is a solid bit of functionality that stands on its own. The product should never behave unexpectedly. Never, ever, ever. It should always work in every environment. Upgrading from the old product to the new one should work at every stage of development – always. That’s not saying that this situation won’t happen. It’s just that if the system does fail in this way it should be a big deal. And the system should be fixed immediately.

    I’m not going to illuminate anything by saying that the more complex an environment is, the longer it takes to get work done. If you have to multi-task 10 things, you’re going to get less done than if you could focus on one thing. Software systems are the same way.

    Here is where a skewed feeling of progress can get in the way. It may feel like more stuff is getting done. But now the team has to multi-task 10 partly finished features. See what’s happening?

    How does isolated work fit into all this? Teams can get into the same multi-tasking problems that individuals can. If a team is asked to take on too many projects at the same time, they’ll thrash around. Some teams think they’ll go faster if each individual is working on their own features. Ya, there is a lot of learning that needs to take place for folks to switch between different areas of the code. But there is only a certain amount of collective knowledge that the group can sustain at any given time without losing focus. Teams need to figure out how to get a lot of folks working on the same problem. It’s a lot of work, but the payoff is huge.

    Isolated work forces a lot of features to be in progress at the same time. This leave a lot of features partially done at the end of a iteration.

    Because features are partially done, people get used to a broken system.

  • Advertisements

    Tags: , , ,

    %d bloggers like this: