WRITTEN BY DAVE NICOLETTE
Douglas Adams’ The Hitchhiker’s Guide to the Galaxy used to be required reading for software developers. Ah, the good old days, when developers shared a sort of cultural literacy! A strange sort, maybe, but a sort nonetheless. Any group of developers could recite quotes from the story on request, or in response to work-related situations that would have engendered panic, if not for the soothing words on the cover of the Guide: “Don’t panic.” Quotes like this one:
“The way [the Nutri-Matic machine] functioned was very interesting. When the Drink button was pressed it made an instant but highly detailed examination of the subject’s taste buds, a spectroscopic analysis of the subject’s metabolism and then sent tiny experimental signals down the neural pathways to the taste centers of the subject’s brain to see what was likely to go down well. However, no one knew quite why it did this because it invariably delivered a cupful of liquid that was almost, but not quite, entirely unlike tea.”
Younger software development professionals have little awareness of the classic science fiction and comedic material that shaped the thinking of earlier generations of practitioners. Few are able to quote Monty Python dialog from memory, or succinctly communicate the salient characteristics of a problem simply by naming a Twilight Zone episode.
It will come as no surprise this can sometimes lead to problems in the application of robust software development techniques.
For example, I’ve noticed many software developers claim to be advocates of test-driven development (TDD) and insist they use TDD in their own work, and yet the way they build code is almost, but not quite, entirely unlike TDD.
WHAT’S TDD ANYWAY?If you ask 10 people what TDD means, you might get 30 different answers. Most of the answers will be internally consistent and some of them will be practical. A few may even resemble TDD to an extent.
FWIW I’ll share what I think TDD means. YMMV. But first let me talk about this other thing for a minute.