Wednesday, November 12, 2008

What's Agile trying to tell me?

I've read books on Agile, and I've received Immersion Training from Object Mentor Inc., and some of that training directly from Uncle Bob Martin himself. And I see one core idea behind Agile that exists in all aspects of Agile development, and I thought I'd write about it here.

Most companies/developers/people seem to have a tough time adopting Agile as the way to go. Or some adopt parts of 'Agile' and morph it into a bastardized version of their existing software development process. I won't go into the details of Agile, but instead look at it holistically.

So what is Agile trying to tell me?

It wants everyone to work together to reach the goal. The problem with most projects is they treat software development as a "service". Clients that need some software built for them think "i know what i want. now if i could only find someone to build it for me." Then they express their wants/needs in some way that they provide to the developers.

Ummm ... but then what?

Clients seem to be able to just wipe their hands, and wait for the development machine to produce what they asked for on the other side. And I can understand this. Services work that way: you ask for something, and then the service provides the promised result.

Software development is NOT a service!

It's a constant brainstorming session between a client and the builder. If the client didn't need a solution for a very specific problem, then they'd probably just buy a software product as a solution. But instead, they need someone to tailor a solution to fit their needs. Agile stresses the importance of runnable/demonstrable software over documents and agreements. Documents and words can be misinterpreted, but functional software can be 'seen' by both the client and the builder. At this point, they are in sync. The client can ask for something and the builder can build it. And after each iteration, the builder and the client can both come together toward a common vision of the solution. Similar to tailoring a very expensive suit: you wouldn't just take some measurements and send it off to be altered. You'd want to be there with the tailor, making sure every adjustment was just right for you.

Final Thought: There shouldn't be clients requesting work from builders, but instead the clients requesting to work with builders. This is how I hope to work someday. Working closely with clients so that I can understand what they want and need. So that I can help them understand what they want. So that I can tailor the solutions and products that they need.

Whoohooo, first midnight blog post.

No comments: