Skip navigation.

"Breaking" code

"Breaking" code

Jason Gorman is an interesting guy, and has a lot to say. I agree with lots of it, especially his iconoclastic position on agilism. This time, I'd like to disagree with two paragraphs in a recent blog entry. The second one first.

But I suspect in 5-10 years' time, as test-driven development becomes more popular and teams become more ambitious in their testing efforts, test developers will be in great demand and will be able to command high salaries. I see them becoming as important as architects are viewed as today. Maybe more so, since they actually add value on a project ;-) (Only kidding)

This seems to have been coming up a lot, so I'll say it here: I'm agnostic about architects, but testers don't add value to a project; as James Bach suggests, testers help to defend the value that's already there, or help to identify ways in which value may be lacking. Testers raise questions and make observations; the people who make decisions based on those observations are the ones who add value. We help them do that, but we don't do it intrinsically on our own.

Realistically, you must be a developer before you can become a test developer, since learning how to create high quality code takes longer to master than learning how to write effective tests. That's not to denegrate the discipline of software testing: anyone who's read Robert Binder's book on Testing Object Oriented Systems will know that, if you wanted to, you could dedicate a lifetime to understanding testing. But, let's be honest now, it takes longer to learn how to code from scratch than it does to learn how to break code*. (* Is that my inbox I can hear filling up again?)

Well, first, testers don't break code; the code was already broken when it showed up. (I think I heard this first from Alan Jorgenson.) That's a fairly trivial objection, though.

The more serious problem is with the assertion that "learning how to create high quality code takes longer to master than learning how to write effective tests". Testing is not merely a matter of writing test code. Testing is about questioning the value of a product and the potential threats to that value. It takes the better part of a lifetime, I think, to understand value. Every time I think I have a handle on that, someone or something comes along to teach me another lesson in humility. But until we're sure we're able to ask the right questions about value, I'll contend that we can't know the right answers to whether our code is of high quality or not. By that reckoning, let's be honest now: learning how to create high-quality code and learning how to question should be inseparable. It's a rare person who can do either one very well, and even an even rarer person that can do both very well. That's why we need developers and testers—and why we tend to need a few of each.

We can & should aim at providing value to our product & process

Even if I totally agree with your second comment, I think that the first comment about testers not adding value to a project is one that has driven good engineers out of our profession and something that can be solved by every testing organization.

Without going into an endless rhetoric about the negative value of defects been released to the field; testers in most organizations are the first users who will ever be in contact with the product. As users we provide value by commenting on existing features and suggesting new functionality that is missing from the product as it was first released. By providing this information during the development process stakeholders can decide whether to make the changes before releasing the product and thus release a better answer to the real needs of their end-users.

The main problem with this approach is that in most organizations our Product Managers and Development Leads tend to disregard the feature and usability comments from their testers, cataloging these comments as noise that is not based on real user experience (what can a tester know about our users, right?) and here is where the role of the QA Manager comes into play. We (as managers) need to make sure our testers really know and understand our customers, most times this means investing the time and resources to let engineers visit and interact with more than one customer at least a couple of times a year in order to understand their real working methodology, environment, constraints, etc.

By investing these resources we gain 3-full:
(1) We perform our testing tasks better by focusing on the real scenarios and needs of our users
(2) We provide feedback not only in the form of bugs but also on real-user experience with the product
and
(3) We provide our test engineers with the feeling that they are not only reporting bugs but also contributing to the definition of the product they are working on.

I agree that most organizations don't focus their testing efforts this way and thus they may not provide real value to their products (even though I am also not sure with this definition on the subject), but this is because they have chosen not do it.

My 2 cents,

-joel

Comment viewing options

Select your preferred way to display the comments and click 'Save settings' to activate your changes.