Remote work: Tools and best practices

I am writing this post during the COVID-19 lockdown. Companies have found ways to enable employees to work from home. While 100% remote work does not work for manufacturing industry, there is no problem with full blown remote work for soft service industries like information technology, digital content production (text, audio, video), live online coaching and customer care.

That said, my work life has seen no alteration during the lockdown. Why? I have been a software freelancer since August 2015. I have been choosing to work with clients who don’t ask me to come to their premises. Very few clients ever mandated that I work from their office. They cared more about getting work done than seeing me in person 🙂 . So COVID-19 or not, I have an experience of five years in remote work. Which means I have a lot of guidance to offer you.

Tools

I am listing some tools, some of which you may have already used. Most of these tools work for any soft service company. Some of them are software industry specific. There are plenty of options in each category, but I am going to list only TWO per category.

Out of the two, one of them will be an offering from a famous company and hosted on their servers. I’ll call this a ready-to-use service. This suggestion will be something I have used and grown to like. But in every category, I have now replaced this much-loved ready-to-use option with another one. An option that you can host on your own company’s servers. The second option is particularly useful for software companies since they deploy their own servers, either physical or on the cloud. They like direct control over their data. This will be called a self-hosted solution.

If you do not agree with some of my suggestions, a good way to find an alternative is via AlternativeTo.net.

Team-centric project planning

When team members work remotely, it is very important that each one knows his/her goals for the day very clearly. This will prevent confusion and stepping on each other’s toes.

Ready to use: Trello is my choice for a planning tool. The simple interface with boards, cards, checklists, comments and drag-and-drop flow is something I did not find in any other tool. It is way too convenient to use to be looking for alternatives.

Self-hosted: The earliest members of the Trello team forked their own project planning tool, which looks like a clone of Trello. But it can be installed on your own server. You will find it a cinch to use Wekan, if you are already habituated with Trello.

Text communication

Team chat is a growing habit among companies. Members find it intuitive to communicate with each other using text chat. A good thing about team chat is that it clearly fixes your role, since you can log in only into one team at a time. You can keep your work Slack team seperate from your family Slack team. You won’t receive messages from your family while you are signed into your work team, and vice versa. This solves a major problem, i.e. distractions from your various friend groups while you are working. Think WhatsApp and Hangouts.

Ready to use: The only commercial solution I have used in my past jobs and during my freelancing days is Slack. So that’s all I can recommend.

Self-hosted: Mattermost is an excellent choice. It works fast and seamlessly on a browser. There are excellent Android and iPhone apps. The software is highly configurable and themable. I fell in love with Mattermost when I was moving all my services from third-party to self-hosted. In fact, I love Mattermost more than I ever did Slack.

Audio / video communication

Ocassionally, you’ll need to discuss issues and goals face-to-face. You can’t text your way out of every situation. In some situations, face-to-face talk may be faster, more convenient and more respectful.

Ready to use: Despite the bad name it has earned recently, I still prefer Zoom if I were to use a commercial ready-made service. I really like that the app is lightweight and multi-platform.

Self-hosted: Japanese-named Jitsi lives upto the promise of excellence held in high regard by country from where its name hails. After using Jitsi on your own server, it’s hard to go back to any third-party service.

Team document editing

Documents are often shared and edited. These include detailed plans, documentation, digital content, diagrams, proposals, memos and what not!

Ready to use: Google Drive were among the first to invent team document editing and will continue to make inroads in the market of shared documents. What’s more? They have apps, offline editing and auto-save.

Self-hosted: If you prefer to host your own valuable / sensitive documents within your company’s cloud / network, you should install the very reliable NextCloud document sharing service. Collabra is an online Office document editor and can be installed in NextCloud as a plugin to achieve the same functionality as Google Drive’s easy editing of Word and Excel documents.

Ticketing

We aren’t talking about travel tickets. In the service industry, especially software, a ticket is an issue that will be addressed by a team when they can pay attention to that issue. A ticket is usually used for complaints, but it can also be for requests, suggestions or simply a reminder. Tickets make sure that issues are dealt with fairly, either through priorities or through sequence or round robin.

