Software Development/Software Development Methodology

I'll start with some general principles that direct my thinking about software development in general. These are the ideas behind agile development practices. Agile software development is a paradigm that was created to answer waterfall development, the approach of planning all the features of a piece of software in advance, an effort that often ends up wasted because the customer's needs change in the middle of the project, so the software has to be redesigned.

So agile development was intended to prevent overplanning. But using any development methodology will help prevent the opposite problem, which is a complete lack of structure and discipline. This results in a code organization scheme called a big ball of mud. I don't think my programs were complete mud, but the fact that I was the only one seeing or using my code let me get by with a lot of slacking. Slacking does keep you from working too hard, but it fails to prevent other kinds of problems. Agile software development seems like a good middle ground.

Agile development encompasses a lot of principles and practices, and it has a lot of varieties, but for me at this point, its most important practices are incremental development, test-driven development, and refactoring.


 * ../Iterative and Incremental Development/
 * ../Test-First Programming/
 * ../Refactoring/