5 June 2009

One of the most striking things about the Manifesto for Agile Software Development is the format of its values "we favor x over y". I don't remember who came up with that idea, or how it arose. It probably just bubbled up as we tossed around ideas. But it's distinctive format has led a few people to try using that format again.

If you fancy trying this form, there's a couple of things to remember about it, things that people don't always realize. The most important of these is that the unfavored values are valuable too. A phrase like "solving world hunger over slavery" doesn't carry much power because hardly anyone is openly in favor of slavery. The format works when both left and right sides of the "over" are valuable things that most people want. What the comparative values then say is that we want both things, but if push comes to shove we prefer the one on the left. The harder choice there is between right and left, the better the value statement.

So a good mental test is to imagine someone reversing each value statement, indeed reversing all that you have in the set. There should be people that you can imagine proudly and reasonably supporting that opposite position. In our case we saw much of the industry heading towards high-ceremony processes - reversing the values we felt fairly summed up the values of that community. I can easily imagine writing an article extolling why the reverse set of values are a coherent world-view for software development by putting myself into that mind-set.

The right-hand values may be the current state of the world you want to change, or they may be a future state desired by another community. Either way the comparative values are there to highlight the contrast between one and the other.

Another point about the manifesto that I like is its brevity: four comparative values and twelve principles. It's hard to get that kind of brevity, but the briefer you make it - the punchier it is. I'm sure the manifesto would have not had the impact it did if it had forty-six value statements.

I'm one of those who has used this format since. Done well it can really highlight what makes a particular philosophy different to another. Here is another sample, a set of values I wrote to describe how I saw Thoughtworks as being different from other software organizations.

  • Leveraging bright people over Making the most of moderate people
  • Flexible career paths over Well-defined roles
  • Delivering business value over Leading edge research
  • Learning new technologies over Mastering established technologies
  • Solving difficult problems over Increasing market share
  • Learning from mistakes over Avoidance of taking risks
  • Delivery to the client over Quarterly results

We've since replaced this list with another set of principles which try to capture how we want to be. But we did use the comparative values for a while to try to explain both to ourselves and others what made our aspirations different.

As such I think that not just is this format a good way to sum up a world view, when done well it also leads to sharp discussions about what people really want to care about. This usefulness comes directly from the fact that you are making hard choices between things that are all desirable.