Wednesday, March 05, 2008

Deconstructing the Agile Manifesto

Does the phrase “Individuals and Interactions over Process and Tools” conflict with the core values of software development? Is there a better way to convey the original intent of this phrase?

Let’s step back for a moment and take a look at some fundamentals that supersede the Agile Manifesto. First of all, why are we here? It is easy to forget because it is so basic. We are here because we are in the business of creating software for people. And software is a tool . It is a tool which automates a process that would otherwise be done manually by people. There is no actual need for software at all. Anything that software does can be done manually by people. But our core belief is that processes which can be automated should be automated and that there is enough value there that people should pay for it. Otherwise, we would all be doing something else.

Stepping back again, consider your thumbs. From Wikipedia: “The opposable thumb has helped the human species develop more accurate fine motor skills. It is also thought to have directly led to the development of tools, not just in humans or their evolutionary ancestors, but other primates as well.” We are tool users by nature and we should be proud of it. Absolutely, people are important. And that is the basis of our profession: to free people of drudgery so that they may use more of their time for creative pursuits.

That said, the process and tools that we the cobblers of software use ourselves should undergo the same scrutiny that is placed on the software that we create both for ourselves and for the rest of the world (those that are not in the business of developing software). And there is a word for that, it is called “usability.” The idea behind usability is that software is used by people and thus the user model should always trump the developer’s model or the implementation model.

Talking about usability for software development tools is fairly straightforward and well understood, but if those tools are for automating a process that would otherwise be done manually, what is that process? It is the process of software development itself. I believe that one of the advantages of Agile over traditional development is that the processes that are used to implement Agile have much better usability than traditional processes because they are more people oriented.

Thus, comparing “Individuals and Interactions” with “Process and Tools” is the wrong emphasis. It doesn’t compile. It is the wrong conversation to be having. Instead, we should be talking about the usability of the process and tools where that process includes things like self-organizing teams and stand up meetings and the tools include things like retrospectives and stopping the line.