It seems like there is a very personal level to what Agile Software Development means, as far as I can tell there is no consistent common understanding of what agility means. Some see it as a framework, others as a mindset.
For me it means two things.
We have agility in our planning. We expect and encourage our plan to change as we better understand what we are delivering.
We have agility in our operations. We expect and encourage our tools processes and methods to change as we discover better ways of doing things.
Agility in planning means making a plan: ‘failure to plan’ as they say is ‘planning to fail’, and that failure is probably more certain than than it was when we had an inflexible plan. There is a great deal of value in planning, we learn a lot and by setting a sense of direction we create focus.
The trick is that if we understand what we are planning and why we are planning, we can do it in the most efficient and effective way. We don’t need a lot of planning or a lot of detail, planning doesn’t need to be a massive overhead.
If we limit the granularity of our plan in relation to how far ahead we are planning then we allow for that plan to adapt as we get more information. We can get all the benefit of having a plan without the overhead and without being restricted if and when the plan needs to change.
I believe process is vital to success in business, whether we are building software or hiring or in a factory, even sales has a process. But a process must be flexible, we must be able to adapt when things change and we must be able to react to exceptions.
We mustn’t ever get to a point where we declare this is the ‘best’ way of doing something or ‘if it ain’t broke don’t fix it’ As soon as we stop looking we prove ourselves right, if we only know one way to do something it is definitely the best that we know of. Our ignorance ensures that we are right. But if getting better is more important than being blissfully ignorant then we must look for ways to improve, we need to observe and we need to experiment. We should never let entropy set in, we should always be seeking to improve.
The very best processes build in opportunities for reflection and improvement, ensuring a mindset that there is always a better way, is far healthier than one of complacency.
One of my favourite ‘processes’ comes from the Theory of Constraints, it starts with the assumption that something can be improved and the first step is to identify the one area that would most benefit from improvement, it ends with a refusal to accept inertia.
For many Agile is about the framework, or the tools, for others it is the people and their ability to self-organise. I don’t want to devalue those aspects but I see those as a means to achieve the agility in planning and process.
I’d love to hear your thoughts, what does Agile mean to you?