Ready to use: Atlassian’s JIRA has been a popular ticketing system among software companies for a long time, but can be used by any company to keep track of customer issues, upcoming tasks, improvements, etc.

Self-hosted: Spiceworks is a ticketing system that can be installed on your servers. Spiceworks’s functionality can be extended by several plugins. The company also has its own ready-to-use service if self-hosting is not for you.

Code repository

This tool is specific to the software industry, although it can be used in any system that uses files as content. It is important to hold onto multiple version of your project, so that it is easy to go back to an older version when something undesirable happens in your current version. Version control systems, aka code repositories, are used for this purpose.

Ready-made: GitHub is the world’s most popular code repository. Almost every company I know uses GitHub to hold onto their software code.

Self-hosted: Behind the scenes, GitHub is powered by the open source software Git-SCM or Git software configuration management. Forgoing GitHub, you can install Git-SCM on your own servers and achieve the same functionality that GitHub does. I have my own Git-SCM server for my projects, since the thing I hate the most is to transfer responsibility of safekeeping my own software code to a third party.

Best practices

Now that we have seen the tools of the trade, we will see how best to use them so that your team works efficiently and stays productive despite the members being far away from each other.

Have clearly defined daily goals

Without a clearly defined goal, team members are confused about what to work on every day. This is worse when there is no one to quickly talk to and clarify.

Setting tangible daily goals is the FIRST step to building a successful remote-working team. All goals should be made clear the previous evening before everyone walks away from work. They should also be reviewed every morning before work.

Make targets clear by defining them as precisely as you can.

The following is a terrible day’s goal for a company that produces recipe videos: “Find the best video editor for our video content.”

This is a comprehensive one: “Find a video editor which supports HD 720p. It should support editing audio and video tracks seperately. There should be support for adjusting brightness, contrast, colour saturation and white balance. A setting on adjusting the quality of our video will be useful in keeping the video size such that 1 minute of video takes only 2 MB. We should be able to export the finished video as MP4, WebM or MKV. Download not more than 5 editors for sampling. Edit our video on making a plum cake using all those editors. Finalise the one with the best results. We will set up a review meeting on Zoom during tomorrow’s stand-up meeting, where you can show me the demo.”

This should be enough to keep the employee busy for the next 6 hours without any doubts about what he/she needs to achieve that day. As a result there will be fewer distractions!

Make everything available unambiguously

Ambiguity and uncertainty are the worst enemies of efficient remote work. They cause constant chatter among team members to find things. The chattier a team, the less their productivity.

Is this man looking towards you or to the left? Ambiguity is subject to multiple interpretations. Always give the whole picture to remote workers.

For the employee mentioned in the above video, here are some things to make his work smooth. Autonomy with using the company credit card along with all the information about those cards, so that if some of the video editors are free trial versions but mandate filling up credit card information up front, then the employee doesn’t have to ping anyone for card information. If there are multiple cards, then clearly define the order in which they should be preferred, if one of them were to fail. This will eliminate ambiguity. The ability to access sample videos from the company’s document storage, so that the employee can download the plum recipe video. We can think of more, but I think I made a good start in making the idea clear.

Don’t get chatty on team chat

The last thing you need is plenty of distraction from your own team members, as plenty of things are discussed over chat. Usually teams get chatty because the previous two points are not taken care of: i.e. making goals clear and having the resources to make those goals happen.

Even so, team chat might not be a good place to discuss goal ambiguities and lack of resources. The entire team doesn’t need to know. You should use one-on-one chat or better yet…

Use your phone for one-on-one conversations

In remote workplace, the phone should be reserved as the instrument / medium to use when you want to talk to a single person, usually one of authority. Truly important things usually take very long to type and are better discussed in spoken words and face-to-face, and then later followed up by a written document which summarises the conversation, making sure that both the parties are on the same page.

Encourage deep work

