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.

5 comments:

James Morgan said...

Very well said!
"Focus on priorities (not on the whole application)"
--I definitely agree that this is a big step forward for software development, and a big point in favor for the agile development process. Swarming on priority functionality ensures that the most important parts of the application are built first, and also gives the entire team a measure of success as each piece is built, tested, and reviewed by the clients.
"Team work - Extreme Programming (Pair Programming"
-- The two best ways to learn are to teach and to do. Both of these are done in spades with pair programming. I actually find it rather humorous that most organizations push the idea of teamwork so hard but can't understand why Extreme Programming would work. If teams are best suited to build applications, why not smaller teams to build smaller portions of said app? And your comment about quality assurance is especially poignant. The cheapest way to fix a problem is to do so during implementation, but code inspections can be troublesome and tedious for all parties involved. An extra set of eyes as the software is written provides a step-by-step verification that code is error free and follows good programming practices.
"Earned Value – Developing what is needed and important"
--Playful widgets and flashy functionality can be fun to implement and interesting to use, but if they add no real business value they only become a liability. The benefit of Agile is that if they do have business value more important than what is currently being worked on then clients should have no problem re-prioritizing tasks to ensure the most valuable portions of the application are built first. This can get extremely difficult in a chance-control driven waterfall process. And if a client is unwilling to risk the delivery of other pieces of functionality? Maybe the new addition isn't quite so necessary at this stage in time.
"Continuous Improvement"
--It takes time to measure the effect of changes and the implementation of new ideas with the waterfall process. Agile shines in this regard-a failure is mitigated by the fact that it should be caught quickly during a retrospective, and a success can be identified and implemented with relative ease for future sprints.

Anonymous said...

Hey Sri,
Good Stuff..Keep them coming.

Vidya

Anonymous said...

I am currently working in an Agile project. Agility in our project meant - Get the work done in three weeks. There was no focus on priorities. We had to rewrite estimates since they were considered too high and everthing was important. It took many iterations to get to where we are now - focusing on priorties and code to what is just needed etc...

Anonymous said...

Great Site

Valuable information, keep it coming

Unknown said...

Heya¡­my very first comment on your site. ,I have been reading your blog for a while and thought I would completely pop in and drop a friendly note. . It is great stuff indeed. I also wanted to ask..is there a way to subscribe to your site via email?

Scrum Process