Friday, April 17, 2009

Agile++ or just plain Agile?

Some days ago a colleague linked me a news on InfoQ about Ivar Jacobson, the father of use cases, saying that "Being Smart is an evolution of being Agile". After reading it I had the strong feeling that Ivar missed the point, calling "Agile++" what's simply Agile and calling "Agile" what's just a bad implementation of it.

For example, he says that being unsmart with people is "viewing processes and tools as more important than people", while being smart is "recognizing and understanding that software is built by people, not with processes and tools!". How can be that "viewing processes and tools as more important than people" be considered "Agile" in any way, when one of the 4 points of the agile manifesto is that "we have come to value individuals and iteractions over processes and tools".

All the other points he quoted as "being smart" are just plain Agile:
  • Delay all the decisions until the latest possible moment, in order to take advantages of the experiences done until that moment;
  • Don't build architecture up front, think about it for a while and then implement what you need (but keep some doors open for future implementations);
  • Have a cross-functional small team that can carry on all the work required for carry on the project (yes, also testing!);
  • Don't get stuck in copying a process that worked somewhere else, but use it as a first step and then continously adapt it by trying out new things.

And, if you really want to be smart, keep in mind that Agile is not a silver bullet. Agile is a tool that might or might not bring to success, depending on a lot of factors. Don't try being Agile if you don't need to!