Wednesday, March 14, 2007

Agile agile agile all the way

Agile works. It is just common sense software development process.

Consider all the advantages

- - Focus on priorities (not on the whole application). And that is a big step ahead for the developers since they swarm on one thing to get it done before they turn their attention to something else. The clients get to choose what needs to be implemented first.
-- Team work - Extreme Programming (Pair Programming) - An effective way to learn and teach new stuff, ideas and what not. It is great to see what two minds can uncover that a single mind cannot. It is also an effective quality assurance tool.
-- Earned Value – Developing what is needed and important. This enables elimination of not so useful aspects earlier in the development process. Also, Clients get to see the working product in stages and much earlier.
- Continuous Improvement - retrospective of what worked, what did not and what could be improved - This provides every team member a chance to experiment, try out different things. Since the cycle time is relatively small, the success and failure of experiments can quickly be re-adjusted because of the nature of the agile process
- Very flexible and adaptable. We don’t have to wait until the end of the project to readjust.
- Progress Report - Measures progress daily and brings issues or impediments to management attention much earlier in the process.
There is so much more to list about Agile. Agile is one of the best process out there currently that is more aligned with the "Business Value" than any other software development process.

There are still some limitations of the agile process - Agile projects in most organizations are influenced by Non-Agile elements. When external factors come into play, it skews the agility of the process to a certain extent. If an Agile project has a dependency on a project that is Non-Agile, then its priorities get re-arranged to accommodate the non-agile element. Project dates are preset into a definite number of sprints to do a pre-determined scope of work. Though these limitations are worked around, it definitely does impact the Agility of the process. Being Agile and working on overcoming these limitations is what this process is all about. Agile is not a solution to all the IT development process shortcomings. But it definitely bridges the gap between IT and business value more than any other process.

Overall, Agile is a big step towards more efficient development, still has a long way from being "mature”. Or will it be? Agile is learn-and-adapt process anyways.