Friday, January 31, 2014

Thoughts on Agile Development

I'm here talking about my thoughts on Agile Software Development, you can find the wikipedia article on the topic here.

The problem with developing a large program for a customer is that often times your needs can change from day to day. The customer may think he wants something  but a week later he realizes he wants a different but similar feature. If you have already spent a month modeling the infrastructure of the program you're writing to conform to the original request, this change of heart may rustle your jimmies, to say the least. But how can you avoid having a design for a project? Obviously when you're working on something so large, starting the design before you just jump into code can be very helpful. But how do you balance between design and changing needs?

Agile software development tries to walk the line between these two seemingly conflicting ideas. Using agile development means you get to interact with the customer more, write more of your program and less documentation, and be able to respond to changing customer needs with poise and not frustration. These are all good qualities, but planning certainly has good features as well. When you're working towards an end goal, you know exactly how you need to write things. Though you may not be as adaptive to change, you definitely will be more efficient with your end goal in mind.

Agile receives its fair share of criticism as well. It is written from a management standpoint, meaning some programmers will resent it, seeing it as unnecessary bureaucratic busy work. And this sometimes may be true. I, personally, think agile software development can be very useful given the correct context. Just like all things, I think it has its place, though this place isn't necessarily universal. I think I would have to work more with agile software development before I committed to too much of a judgment, but I will say that I have a healthy respect for agile software development, as I think it is always important to keep change in mind when working on any long term project, and it is especially important with software development when requirements can so easily change from day to day.

No comments:

Post a Comment