Make sure that the team members have the right to choose NOT to participate in communication when they need to deeply focus on their work. Ideally, the hours for communication should be restricted to the two ends of the day. If that’s not possible, keep the meetings close to a natural break, such as before or after lunch. Of the 6 – 8 hours the team works, only 1 or 2 should be for communication. For the rest of the day, it should be made okay for the member to disappear from his / her team members. For real urgency, pick up the phone to contact the member directly. Even then, a member should be allowed to choose to miss a call. A second call from the same person would mean a real urgency and the member may then choose to respond.

Update tickets and kanban boards as soon as tasks are done

Team member goals are usually drafted as tickets created in the ticketing system, before being moved to an kanban board. Members should make it habit to update the status of the tickets and the board as soon as something significant happens, e.g. software development done, logo first draft designed, testing done, sales proposal drafted, legal document reviewed, software accepted for release, etc. Not updating the system makes it unclear for the team members and also for the customers. Updates should be swift. If you prefer not to update as soon as things are done, at least make it a point to update things at the end of the day.

In Git, work on your own branches

This is a software specific practice that applies to those who use Git. This rule is a necessary practice even while working in an office, but mandatory in remote work. Never work on main branches such as master or staging, but only on branches dedicated to a feature you are developing or bug you are fixing.

Make sure that junior developers are not allowed to make any changes to the main branches. Revoke those rights from them and only give them permission to issue a pull request.

Only seasoned developers and technical team leads should be allowed to merge changes into one of the main branches. This way, the software will be protected from major bugs due to employee inexperience.

Prioritise security

While working in an office, it’s possible that your company uses only local networks to move files around or for employees to chat with one another. But when working remotely, you are always rolling things over the Internet, which is a nasty place with millions of evil eyes.

Always make security a priority. Use only HTTPS for websites. All communication should be protected with SSL. No secret information should be revealed over the Internet. If you can go the extra mile, make sure that everyone uses a secure VPN to connect to the Internet.

Only two team-wide meetings a day

Only two team-wide meetings should be conducted every working day. The first one should be every morning. Since everyone is clear about their goals, each member will state in a concise manner what he/she will work on. They will also identify one big issue that will keep them from completing their day’s goal, what they will do about it and how everyone can help.

The second meeting should be in the evening, when everyone concisely reviews their work day and what problem they faced. Depending on the team’s capability, either each member picks their next day’s goal or is assigned one by a project / team lead.

All other meetings shouldr involve only those persons who have a say. Everyone else should be excused to continue working.

Regular troubleshooting sessions (not everyday)

Work is not as smooth as the plan on paper. Issues occur, roadblocks refuse to move and teams stutter along. It is necessary to schedule one session for tracking issues and focusing on solutions. This should ideally happen once a week. Having a troubleshooting session everyday is too much. If you are having so many issues that you need to address a meeting everyday, then something is seriously wrong and you need to rework your project.

What about email?

What about it? I don’t recommend using it at all!

Let’s look at the history of email. During the early and mid 1990s, you could only do a few things on the Internet. Use HTTP to read online content and use UseNet to post message for plenty of people to read (like a billboard or a bulletin) or emails to communicate one-on-one or with several others. With only one method to communicate, people used it for conversations, planning, scheduling, sharing and tracking. Hell, email was even social media!

But today, we have so many dedicated tools. There are issue trackers, document sharing services, online chat, team chat and calendars. It makes zero sense to prefer email over any of these streamlined tools.

And that’s why I haven’t included email. In a world abundant with focused tools, email is redundant and unnecessary. It should be used as a last resort if one of your other tools fails. Do not lead your remote team with email as the primary service. Email should be a fallback.

Conclusion

I hope you have learnt plenty of things about what tools to use and how to set up an environment conducive to remote work. I also hope that the COVID-19 pandemic is resolved soon, but also that everyone gets to work from home not by mandate, but by choice, like the last 5 years of my career.

If you love our articles and want to get the latest in your inbox, please subscribe to our mailing list.

Leave a Reply

Your email address will not be published. Required fields are marked *