All too often I meet people who claim they are agile developers. After a short discussion I realize they are not using any software development methodologies and are instead cowboy coding. Agile development is not a plan free environment. In fact, being an agile developer requires more developer discipline than even the dreaded waterfall.

Agile development requires the proper tools. Without tools to help with automated testing, refactoring, source control, etc… agile development would be dead in the water. I believe it also requires programming language support. You could try to be an agile developer writing assembly code, but I don’t think you would get very far. Java really set the ball rolling for languages that supported the agile way of developing. The trend has continued with scripting languages like Python and Ruby (and it’s associated frameworks like Rails).

The developer must also understand how to properly use all of these tools. Back when K&R released their book on the C programming language you had all you needed to know to write software in a nice consise book. Nowadays you need to know a multitude of languages frameworks, environments, patterns, and so on in order to create useful software.

Agile development, like other iterative development methodologies, requires proper planning. This is where many developers get tripped up. Agile does not mean jump in and code. Developers must plan short complete blocks (incidentally very similar to short runs of the waterfall) of gathering requirements, designing, developing, testing, and releasing that at some point deliver a complete product with all of the requested features. Determining the features that make the cut each iteration and maintaining the overall project vision can be challenging.

If you think you are currently an agile developer (and no, just using SCRUM does not make one agile), take a hard look at your process, or lack thereof, and verify that you are not just some cowboy in disguise.