Which skill is more important: Testing, or debugging?
May 31, 2022One of these skills, if you're good at it, diminishes the need for the other other.
Suppose you’re hiring a new software engineer to join your team.
Or maybe you’re still early in your career, and you’ve been given the opportunity to study software testing techniques or software debugging techniques?
Which would you value more highly?
Of course, both are important skills. And any good developer should be able to hold their own in either category.
But I believe one of these skills is more important than the other, for the simple reason that if you’re good at it, the need for the other diminishes greatly.
Unfortunately, the one I think is more important is often overlooked, even actively ignored, and seen as a sort of “bonus” skill.
You’ve no doubt guessed by now that I think testing is more important than debugging. And specifically, I mean the writing of automated regression tests.
As someone who regularly writes lots of automated regression tests (often before writing code), I can tell you that my need to debug code has drastically decreased. There are still times when I need to pull out a debugger, but I can’t think of an instance in the last decade where I needed a debugger for code that had proper tests written.
That is to say: In my experience, debugging is useful where tests are absent. And where tests are present, debugging is either completely unnecessary, or so easy as to not warrant a second thought.
It’s funny, then, when we see job descriptions that talk about the importance of debugging, but fail to talk about any sense of quality or testing. I would be wary of joining such a company.
And when hiring, I want a developer who can do both. I want a developer who can debug, because I expect they’ll be dealing with untested code. I also want a developer who can write good automated tests, to reduce the future need for slow, costly debugging sessions.
If you value skills in debugging over skills in testing, you are looking in the wrong place.
— Dave Farley
I just threw away a bunch of tests
I had failed to complete the "refactor" part of "red/green/refactor" several weeks ago, leaving me with some redundant tests that came back to bite me.
Levels of testing
Who is responsible for unit, integration, and acceptance testing? Developers.
Reader response: The downward spiral of manual acceptance testing
Lack of unit testing drives the need for manual testing. Since testing is bunched up, development is as well.