Jeff Atwood’s blog has some excellent points about agile software development, based on a cool article by Roger Sessions from MSDN.
Sessions notes the concept of the iconoclastic Col. John Boyd that speed of iteration beats quality of iteration.
Boyd decided that the primary determinant to winning dogfights was not observing, orienting, planning, or acting better. The primary determinant to winning dogfights was observing, orienting, planning, and acting faster. In other words, how quickly one could iterate. Speed of iteration, Boyd suggested, beats quality of iteration.
Jeff Atwood riffs further on this idea:
You’ll find this same theme echoed throughout every discipline of modern software engineering:
Unit tests should be small and fast, so you can run them with every build.
Usability tests work best if you make small changes every two weeks and quickly discard what isn’t working.
Most agile approaches recommend iterations no longer than 4 weeks.
Software testing is about failing early and often.
Functional specifications are best when they’re concise and evolving.
When in doubt, iterate faster.