Skills to Improve Coding
Table of Contents
Beginner - This article is part of a series.
Typically, a craftsman invests large amounts of time developing his or her skills and perfecting his or her technique; the result of this investment is reflected in the quality of his or her product. Likewise, a software testing engineer must invest a considerable amount of time growing and maturing certain skills in order to perform better and more accurate tests. From the outset, I can tell you that there is no magic recipe, shortcuts, or guides for improvement without the word “practice.” This is where the phrase “practice makes perfect” is crucial for progress.
We software testing engineers who automate non-functional testing are situated at the intersection of two sets of minimum skills: those of a Tester (test engineer) and a Programmer (software developer). There are many more talents we must possess, but for now, I’ll focus on those that will help us improve the development of our non-functional test scripts.
There are several authors and colleagues who agree that a programmer should have, among other talents:
- Self-taught (you’ll have to learn on your own)
- Creative (invent solutions to problems)
- Logical (ground solutions in something coherent)
- Resilient (get up again and again until the lambs become lions)
Similarly, a tester should have, among other talents:
- Analytical (divide and conquer)
- Abstraction (conceptualize the whole or the parts of the whole)
- Communication (know how to listen, read, write, and speak correctly)
- Creativity (imagine scenarios where things fail)
What skills should I develop? #
I think these 8 skills I’ve outlined are the ones we should focus on. It even seems like both should be solely the domain of a developer or a tester. However, the core should be more of a systems engineer or even a pure engineer, as these are skills we mostly develop during university studies.
Self-Taught #
You need to dedicate some of your time to reading and learning new technologies, programming languages, and solutions to complex problems. Reading about the latter helps a lot to develop lateral thinking. The best advice would be to look for articles on how to become self-taught and not die trying.
Creative and Creativity #
Creativity is not only linked to tangible art; there are also examples of intangible art such as poetry, literature, and dance. The same is true of our scripts; creativity is reflected in the innovative solutions we can imagine and program to resolve desirable or undesirable situations in our test.
Abstraction #
Abstraction is the way computing has evolved. We’ve always built on top of the upper layers, creating high-level programming languages to focus on how we can do more with less, instead of reinventing the wheel. Thanks to this, we’ve left behind low-level languages like assembler and can use Java to write software tests.
Communication #
Knowing how to listen, read, write, and speak correctly will help you understand the client’s needs: what do they require? And how can we help them? It also helps you understand the testing environment, which is essential for understanding the challenges and, therefore, developing effective solutions. It also helps you search for and generate patterns that could help you determine the most important critical flows or business processes.
Analytical #
The analysis process involves breaking down the problem into smaller parts that are much easier to solve than the whole. This process also involves evaluating possible solutions in your mind before turning them into reality. This analysis process basically involves placing you within the problem and evaluating simple goals that will help you solve it.
Logical #
Logic helps us conceptualize and generate algorithms, methods, or functions based on pre-existing or native structures or objects from various programming languages, all with the goal of solving problems. As our logic, abstraction, and analysis mature, we can develop more complex solutions that can cover a greater number of patterns.
Resilient #
Resilience is a way of life, and we have to accept that systems and technology are constantly advancing and won’t stop to ask us if we’re ready or not. We have to prepare and adapt daily in this technological jungle where the most prepared will emerge victorious.
Conclusion #
To develop these skills, it’s necessary to put them into practice daily. I can suggest following the 21-day method that Dr. Maxwell Maltz describes in his book Psycho Cybernetics. Although we don’t all learn the same way, dedicating some of our time to developing these attributes will undoubtedly help us become better software testing engineers. Don’t give up and eliminate procrastination during downtime or while you’re waiting for the development team to install the new version in the testing environment.