Wednesday, July 29, 2009

What does Agile Development mean to you?

A coworker asked me the other day "What does Agile Development mean to you?". I could not articulate an answer. After a bit of thinking I am going to try and articulate what I want it to mean.

Agile Development Productivity
All the software that I have built is to solve some problem or need. Of witch all problems and needs over time change. As time goes on our software tends to break down because its original problem has changed and it no longer solves that problem anymore. I added productivity because it is the entire reason I think we decide to use some method of madness for developing software. This encompasses some techniques that are used to try make writing software better, cheeper and faster. At this stage of the game some of the techniques work some of the times other I am still experimenting with.

Agile
Agile to me means that it has a level of dynamic flexibility. Agile is a spectrum from one end where there is no development to the other end which is infinite development. So a complete agile software would be flexible for all possibilities known or unknown. Each project needs to decide where it needs to be on the agile spectrum.

Productivity
Sometimes it seems trying to apply the techniques we get lost from solving the problem to just trying to make the software more agile. Thus I think it is important to quantify everything as how it saves time.

Tools

Iterative Milestones
Most problems are complex and tend to change during the initial development stage of a project. First keeping the milestones short moral and motivation seems to stay higher because at the beginning of the day developers are not looking at a seemingly endless list of tasks. Second these iterations are based on deliverable that could be internal reviews or external. This keeps the project from going to far off into tangents and features that are not part of the requirements. This also allow the users to change the requirements as they understand more how the solution to the problem is going to work. This saves time be getting to the changes done early before lots of code (time) is wasted on building feature that are not needed or that are going to change.

Testing the Planet
Save time now and in the future. There have been many things said on how this save time and I don't need to cover them. However it is key aspect of maintaining flexibility so that future changes to the software as required by the dynamic world that all problems exist in will not break all existing features.

At the moment this is all I have come up with that I feel defines an Agile Development Productivity process. As other tools and techniques are flushed out I hope to blog about them.