I spent Monday and Tuesday at Agila Sverige (Agile Sweden). A lightweight and agile event, as befits the topic, somewhere in the continuum between the ALT.NET unconferences and “real” conferences. There was a small attendance fee, and meals were provided, and there were printed programmes, but the structure was like an unconference – lots of scheduled lightning talks in the mornings, and Open Space sessions in afternoons.
As with the ALT.NET events, I came home not so much with facts or techniques or tips, but with feelings of inspiration and energy. While it would have been nice to find answers, it is also nice to at least know that others are struggling with the same questions (such as fitting testing into short iterations, or adjusting Agile & Scrum for use in a very small team). The term mutual admiration society may be derogatory, but sometimes a bit of mutual admiration is what we need to energize us.
The most interesting discussion was a philosophical-political one. I cannot recall the original label for the session, but one of the topics we ended up discussing was the parallels between some dynamics of the Agile movement and “real-world” revolutionary movements. Liberation movements themselves are often very illiberal, even autocratic, and it can be hard to shift from leading a liberation movement to leading a liberated population. Very different qualities and behaviours are required.
The Agile movement is a kind of liberation movement, aiming to free developer teams from the burden of excessive management, procedure, planning and documentation. But when the message trickles through to the masses, the original leaders think the message has been distorted, lament the degradation that their lofty ideas have undergone, and start talking about the need to restart the process under a new name and a new manifesto. And the masses get upset that their leaders seem to be abandoning them.
The Agile movement is a principles-based movement. It’s not so much a method as a philosophy. (Aren’t real-world revolutions the same?) And for the leaders of the movement, principles suffice. But when the idea spreads (or when you try to spread the idea) from innovators and early adopters on to the early majority, it starts to seem that principles are no longer enough. The target audience now includes people who do not think much about principles – because if they did, they would be leaders or early adopters themselves. So processes and methods and rules start to agglomerate. “If you’re not doing TDD then you’re not doing Agile,” and so on. So there is an inherent conflict between the foundation of Agile software development (trusting people), and the desire to spread it to the bulk of the developer population (whom you don’t trust to do the right thing on their own).
(This, of course, raises a new question: should we even try? Would it be desirable to have the majority of projects run in an Agile manner? Or, as another speaker put it, are we running out of Agile developers? Can any developer work in an Agile manner, or does it take a certain kind of developer, of which there is a finite number?)
The issue of leaders abandoning a movement once it reaches some level of maturity is also an interesting one. (Lean development is one of the new new things that people orient towards when they get enough of Agile.) There are at least two forces conspiring to make it so. Firstly, thought leaders are rebels and/or innovators. In order to feel happy they need to feel that what they’re doing is new and fresh, and not mainstream. When their idea becomes mainstream, they must find something even newer. Secondly, the leaders will naturally continue to develop and refine their own ideas. They won’t stop just to wait for the rest of us to catch up. So by the time we get to Agile, the people who started Agile will again be ahead of us.