It is not uncommon for people in technology to occasionally shoot a provocative idea out into the wild and then make a temporary show of it. David Heinemeier Hansson did this recently by claiming that TDD is dead, and Woody Zuill did the same with NoEstimates.
A lot of the time, the conversation softens a bit when you step away from the loud title and figure out what the person is really trying to say. That can be difficult to do.
His post outlines a couple of main needs in creating software such as customers wanting products that work, companies needing a positive reputation, and people on the development teams needing to feel competent.
The question being posed via the NoTesting hashtag is “Is testing the best way for a company to meet these needs?”
Lets take a closer look at the question, the premise, the rhetoric, and test this idea.
One important thing to note, is that no where in his blog questioning the necessity of software testing does Bob specify what he means by the term.
So what is testing?
Testing software among other things, is a process of discovering risks, things that will make the customer unhappy, that other parts of the development process are unable to find. Testing shines a spotlight on areas of the software that are hidden. Everyone on the project contributes to that mythical idea of quality. Some people discover what the customers needs and desires are, some people with management skills facilitate work, some people write code and build the product. Everyone has a significant effect on the outcome by contributing their expertise.
What about value?
In one part of his post, Bob makes the assertion that customers don’t actually want to pay for testing. That may be true, but we could also ask whether customers want to pay for product management, or scrum masters, or project management systems, or consultants. All of these things facilitate and support good, working software. All of these things contribute to what ends up being the product that solves problems and helps people do more work better.
Software testing is a cost center, but it certainly isn’t something that customers regret paying for. They usually aren’t directly paying for it anyway.
When people buy a product, they aren’t buying the specific services that went into making the thing. They are buying the end result, something that should just work. All of the stuff that went into making that product are embedded in the price.
Maybe you don’t need testers
There are some companies that are doing a lot of testing (or rather, checking) with code now. They employee no or very few testers. Facebook and Salesforce are some of the more notable examples. Both of these companies have fairly extensive suites of programmed tests acting as alarms for change detection and programmers that are testing their own work.
These companies don’t employ people with the title and specialization of software testing, but that doesn’t mean it isn’t happening to some degree. Often this formula ends in bad testing by people that don’t understand the work, and disappointed customers who just want something that ‘works’. There is also a trend occurring where companies that were previously using the ‘no testers’ model are slowly shifting back to use both people that are dedicated to testing and programmers to test the product.
If what Bob actually means with this post is that mass inspection doesn’t work, both Deming and Ohno would agree with that, and that it is important for developers to do their part by working to improve code quality, them I’m on board. Improving code quality may mean that fewer (but more skilled) testers are needed, it sure doesn’t mean they will go away.
Hopefully Bob has a follow up in the works to answer some of the many thoughtful questions that he has not addressed.
If I seem a little upset about this trend, it’s because I am. There is a sentiment in both of these posts that is sort of “what testers do is super easy, they should just show programmers the magic keystrokes and then go away”. This silly attack on the profession has been happening for a long time now. Thankfully, I get to work every day with developers that understand the value of good testing and am friends with people passionate about testing work.
Time will tell if Bob is right.
Take a guess which side of the argument I’m betting on.
UPDATE: Ben Yaroch let me know that SalesForce does have a number of testers in some divisions. It may be better to reference Twitter or Google as examples in the class of companies.