Developers and Testers are not always the best of friends! For some Developers, it is easy to feel like the Testers or QAs on their team have the sole intention of finding faults in what they, the Developers, had built.
That’s not the case though. Both are seeking the same outcome, quality working software, they just play different roles and operate with different mindsets.
Developers want to solve complex problems. build things and make them work, while Testers want to discover what’s wrong or what could go wrong in a particular scenario. Testers place themselves in the shoes of the actual user. I do believe that Developers should adapt the Tester’s mindset at times. And, I’ve been trying my best to do so on a daily basis.
Recently I’ve been exposed to basic testing concepts and outlook. This had lead me to start adapting some of the Tester mindset while writing code.
In this article, I’ll talk about the difference in mindset between a Developer and a Tester, the benefits of testing, how Developers can adopt a Tester’s mindset, and the benefits of doing so. Let’s dive in!
Difference in mindsets
Developers and Testers tend to think about software and the development lifecycle in different ways.
Typically, a Developer focuses his thoughts on how to build and make things work.
On the other hand, Testers think mainly about the various scenarios in which something could go wrong in the application. As such Tester locate issues within an application from an early stage.
These issues can then be resolved by the Developers. Also, a Tester will think about how to test the code written by the dev.
Eventually, both parties play a role in building a robust, bug-free (as much as possible) application.
All Developers want to build robust systems but, most Developers (including myself) don’t think much about things from a Testers perspective when developing which at times results in bugs flying under the radar and into the final application.
I remember working on a quiz application that had a timer. The player would get a longer time to answer a question that had a media( audio, image, video) component to it. The timer would wait for the media file to load completely before it starts counting down.
The timer worked how it was supposed to whenever a question had a media component, but it did not function as expected if the subsequent question did not also have a media component. The timer also broke if the user were to pause the audio or video.
I didn’t test these scenarios while implementing the timer. I only came across them after I had submitted a PR and was just playing around with the application.
Benefits of Testing
Before we look at ways that Developers can start developing more of a Tester’s mindset, we’ll cover a couple advantages of testing in general
Bugs within your software can lead to serious issues when deployed to production. These can range from missing data, features not working properly, broken communication between systems, and even system downtime.
Testing will help you identify and prevent a lot of these issues before your application reaches production.
If you have a fully tested application then you’ll be able to confidently promote your software because you know that you’ve minimized the possible number of issues that made it to production.
This will also boost the confidence of your Clients/Users who will undoubtedly feel comfortable using a system that is fully functional and reliable.
A fully tested and bug-free (even though no app is bug-free) application will result in better quality User experience.
Adapting a Tester’s mindset while developing
Now, to be fair all Developers do some form of testing when writing code. We test to ensure our code works the way we intend for it to.
However, we may not always think about things from a User’s perspective. A big part of having a Tester’s mindset is thinking about the User’s experience as opposed to thinking just about how the code works.
This is where getting exposure to testing concepts and adapting a Tester’s mindset can come in handy.
Personally, I’m still learning and adapting to thinking of things from a Tester’s perspective thus thinking more about the User experience.
As Developers, we also have to learn to be unbiased towards our work, recognizing any shortcomings and be open to change because the very moment you put on your metaphorical Tester’s hat you’ll undoubtedly see things that needs improving or is inefficient.
These can range from the flow to accomplish a task within the app to as simple as recognizing that your UI is not very intuitive, and you have to be willing to accept and change.
Also, always ask yourself “would this make sense to the User?” before implementing something in a particular way.
Benefits of having a Tester’s mindset
There are things you’ll start doing when you start adapting a Testers. These includes:
I’ve found myself asking “will this be easy to test” when writing a function or a piece of logic. Thinking like this will definitely result in you writing much cleaner code.
I have to admit though, sometimes it’s much easier to stitch something together that just works but this can make your code harder to debug or refactor and will lead to problems in the future.
Better User Experience
With the end User’s experience on your mind you’ll put more thought into the processes/flows within your application.
Eventually, you’ll start thinking more about what could go wrong when a User is interacting with the application. You can then code against these scenarios to create a better experience for the User.
Understand the User
If you’re thinking more about the User, and doing things in a way that will make sense to them then as a by-product you will understand the users of the application you’re building.
This is more powerful than just understanding the technical details behind the feature you’re trying to implement.
I have worked on projects where I did not truly understand who the Users were. This made it very difficult to create an experience which the User would love. With a good understanding of the User, you can build applications which they will enjoy using.I have worked on projects where I didn’t truly understand who the Users were. This made it very difficult to create an experience which the User would love. With a good understanding of the User, you can build applications which they will enjoy using.
You become more objective
A big part of having a Tester’s mindset is being impartial towards every system or codebase you come in contact with, including the ones you helped to build and even your precious side projects.
As time progresses you’ll become better at objectively looking a things and recognizing what needs improvement.
You’ll make the QA team’s life easier
Testers and QAs will smile at this one. All the points made previously will result in Developers writing code that is easier to test.
The flow’s within the application will also be less complicated and much more fun to write test automation scripts for.
We discussed the Developer vs Tester mindset, the benefits of testing, how to adapt the Tester’s mindset as a Developer and the benefits of doing so.
I hope you found this article helpful. Share your thoughts in the comment section on what you think are great ways to adapt the tester’s mindset.
Don’t forget to share with your friends. Until next time, think, learn, create, repeat!