Thursday, November 10, 2005

You can't do the right thing, with the wrong people

If there is one thing I have proven to myself in recent years, is that there is no amount of process or big design up front, no philosophy, or no checks and balances you can put in place, to get good quality work out of sub-par developers and designers. No matter how much you try, cowboys who are after a quick buck, or ego fix, will not tow the line when it comes to playing by the rules. If someone does not want to deliver the best possible software given the circumstances, there is no way you can make them.

Conversely, if they do want to deliver the best possible software, you don't need too much process to make it happen. This is why I like Agile. But it could be a double edged sword. My current team certainly make a great Agile team. They all want to build great software and great systems, so, decision making on design, defects, change control and project scope is usually (after some brief discussions at best) democratic and unanimous. We all want to build great systems within the constraints. I don't need to spell out requirements to the "nth" degree, or get sign off on over complicated documentation. The rule that governs everything is quality., (i.e. what is best for our users?)

In the past, I've worked in environments where there were many many different agendas at work ("providing quality solutions" ranking all too low). As I've mentioned it didn't even matter when there were detailed documents to be signed off. The cowboys of the IT industry will wriggle out of, avoid or just plain ignore any document short of a legal contract or a cheque, making use cases, test cases etc, redundant.

To people like this though, Agile could be seen as a salvation. "Hey, this is how we work now! Lots of short iteration, many builds, get customer feedback!" Well, when that customer feedback is always negative, and it takes 2 years for any sort of convergence on a solution to emerge, I don't think you're Agile.

So I continue on the journey towards Agile, content that my team and I are legitimately attempting to do the right thing, the right way. I know that, because it is a characteristic of any team member I employ. I take satisfaction in seeing the quality solutions we build. I gain confidence every time we identify or acknowledge a weakness in our current activities or identify an opportunity for improvement, because this shows we are still "trying to do the right thing" and egos, backside covering etc are not occurring. When I hear someone say , "we're their", "we do this" "its all good" alarm bells ring. We're are always, "trying to achieve these things" and there is always room for improvement. So the true approach to becoming Agile, is in fact, an Agile activity in itself. Iterations, assess, improve, go again...