Why Developers Are Poor Testers and What Can Be Done About It
“Most developers I know are actually pretty bad testers.”
This was the feedback from one tester, in a recent short survey. The survey also verified that more developers are taking part in testing tasks, as reported in 37% of the organizations.
The survey included testers from organizations worldwide and was focused on testing efforts in their organizations. With the growing rates of agile methodologies, this is of no surprise.
In many cases, the testers tend to be unhappy with the results of developer’s testing. There are various reason to why developers don’t have a “natural ability” to excel at testing.
If you do have the skills but you just aren't seeing the success you deserve in your career, then do check out our Simple Programmer course “How to Market Yourself as a Software Developer”.
Reason #1: Parental feelings towards their code
The Ugly Kid quiz: When standing in a room full of people, go ahead and ask, “Who has an ugly kid?”
Ninety-nine percent of the time, no hands will be raised.
Now, go ahead and ask, ”Who has a friend whose kids are ugly?”
I can assure you that the numbers are much, much higher.
A similar “blind spot” phenomenon happens when asking developers about their own written code. We tend to be oblivious to flaws in our own creation and not been able to see the cases where one characteristic is not on the top level, even though we are able to correctly identify it when it comes to other people’s jobs/children.
Reason #2: Developers simplify complex problems
Developers are focused on taking complex problems in user stories or requirements and transforming them into small and actionable tasks that are then translated into simple lines of code. One such example is the creation of a button that will allow users to sign up for a trial, turning it into code lines that will then allow the button to become clickable.
Testing is the complete opposite. A tester’s task is to take simple features and think about the complex scenarios that will bring them down with bugs!
Reason #3: Focusing on the “positive scenario”
Again, developers are thinking on how to make things happen, how to achieve the result they want to create with the code. It’s all about taking an abstract idea, writing code, and transforming it into a compilable program that can perform desired actions. When testing, we need to identify how to break things down and try to find these places when things will not work as smoothly as planned.
An important part of a tester's’ job is to find the weak spots of the system and in it the breakable locations so they can be fixed. Most developers are concerned with solving problems, not creating them, which in turn makes it difficult for them to get into the tester’s mindset of destroying instead of building.
Reason #4: Missing the small things in the big picture
These quizzes ask participants to find the mistake that is hidden.
Let’s take a quick jump to your Facebook feed, where you have probably seen this quiz or similar ones. They often claim to be indicators of various levels of intelligence or genius.
Of course, they are really just about patterns and strings.
Testers are naturally inclined to find the things that break the pattern. Coders are naturally inclined to find or create the pattern.
(*Results will appear at the end of this post.)
Reason #5: Lack of End-to-End knowledge and real-user perspective
Most organizations do not spend time and effort in order to make developers understand the users of their products. Costly developers are sent to do exactly what they were hired for, which is writing code and developing new products, and the task of understanding customers’ user stories is left for Product Managers.
It’s no wonder then why many times developers cannot come up with the ways by which their users will work with the system. Therefore, they won’t take the time to predict all the potential problems users will run into while using said system or products.
Guess the writing was on the wall all along…
How can you become better at testing?
It is clear that developers are not by default “excellent testers,” so what can be done in order to increase our chances of finding the bugs in the system before we release them to the field? You’d be surprised, but there is quite a lot that can be achieved.
Stop seeing testing as a reprimand
A good, agile team requires both developers and testers to test. With this in mind, the first step towards becoming better at testing is to stop resenting the fact that you are testing. Testing is not a dirty job, and as can be understood from all the previous points, it is not an easy job either.
If you want to be good at testing, then start by taking this job as seriously as any other job you do in your daily work, and make sure to set enough time aside for testing.
Understand your limitations and weaknesses as a developer
Awareness of your own “blind spots” is a prerequisite for improvement. Knowing your strengths and weaknesses will help you to perform your job better. If there are things you need to learn, go and learn it. If you need to ask others how to do something, go ahead and do it. There is no shame in consulting with others and asking for their help.
Plan your testing according to your constraints
Testing requires planning to make sure you are working correctly and on the right aspects of your product. Here are some examples of the things you can do in order to plan your testing better:
- Don’t test your own code: following up on the Ugly Kid quiz I have previously mentioned, do your best to test features developed by other programmers, and ask others to test the things you’ve written.
- Before you begin with testing, THINK! Think about both the positive and the negative scenarios, think about how your users work with the system (and how they abuse it!), analyze the product you are about to test, and look for the weak spots.
- Work with checklists and heuristics. Make sure to write down what you want to test before you start testing to ensure you won’t miss anything important once you get down to business.
If it’s your code then you need to care
Even if testing tasks are not listed as a part of your dream programming job, the reality is they are here to stay.
Whether it’s feeling overprotective of your code, lacking user knowledge, or some other cause, I hope you’ve learned about some of the reasons why you’ve been hindered in successfully performing your testing tasks.
Moving forward, you can now improve your testing abilities, and as a result, create better, thoroughly-tested products will be released for the benefit of us all.
Can you find the the mistake? Double use of the word ‘the’.
When multiplying 11 by 12 the result should be 132 and not 123 as it appears.