A couple of years ago I was asked to present a talk at a testing conference.
I did a whole presentation that I will post up to the blog in a week or two. The one part of the presentation that seemed to grab everyone’s attention was a story I told about the Developer / Testing Jigsaw.
I think the reason it was so widely accepted was because its given in the form of a story, and we all like a story right?
So if your all sitting comfortably then I’ll begin.
There was once a small boy and his father sitting down together one Sunday afternoon. The father said to his son I have a small surprise for you. I’ve made you a little jigsaw puzzle, its of a tree with grass and sky as the background. Wow, said the little boy as his face lit up, can we do the jigsaw now please?.
Of course said the dad.
So the dad tipped out all of the pieces onto the mat and begun attempting to put the jigsaw together. The son asked his dad if he could help by looking at the picture on the box and advising his father on where he thought the pieces were meant to go.
However his father said “no need – I created this puzzle so I know exactly how it should go together”.
The father struggled on for another 3 hours and wasn’t really any closer to getting the puzzle finished. He then got in a mood and said that he gives up and some pieces must have got lost.
The son then took over and compared each piece to the box making sure that he was putting the pieces where they were meant to go. He did the smart thing first by putting all of the corner pieces where he thought they should go. He looked at the box once more and thought to himself that blue is the sky, the green is the grass and the brown is the tree. So he separated the coloured pieces in 3 piles
He eventually finished the puzzle in about 45 minutes.
There is an obvious key to what is happening above in this story.
The Son is the Tester
The box is the Functionality Specification Document.
The Dad is the Developer.
The jigsaw is the piece of software that has been developed
Yes developers can test code, in fact I encourage it (peer reviews of other developers code and Unit tests), however they should not be the sole testers of code, especially if the code is written by them. Going down that route is a recipe for disaster.
The son who had never seen the jigsaw before managed to finish it in a faster time than his father and also in a more methodical manner.
Testing is a mindset. It’s an art that I, and many others spend every day attempting to perfect. Developers spend most of their day writing code, (also testing their code – Unit tests etc.)
I’m all for test driven development, however lets not forget that with specialisation comes speed and efficiency savings.