I’ve recently been tasked with educating some of our development teams in “better testing”. One of the key things I keep coming across is a mindset change, and I realised that while it’s a key part of good testing, it’s also something that I found critical when stepping up to take on lead development roles too…
When I was learning to be a developer, I was trained heavily into asking “How?” How do we implement this? How does that work? How can we make this happen? How do I fix this? “How?” is a good question to ask, but once it becomes your instinctive reaction to think “How?”, you’re in trouble. “How?” is a focusing question, and almost always, you want to start by defocusing and getting the context that you’re working in. An easy way to do that is to train your first instinct to be to ask “Why?”
Why are we implementing this? Why does the product work this way? Why does that happen? Not only is instinctively asking “Why?” a basic requirement for testing, it’s also the question that will lead you to big gains in development. Because they lead to us thinking about the context for the work we’re being asked to do, and stop us carefully implementing the wrong thing, or implementing something great, but isn’t extensible in the right way, or implementing something that’s way too over-engineered for what any customer will ever want.
We all (should!) use “How?” and “Why?” but the difference between a good developer and a great one, and an important difference between a developer and a tester is that trained instinct to make “Why?” the first question to ask.