Agile is about delivering software as soon as possible, and then regularly and frequently.
Agile teams deliver software frequently. Anywhere from weekly to monthly. And they do this from the beginning of a project. This is very scary to people who have been taught the waterfall method. But what constantly amazes me is how much better an evolutionary design is than one that had lots and lots of thought and time spent on it at the beginning.
By evolutionary design I mean that you only design enough to do your current task. So developers are constantly doing design. Every day they will add to the design.
This sounds very ineffecient – it sounds like a lot of rework will be needed as you add to your design. This is true, however it is a benefit not a drawback. It is the rework which makes the evolutionary design so strong. The parts of the software which need to be flexible will be changed the most, and consequently a flexible design will emerge, whereas the parts of the software which don’t need to be flexible won’t be changed, and you won’t invest time in making them flexible.
But if you are not used to writing clean, malleable code, complete with hundreds of automated tests, then the thought of changing it constantly throughout development is scary. Therefore evolutionary design is scary. A lot of discipline and pride in your work is required for evolutionary design to work, but when it works well it is absolutely brilliant.
Agile is about enjoying work. The biggest impact on prodcutivity is how motivated people are to achieve the bussiness goals. With software managers are lucky, writing software is fun. Programmers by and large chose this career because they enjoy writing software.
So Agile methodologies concentrate on motivating everyone in the team through empowerment and increased communication.
Agile is about using the knowledge, ideas, and inspiration of everyone in the company. To me it’s about removing barriers between job roles, and expecting everyone to have great ideas and to contribute them to the team, and ulitmately the company. If you ‘just do as you’re told’ then your company is missing out on so much of your potential.
Well, Agile is very hard to describe in a thousand words, but I hope this has given you a flavour for it. It is radically different from the waterfall method.
The aim of Agile is to try and make your company more profitable. The way it does this is by emphaising customer satisfaction and employee satisfaction. If Agile can make both your customers and your employees happier, can you afford to ignore it?