Running in Circles

Fun post from Ryan Singer:

Agile became synonymous with speed. Everybody wants more, faster. And one thing most teams aren’t doing fast enough is shipping. So cycles became “sprints” and the metric of success, “velocity.”
But speed isn’t the problem. And cycles alone don’t help you ship. The problems are doing the wrong things, building to specs, and getting distracted.
Claiming there’s a True Agile™ somewhere in the past or future doesn’t help either. When your team struggles with shipping, you need practical steps you can apply here and now. Not just an ideal.
Cycles are good. We work in cycles at Basecamp. But in addition to cycles you need three other practices to ship on time and in good health.

I agree with a lot of this. So much of the conversation around agile is about efficiency and speed and being lean. Those things are fine, but the biggest problems in product development are more about misunderstanding the problem, jumping to a solution, or keeping people creative and motivated.

Singer's three principles:

Deliberate resource allocation

  • Allocating people to a project means dedicating people to a project. One of the hardest things in product development is keeping focused. Only management can protect their teams' attention.

Mutable requirements

  • One of the most obvious causes of a demotivated team is a lack of autonomy. Giving teams a list of requirements will kill all energy and worse: likely lead to building something that doesn't meet the need.

Uphill strategies

  • Product development is not a linear process - it's not moving a pile of stones from A to B, where you know how many stones you have to start with - it is about problem solving.
  • Singer's analogy is that problem solving is like traveling over a hill. There is a phase at the beginning where you don't know what you're doing. It's hard, but finally you reach through the clouds to the top of the hill and realise you can see the path all the way down the other side.
  • This means that there is significant cost in the early stages of a project where you don't know what you're doing. It's important to acknowledge that and giving teams time to reach the top of the hill.