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!


ivarjacobson said...

It is really hard to comment on misunderstandings. At the same time it is easy to misunderstand if you just have access to slides -- the only thing I believe you had.

Of course it is not agile or smart to view processes and tools as more important than people. That is the whole point of the two slides you are referring to.

Regarding your other comments, they don't directly refer to my talk. I have more to say than what you suggests.

One key point of my talk is that being agile in itself doesn't guarantee that you do the right things. For instance you can do iterative development without finding "good" iterations. Smart is to have the knowledge and experience to do the right things.

Agile is now the latest fashion. However, the meaning of Agile is sliding compared to what it stood for five years ago. Nowadays agile basically stands for "everything good in software development". Thus, of course we are all agile.

Please, read my blog New stuff will be published this weekend.

Alexia Marthoon said...

Agile is a general approach used for software development, agile emphasizes on teamwork, frequent deliveries of working software, customer collaboration, and time boxing events and allowing the ability to respond to change quickly.If you want to know the difference between Scrumstudy, Scrum Alliance and Scrum org – please visit this blogscrum training blogspot