October 3, 2009

Agile Software Development

There are many different software development methodologies that are practiced today. One of the popular choices today is Agile Software Development. When I do software development I generally use agile techniques, but I wouldn't consider myself an agile purist. Where I work, we use scrum meetings, and very quick development cycles, and a few other agile ideas. But we don't use every agile technique.

I assume most people and businesses do this, but I try to be familiar with many different methodologies and practices as possible. I try to use the ideas and techniques that best fit the situation at hand. If I'm doing a large scale project, I try to do more work gathering requirements upfront, but if the project is much smaller I may just sit down with the project owner for a quick discussion and start designing and implementing from that.

I know some people are much more religious about this, and the idea of mixing and matching between different methodologies would be heresy, but it really does work. There are times that it is good to be strict and keep with consistent policies and procedures, but there seem to be many more occasions where flexibility is king. Within certain constraints and with a good understanding of software development, it can be very advantageous to be flexible. In days with tight schedules, limited resources, and never ending requirements we must do what we can to thrive and create great software.

1 comment:

Mike said...

I think an important point though is to understand the WHY of any particular practice before accepting or rejecting it. The problem with picking from here and there is that it often results in "all of the overhead and none of the benefit" of the source material. Also often many practices work together and the only way the full benefit can be extracted is through the combination of practices.

Now this isn't always true, and each shop is different. One of the most important agile practices is the idea of a "retrospective" of short feedback loop. This mechanism helps you to know what you should keep, change and drop in terms of specific practices... unless of course you're thinking you should drop any form of retrospective ;)