Software testing is a fascinating career. It requires a combination of technical and business acumen so a tester can understand the ins and outs of the application under test. It demands creativity to determine the best ways to test an application.

But, as fascinating as being a software tester is, it also comes with challenges, including knowing what to test, recognizing when testing is done, and implementing best practices.

These challenges are amplified when working remotely. For my first five years as a software tester, I worked mainly co-located with my teams. But since I've started working remotely at GitHub, I have had to change the way I work, to be able to successfully collaborate with my team and maintain a high-quality product.

Just as working remotely allows me flexibility in workplace and schedule, I also had to be flexible to adjust the way that I work. Here's what I've learned.

Communication: The more, the better—usually

Discerning conversations become more challenging

One of the first things I observed about working remotely was that it can be more challenging when communicating—specifically, communicating about problems and having conversations that involve critical interpretations. While we do video calls regularly, Slack is the most-used means of communication among my teammates. But with a text tool, it can sometimes be hard to interpret the tone and urgency of some messages.

I also have teammates spread all over the world. So sometimes phrases that my teammates use on a daily basis in England or Germany might not translate well to me or can go completely over my head. This makes it extremely important to have clear communication in a setting where individuals feel comfortable enough to be blunt and, hopefully, can also be concise.

If you find yourself completely lost when talking to a co-worker, or if it appears you are in total disagreement, I suggest hopping on a video call to figure things out.

Release coordination can be tricky

In the release process, it is critical that software testers make the rest of the team aware of the product's state in a timely manner. Communicating whether a release is a go or no-go should be one responsibility of a tester.

A downside of this is that it can seem as if testers are slowing things down, but it's necessary to communicate any potential roadblocks as soon as possible. After all, catching issues before a release is much better and ultimately much less time-consuming than discovering them after the fact.

After my team and I developed a step-by-step release process, I felt really satisfied knowing that we could all work together and release a new version to production with no objections from a quality standpoint.

Asking questions is always okay. Really.

Working remotely, I initially found myself more hesitant to ask questions at times. Sometimes I had a hard time deciding whether I should pose the question to my whole team or to just a certain individual.

Other times I was catching up on threads from eight hours before, from team members who live on the other side of the world. I wondered if it made sense to ask a question pertaining to a discussion that had happened hours before.

I've learned it's always better to ask questions. Every time I have done so, I have learned something new and felt much better. Even if a question seems stupid or is asked late, it's totally okay.

Because working remotely means that work happens asynchronously, it's okay to ask questions as they arise for you—just don't expect answers right away. Also, asking questions is a way to show that you are interested and want to be involved. And it's just another way to interact with your team.

Visibility: Make sure to keep in sync

Be transparent

Another challenge with remote software testing has to do with the visibility of work. In a co-located team, it is easy to look around and see what your teammates are working on. In a distributed team, no one has that ability.

And as a tester, you are not always making changes that your team can see. It can be easy to start to wonder whether you are succeeding at your job and if your team thinks you're doing well enough.

This is when it becomes important to overcommunicate. It involves me giving lots of status updates and sharing my wins (and those of teammates) with the team. I also set quarterly goals and share them with both my manager and my team so that I can be held accountable to them and to myself. Having feedback sessions on a regular basis also helps keep everyone in sync.

Make it explicit when testing is done

In addition to giving status updates, I also make it clear what I have done to test a feature. I often write down the scenarios I have tested and anything that I have found interesting along the way, and I label the piece of work I tested to confirm that my verification is complete.

If something does not work to my expectation, I make sure to clearly explain my expectations compared to what is actually happening, add screenshots or GIFs, and move the work back to development. This is yet another way to provide transparency and remove any vagueness around what you are doing to verify features.

Collaboration: Plan ahead

Figure out optimal time zones

Before I started working remotely, I worked at companies where pair programming was very common. I was also used to having an abundance of meetings each day. All the ways in which I collaborated in a co-located team are the same on a distributed team; they just require more coordination.

It’s usually not going to be possible to have last-minute meetings, so it's important to plan ahead and be aware of optimal time zones to get all teammates involved. With meetings, it's also important to be cognizant of which teammates' involvement is required versus optional. And maybe some meetings can happen as asynchronous discussions instead.

Find a good collaboration tool

When you want a tool that lets two individuals collaborate closely, Screenhero (via Slack) is great. It allows two people to see the same screen at the same time, and it integrates with Slack. And the team that developed the Atom text editor has also recently released Teletype, which allows team members to collaborate on the same project in real time.

Google Docs is great for allowing individuals to share ideas and take notes at the same time.

Figure out the tools that work best for you and your team, and look for opportunities to pair and work together whenever possible. More collaboration is always a good thing for remote workers.

Make remote work for you

Remote software testing, just like any career, comes with challenges. It is important that you acknowledge these challenges and figure out how to overcome them in order to have a successful and, hopefully, happy career.

Be sure to find ways to connect with your team. Build rapport, and trust each other. Find processes that work well for you and your team, and adjust when things are not working.

You also need to find resources for remote workers. Remotive.io has great tips and tricks to support those who work remotely. It also has a huge jobs database for those looking to get into remote work or find new remote opportunities.

Keep learning