Take a hike

No really, take a hike.Image

It’s great exercise, you’re out in the fresh air and spending some time with nature. What you might not associate with hiking is software development but that’s one way I explain Test Driven Development (TDD) to people.

Imagine a sole developer running full speed through the forest. You would say “Look how fast that developer is going, that’s great. He/She is going get where he/she is going in no time!” There are a few issues with this.

To begin with, a big problem is that the developer isn’t sure where they are going, just a general direction. The final destination is often a moving target. Their great speed may cause them to miss their mark and have to back track, searching for the destination, trying to get to it from their current location which may now be very difficult.

Secondly,  running in the forest can be a dangerous activity. There are roots, and rocks and slippery moss and branches, and probably some wildlife. Running in this environment is not a safe thing to do. It’s not safe for the developer and it’s not safe for their customer. Sudden surprises can cause serious problems.

Finally, forests are places where you can get lost. Especially if you’re unfamiliar with your surroundings. You should bring a friend or even better, a whole team (Please read up on pair programming if you haven’t heard of it). Working in a team you can find a better way through the forest.

When I teach TDD, I talk about a different kind of development. 

Imagine two developers in the forest. One is looking at the ground, finding a good way past the current obstacle and the second is looking at a compass. The second one has just confirmed the direction they need to go and advises the first one. They move forward to the next obstacle being ready to change direction if required. They check their direction with the compass again and move forward again heading towards their mark. Their progress is steady, careful and safe. They can continue working like this for a long period of time. If anything unexpected happens, they can support each other. These are agile developers.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s