The softer side of software testing
We think about the skills of a good software tester, we can often focus on their ability to analyse a system, think out the box or their technical abilities in test automation or finding solutions to pipeline/production issues. However, in my opinion, the skills that define a tester most is not their proficiency in these areas, but rather their ability to focus on the softer areas of interpersonal communication and developing a team.
After all, skills and abilities are only as effective if they are utilised correctly – and this utilisation is often only best realised when we learn to communicate effectively within our teams. The biggest problem – and often one of the reasons why we perhaps don’t see enough focus around them – is that these skills are particularly difficult to develop and train. While a person can learn and practice technical skills or train their minds to think a certain way, a lot of our softer skills are inherent to our personality. That doesn’t mean though that they can’t be developed and enhanced it just means we need to be even more deliberate round these areas to bring about this change. The positive side though is that everyone can develop these skills over time, regardless of their personalities and in fact, once a person has a better understanding of their own personality they can fine-tune their soft skills to better align to their own strengths and weakness.
Yes, not all soft skills are communication-related, as you will see below, but they do combine to show just how important a role these softer skills have on teams and why any test engineer who wants to really make their mark in this career, should look to develop as effectively as possible.
1) The ability to ask the question right
I’ve written before about the power of why and the importance of digging deeper into the root of a problem. The mark of any good testing mind is a natural curiosity in wanting to understand the how’s and why’s we are building a system a certain way and hopefully through that find the issues that need to be prevented and tested for along the way. However, if you are unable to communicate your questions in an effective manner, it's likely they will be lost on your team. Either you will come across as disruptive, ignorant, arrogant or perhaps even worse, ignored entirely. There is a skill to asking a question at the right time and in a way that helps people see your point without feeling any animosity to it.
That aforementioned timing is a large part to the effectiveness of a question, making sure you don’t interrupt people too frequently or wait too long before raising your points in the decision-making process. Knowing what information should be communicated immediately or can wait for a review or retrospective at a later time. However, there is much more to it than that. It’s been able to frame questions around any particular requirement or feature form the point of view of a customer or user and understanding its core purpose, it's understanding the details of a function rather than getting caught up on semantics.
It’s the ability to talk with developers about how they are designing something in a way where you actually understand the technical details of their work and providing valuable insight or questions around its testability. Correctly identify the risks that affect these areas, being able to prioritise them and translate that to the deadlines early on. And doing all this respectfully.
It sounds like a lot, and it is, but the value in asking these questions effectively while not just help the team see your value and respect you more, but it will challenge their thinking long term and lead to a more effective software product at the end of the day.
2) Time Management
This probably applies to every person and not just testers, but time management – the ability to get through what is needed in a required amount of time – is especially important in software development in general. With so much emphasis placed on trying to hot deadlines and predicting effort in tasks, being predictable in your delivery and how you manage your time removes one big variable in getting work done and builds trust within your team. That doesn’t mean that you will always deliver as expected as obstacles will come their way and no matter how much we try and predict things; we are inclined to often miss things. Still, being reliable with how you spend your time is a massive confidence booster and will aid significantly in driving this next soft skill.
3) Managing your delivery
Now, by this, I don’t just mean getting your job done. This is what is expected of everyone in a team. As a tester though, you can stand out of you do more than simply just get the tasks done that you need, but know how to effectively manage it too as well – across the whole team if possible. If there is any change to delivery requirements, software design, testing approach or delays in the process, it should be your responsibility as a tester to manage how this will alter the testing delivery and help address and mitigate these different issues.
Managing delivery is also about how you communicate things like testing progress, readiness for release, defect information and any relevant information that might be required on a regular basis. This doesn’t need to mean the existence of wasteful documentation and processes, because, in fast delivering environment where you might go to production several times a day, this might seem unnecessary. Rather, it’s the testers ability to communicate these in an efficient way, often through automated reporting or IM messages.
Managing delivery also means keeping aware of your testing backlog and more specifically, your tech debt and ensuring these needs get driven to the fore in planning sessions. You can’t blame others in your team when your maintenance effort is simply too high and you end up with too little time on your hands. As a tester, you should drive your backlog and ensure you maintain your automation repos so that you are always in a position to test effectively and efficiently – and if you’re not the one driving this, then you’re going to land up as a passenger who is going to take the back seat to everything else.
4) Reporting your value
Reporting is another lost art of the testing toolbox. Yes, I don’t think we should spend wasteful hours on this, especially when a lot of reporting can be automated and data gathered from wherever we store our testing efforts, but it’s vital to helping business understand the value of the testing effort. While we can often argue that many companies do not understand or value the process of testing, it's largely because many testers do a poor job at communicating their value. Through proper reporting, where we showcase not our testing efforts and defects found, but more specifically defects prevented, maintenance hours gained, and delivery improved through our various efforts that we gain the trust and value from the business. As a tester, we need to learn to speak the language that our business operates in and communicate to them in a manner that derives the most insight.
5) Dealing with risk
The art of building quality software is not just about better analysis, design and testing, but really about juggling risks. After all, as any experienced software engineer knows there are just too many variables to consider to ensure most software is completely defect-free and so as a result, in order to test any software effectively, it's identifying the business and technical risk of any particular software, knowing how and where to test it and then identifying the most efficient ways of doing so, while ensuring that vital parts are completely covered, so that you can still release the software timeously.
How you manage these risks, communicate them with the team and drive appropriate mitigation is one of the important hallmarks of a great tester and one that will provide a great deal of comfort to any business, after all the biggest concerns with regards to software quality is when things go wrong and knowing that risks are being effectively managed goes a long way to ease those concerns and again, place importance on the testing effort.
None of these removes the importance of a testers core analytical and technical skillset that should remain their primary focus. Though, by enhancing many of their softer skills, a tester can greatly improve their value to any organisation and drive quality more than they have ever realised. These are far from the only soft skills you will want to develop, but they are good ones which you should find incredibly helpful. I may write about some others at a later stage.
Great testing is as much about these softer skills as it is about any other.