My interests recently have moved towards looking in to the Agile methodology. And I can tell you, it’s got me really excited. I’m excited because I can see these huge benefits to the quality of code at a developer level and the delivery of software at the project management level. As a developer, my path begins with TDD…
TDD, which stands for Test Driven Development, is a technique for producing Agile code. TDD forces you to think about a system from the outside-in by writing tests first, before the code. This makes you think about the outside design and behaviour of components, without so much of how you’re going to do it in detail. The discipline of driving out code design by first having a test also disciplines you in to keeping code “testable”. It is very difficult to add testing to code that has been created before testing was considered because methods are too complex, responsibility of collaborating objects is messy, and so on.
One of my biggest realisations about TDD, and even Agile as a whole, is the paradigm shift you have to make in your own mind about how you think about code design and the process of producing code. It greatly helps balance what should be important to you as a developer in your mind. TDD requires a good knowledge of patterns, good skills in refactoring, and a lot of patience to understand that to make the move to becoming a Test Driven Developer; you’re going to think about code a lot differently.
With such little space in a blog post to explain what TDD is all about, I highly suggest reading Kent Beck’s book on Test Driven Development by Example, a great 250 paged kick start to TDD.
Please check out my 8 minute introduction video to TDD over on YouTube.