Availability Anywhere Part 28 — Remote work best practices

This is the twentieth eighth part of the Availability Anywhere series. For your convenience you can find other parts in the table of contents in Part 1 – Connecting to SSH tunnel automatically in Windows

We can’t just “take what we do now and how we do it” and “send it over the Internet”. We have to change how we work to make our activities more efficient. This blog post describes my tips & tricks for remote work.

Definitions

This section defines necessary terms.

“Working remotely” means that “people don’t need to get together”:

  • There are at least 2 people involved in a work
  • People are in at least 2 different locations and do not need to meet together in one place to do the work

“Blocking work” means that “one person needs to wait for another”:

  • One person performs an action and needs to wait for another person to act in order to move forward

“Working remotely” means “we coordinate to work at the same time”:

  • Two people coordinate to work at the same time to do the “blocking work”

“Working asynchronously” means “we do not coordinate to work at the same time”:

  • Two people do not work at the same time to do the “blocking work”

“Work” typically consists of “anything that we produce”:

  • Producing artifacts (documents, code, emails, etc.)
  • Sharing screen
  • Sharing audio
  • Sharing video (e.g., web camera)

Working remotely and working asynchronously

It’s important to understand the distinction between the “remote work” and the “asynchronous” work. Specifically:

  • A work may be remote and not asynchronous – e.g., when we hop on a call to discuss something
  • A work may be non-remote and asynchronous – e.g., when we physically sit in the same place but we don’t get blocked by each other

Most (~90%) of the typical IT work (coding, posting updates, scheduling marketing campaigns, writing documents, deploying artifacts, etc.) can be done remotely and asynchronously. This doesn’t mean that it must be done remotely and asynchronously (e.g., people may prefer a different approach), but if for any reason (e.g., technical, procedural, policy-based) it cannot be done, then you are doing it wrong.

There are few cases in which I believe non-remote and/or synchronous approach might be beneficial (e.g., much easier to achieve):

  • Building personal relationships (e.g., getting to know each other better)
  • Teaching (e.g., how to use tools, how to do stuff)
  • Sharing secrets (e.g., configuring security channels for the first time)
  • Working on an urgent work (e.g., solving an ongoing issue in production)
  • Negotiating (e.g., when you can use non-verbal communication for your advantage)

Long story short is: most things in IT can be done remotely and asynchronously. If they can’t be in your case, then you are doing it wrong.

Being efficient when working remotely

This section describes how to be efficient when working remotely.

Work asynchronously

This could also be titled “prefer written forms” as this is what it comes down to most of the time. Two greatest inventions in this world are writing and a printing press. In the modern world, this means that we should prefer written form and make it accessible for others.

Replace your synchronous activities with asynchronous one:

  • Instead of “hoping on a call”, write down your updates and send them in a written form
  • Instead of “presenting the idea”, write down a design document and share it with others
  • Instead of “asking about something”, write down your questions and send them over
  • Instead of “showing my screen”, record a video, transcribe it, and send it over
  • Instead of “running a brown bag meeting”, write down your material and share it over, optionally record videos that help with understanding (and transcribe them)
  • Instead of “asking for updates”, introduce a process in which others post updates in a common form to a well-known place
  • Instead of “having a daily meeting to discuss ongoing matters”, introduce a process in which others produce updates many times a day

If you need to perform synchronous activities, capture them for later reproduction:

  • Record and transcribe all your meetings
  • Summarize meetings in writing (manually or automatically)
  • Write down notes of what you have done (e.g., links to all the artifacts you produced and pages you visited)

Long story short is: you should work asynchronously by producing a written form that can be easily accessed on demand. If something that you create cannot be consumed in the future in an abridged form (e.g., you prefer speaking in meetings instead of writing a design document, or you don’t record your meetings so they get lost), then you are doing it wrong.

Prepare for technical limitations and disruptions

Be aware that others may use different technical solutions and hardware which may change, limit, or make unusable some of the artifacts that you send to them. Examples include:

  • Others may not watch your camera feed (e.g., because their device is too slow, or they don’t have good enough Internet connectivity, may want to save battery, or their device doesn’t support the technology).
  • Others may explicitly disable your camera feed.
  • Others may watch your screen share on a much smaller device (e.g., on a mobile phone).
  • Others may receive your screen share in a much lower quality (e.g., because your communication platform limits the screen resolution).
  • Others may miss some elements (e.g., because they don’t see all the frames of your video, or because something popped up on their screen, or because they are on a train and have a laggy connection).
  • Others will get your feed delayed (i.e., you can’t beat physics and sending things to the other side of the world takes time) which you can’t reliably predict (e.g., network devices introduce lag mid-way due to routing changes).
  • Others will get your feed delayed even more because they may work over many layers of remote connections and remote desktops. It’s not uncommon to have 1-2 seconds of delay during a call.
  • Others may face different delays for things they receive and things they send. Some protocols are known for making received sound much more delayed than the sent one.
  • Others may not see what you typed on the chat (e.g., because the chat window is hidden, or they can’t access the chat from their mobile phone).
  • Others may not hear the beginning of your sentence (e.g., because your microphone may have cut that).

While we can fix some of these problems (e.g., we can chip in and buy everyone a powerful computer), we won’t solve all of them. There is no point in fighting with things we can’t solve, so let’s just avoid them. To achieve that, we have to change what we do and how we do it.

Long story short is: others receive different things from what you send.

Replace non-verbal communication

Verbal communication should be avoided and minimized as much as possible. This includes the following:

Replace your non-verbal signals with other forms

  • If you feel an emotion – say it.
  • If you want to speak – say it, type it on the chat, or use the “raise your hand” button
  • If you want to show something with “hand waving” – draw it on the screen
  • If you agree or disagree – say it, type it on the chat, or use a “reaction” button
  • When you are done speaking – say it, so others don’t need to wait for a long pause
  • If you want someone else to chime in – call them by their name explicitly

Confirm implicit signals explicitly

  • If you think someone feels “this or that” – ask them to describe their feelings
  • If you think someone agrees or disagrees – ask them to share their perspective explicitly
  • If someone asked a question like “are there any other questions” and you have nothing – wait few seconds, and then say “no”

Make sure others receive your signals

  • If you are speaking, make sure that they can hear you
  • If you are going to end something over chat or use reactions, make sure that others have access to these and follow them

Long story short is: you need to turn non-verbal signals into explicit verbal ones.

Lower the communication complexity

The communication language should be adjusted to all of the consumers (e.g., people you speak with) and as simple as possible. Since there may be more consumers in the future that are unknown at the time of production, this effectively requires us to always use the simplest possible communication techniques.

You could say that others should just learn the language better. That is correct, but it’s not realistic. We only have so much time, and people in IT generally get paid for their IT skills, not for their language skills (as long as the latter are decent enough). Given limited time, people can’t develop all of their skills, but they need to choose some over another. Therefore, just as we keep our code from being unnecessarily complex, we need to do the same with our communication.

This includes:

  • Use words as they are explained in dictionaries. If you think something is wrong, then do not say “it’s fine”. If you are not interested in how people are doing, then do not say “how are you”. I’m not saying that doing it is wrong (since this is how the language evolved), but I am saying that there is no harm in using words and phrases that are less confusing for foreign speakers who learned the language from books and courses instead of years of casual conversations.
  • Avoid poetic language and less-popular words. People may not know these words which will make it harder for them to understand your message.
  • Avoid techniques that may be hard to use for some people. For instance, nearly 5% of people in IT are color blind, so do not use colors that are hard to read for them.
  • Do not force others to change because of your culture’s specifics or history. People do not try to offend you with how they name branches or what words they use. If you think otherwise, then realize that your country is small when compared to the whole planet – it’s only a single percent of the population (and even the biggest country is ~18% of all people). This means that the remaining (which is typically above 95% of the planet) probably don’t feel offended by the things that offend you. I’m not saying that your culture or history is not important, but you are not the hub of the universe, and I bet you don’t know the history of a few hundred other countries which may be much longer and much more complex than yours. If you think otherwise, then work on this.
  • Understand that people may consciously use inaccurate words because they don’t know better ones. Do not attach to the words, but focus on what people mean instead.
    Do not attach hidden agenda to what others say. Others do not want to offend you by using short and direct messages, or by communicating differently than you are used to. If you think otherwise, then work on this.
  • Do not think that your interpretation of words, emoticons, emojis, or memes is the only right one and others use these things “incorrectly”. These things were often invented decades ago and you are not the one to tell others what they mean. Understand that there were generations before you on this planet, and that the meaning of many things have changed. Do not derail discussions because others use words or emoticons differently than you would. Focus on what others want to say rather than getting offended because someone used a dot or reacted with “wrong” emoji.
  • Keep your sarcasm, irony, and funny memes clearly marked and separate from the serious conversations.
  • Explain your abbreviations and terms you use. Words have different meanings depending on the context. Make it easier for others to understand by explaining and defining all the terms.
  • Do not assume that others heard what you said or they understood it the way you intended. Help others understand you by repeating your message, sending it over multiple channels, and making sure they understand the seriousness, urgency, and meaning of what you want to communicate.

Long story short is: empirical studies show that most of the IT problems are related to human interactions. Try to understand others better and pick the most probable intention of what they say rather than picking the easiest one to attack. Make your communication simpler and easier to consume for others.

Lower the technical requirements

Anything that you produce should have as minimal technical requirements as possible.

Some examples:

  • Turn your camera off. As mentioned earlier, people may not watch it anyway. Most of the time, there is no need to use a camera at all. Turn it off.
  • Don’t share anything bigger than Full HD resolution (1920 x 1080). It’s cool that you have an enormous screen with 5k resolution, but don’t make others watch it on a 13-inch laptop or 7-inch mobile phone.
  • Do not share black screen with white text. Communication platforms compress the image which makes it unreadable. Do not make others use tools that invert colors. Sidenote: if you can’t stand the white background because it’s too bright, then your screen is most likely misconfigured – dim it and use night mode or similar settings.
  • Do not send enormous images, videos with crazy high FPS or resolution. For typical office work, Full HD with 20 FPS is way more than needed most of the time. Do not make others decode stuff needlessly when it doesn’t bring any value. Save the planet and reduce the carbon footprint by not congesting the network with things nobody needs.

Long story short is: turn your camera off, change background to white, limit resolution to Full HD and 20 FPS. Do not produce higher quality than needed. Text is always easier to consume than video.

Find your work-life blend

You can use many tools to add value to what you do and how you deliver to find your work-life blend. Examples include:

Draw diagrams

  • Use tools like Excalidraw to draw diagrams on the fly. Open Excalidraw in your browser, share your screen, and you can now prototype live with others.
  • Get yourself a touch screen and a pen to draw diagrams easier. This lets you draw faster.

Post short videos

  • Record short videos to show things to others. Use recording features of your communication platforms, or use https://screen-recorder.com/ to do that. Also, use the autotranscribe mechanism thanks to which you don’t need to type long messages and yet others can still read your things instead of watching videos.
  • It may sound like a very time consuming activity, but in reality it’s not. It takes one minute to record a video once you know your tooling.
  • When you submit a pull request, record a short (1-3 minutes) video in which you walk others through the code changes. This helps others review your changes much easier.
  • Record a separate video in which you show how the application changed. It’s basically demoing a feature. Keep it as a separate video because it may be shared with a different audience (end clients, product owners, etc.) and you don’t want to couple it with going through internals.
  • When reporting an issue or asking for help, just show what happens instead of describing it.

Make your private things public

  • Instead of having private chats with others, consider having a public channel where others may come and ask you questions. This makes it searchable and you can share it with others in the future.
  • Keep your working notes in a document that you can share easily. Do this especially for debugging notes, configuration notes, or helper scripts.

Jira is your best friend

  • Keep a history of what you did in your tracking system. Put comments over there many times a day and mark others involved in specific activities.
  • This way others can easily see the history. You will also use this many times in the future when you’ll need to figure out what you did.
  • Inform others what you do by pushing updates on them. Have a space where you can freely drop a line like “working on X” which doesn’t require any reaction or response from others.

Don’t repeat yourself

  • Avoid doing the same thing many times. Automate, record, transcribe, or write down. If you see that you explain something again, then write down or record your explanation and share it afterwards.
  • Do not lose your work. Keep the history of your terminal commands to not figure out the same things many times.

Make your camera feed consistent

  • Replace your background with some fake one to make it consistent no matter where you work from. Blurring background may not be enough as details may change when you go to a different room.
  • Avoid animated backgrounds or flickering screens. People may get distracted.

Use good microphone and mute yourself

  • Get yourself a microphone that can remove most of the surroundings. Instead of using earbuds, get a headset with a microphone on a stick.
  • Mute your microphone whenever you are not speaking.

Use many devices and relax while taking meetings

  • You don’t need to work from one computer over and over again. Work on a good remote desktop configuration, so you can work from your living room, balcony, city park, or from your car.
  • You don’t need to sit in your room when taking meetings. Go for a walk, stretch a little, or work from your bed. Just make sure you don’t leak confidential information this way.

Exercise while you work

  • Get yourself a bicycle, treadmill, or stepper and use it during meetings.
  • Make sure others don’t hear the noise and don’t get distracted by your head wobbling.

Find balance in your work-life balance or work-life blend

  • If you work asynchronously, then you most likely don’t need to stick to a 9-5 routine. It’s not wrong to do so, but many people find it refreshing to change their rigid schedule.
  • Take a break mid day to do groceries or go swimming.
  • Understand for which activities you need to have your computer and which ones you can perform using mobile phones or other devices. You probably don’t need a full blown workstation to reply to an email or post updates on your IM.

Long story short is: there are many ways to improve your remote work environment and what you do. Keep looking.

Prepare for the future

Things will not get “easier” in the future. You need to prepare for it and it’s best to start now.

Synchronous work is impossible in the space

A synchronous way of working is just not the way. You won’t be able to work remotely and synchronously with people on the Moon or Mars.

Instead of pretending like you can work remotely the same way you work non-remotely, just learn how to do the remote work better.

Technical limitations and disruptions will intensify in the near future

Netflix decreased their video quality globally during Covid era because the Internet just couldn’t keep up with the increased bandwidth. Your network connections improve much slower than the computing requirements of the things we use. Just do the math and see how much more bandwidth is needed for an 8k 60 FPS video stream over the 640×480 20 FPS stream we had in the past.

You might say that computers get faster and faster, so we don’t need to worry. That is simply wrong. Microsoft Teams page in Google Chrome will not run on a computer with 4 GBs of memory anymore. Many remote desktops have no more than 16 GBs of memory (and often less), and we expect users to run IDEs and Microsoft Teams, share the screen, send video with blurred backgrounds, and receive the camera feeds of everyone on the call at the same time. This just doesn’t work.

Communication will become more diversified

People travel around the world a lot. This makes languages evolve even more. New words come, phrases change their meaning, cultural context is much less known. Spend a few more seconds when preparing the message to avoid wasting hours/days on misunderstandings.

At the same time, new generations redefine the meaning of older things. The Internet is full of flamewars around the meaning of emojis, dots at the end of the sentence, or memes that were “misunderstood”. Pick your battles and don’t waste your life on things that don’t matter.

Summary

Remember the following:

  • Do things remotely and asynchronously.
  • Work asynchronously by producing a written form that can be easily accessed on demand. Make sure that what you create can be consumed in the future in an abridged form.
  • Others receive different things from what you send. Make sure that they can still consume your messages despite the technical issues.
  • Replace your non-verbal signals with explicit verbal ones.
  • Try to understand others better and pick the most probable intention of what they say rather than picking the easiest one to attack. Make your communication simpler and easier to consume for others.
  • Turn your camera off.
  • Change background to white.
  • Limit the resolution to Full HD and 20 FPS.
  • Do not produce higher quality than needed. Text is always easier to consume than video.
  • Record short videos and use the autotranscribe feature.
  • Draw diagrams with a touch screen.
  • Use many devices to improve your work-life blend.
  • Go for a walk and exercise during the day.

Instead of pretending like you can work remotely the same way you work non-remotely, just learn how to do the remote work better.

Appendix: On trust in communication

I’m a little more blunt in this paragraph to drive my point home. Feel free to disagree.

We sometimes shake our hands. I once heard this evolved from ages ago when people shaked their forearms to check if others hid knives in their sleeves. No matter if it’s true or not, we do not suspect others carrying a knife these days to attack us. Sure, the world is not always a safe place, but most of the time we don’t feel danger when meeting our coworker.

Similar things happen in our work environments. Most of the time, we have no logical reason to assume that others want to harm us, offend us, play dirty tricks, or undermine our work. We have no logical reason to not trust them, but we are very entitled to assume good intentions.

Many languages on this planet evolved with mechanisms to show respect and assure others that we mean no harm. For instance, we don’t call others by their first name but we say words like “mister” or “mistress”. By doing that, we convey a message “I know how you are, but we are not close friends yet, but I assure I mean no harm”. This makes perfect sense. We are not afraid of others attacking us physically, but we acknowledge that we may disagree with them and this still sparks emotions and may lead to conflicts. By calling someone “mister”, we still show respect, even though we disagree or suggest someone is wrong.

However, these things may be called redundant when you realize we have no reason to assume anything but good intentions. That’s why some languages evolved to drop these “official” titles and call others by their first name. This makes little sense to me. There is a distance between people and it’s wrong to pretend that it’s not there. My coworkers are not the same friends as some people I’ve known for decades. That’s why “colleagues” is a much better word to describe our relationship. If you pretend that we’re friends and you call me by my first name on our first encounter, then I’m okay with that, but I’m still aware that it doesn’t work like that.

Now, coming to the point. If you feel attacked because I asked a direct question like “why are you doing that?” instead of saying something like “I’m pretty sure I must have missed what you said and that’s on me, but could you please explain to me again why you are doing that?”, then it’s on you. You have no reason to assume bad intentions from my end. I’m not attacking you by not being super polite. There is no reason for me to speak like you are not an adult.

When I ask “why are you doing that”, I’m not suggesting that “you shouldn’t be doing that”, or that “you are doing it wrong”, or anything of that sort. Attaching hidden meaning is a problem that you developed in the English-speaking culture by saying “it’s fine” when you really think it’s not, or by dropping “mister” to pretend like we are all friends. I assure you that I mean no harm, and if you think otherwise, then you probably feel insecure and have some trust issues. Just work on that.

Appendix: On offensive language

I’m a little more blunt in this paragraph to drive my point home. Feel free to disagree.

I understand that bad things happened in the past. All countries have similar stories. That’s life. But if you now feel offended because someone says “blacklisting”, names their branch “master”, or “grooms” the items instead of refining them, then it’s on you. Most of the population of our planet (like 95+%) don’t feel offended. I’m not going to spend all my time and energy to avoid some words just because you find them offensive.

What you should do instead, is assume good intentions. And if some words really trigger you so much that you really can’t focus on the essence of the message instead of the wording, then work on it.

Appendix: On emojis

I’m a little more blunt in this paragraph to drive my point home. Feel free to disagree.

I remember the days with no Internet, no mobile phones, and no computers. I also remember when the Internet got widespread, emoticons became common, and instant messengers started to support more and more things like images, memes, reactions, and emojis. I find it funny when someone comes and starts educating me about the meaning of emojis or emoticons because I was around when these things were popularized. If you now want to redefine the meaning of these things, then go ahead, but I’m not going to pay attention to that.

Just assume good intentions. That’s all it takes.

I was taught to finish my sentences with a dot. If you think that I mean something else by putting a dot at the end of the sentence, then I assure you it’s not the case. Same goes for an emoji of a smiling face. A smiling face is widely considered a positive signal. If you think it’s sarcasm or some hidden agenda, then I assure you it’s not the case. And if you feel offended by “thumbs up” reaction or any other trend that emerges after I finish writing this blog post, then I assure you that it’s most likely not the case.

I’ve seen many flame wars about dots or emojis. I don’t want to spend my time and energy on that. You may call me selfish because I “just don’t want to learn what emojis really mean or that dots at the end of the message carry some other meaning”. Or you may just realize that this “meaning” you’re speaking about is different from what most of this planet thinks. If I feel angry, I’ll just let you know directly. I won’t be sending subtle signals by using emoji of a smiling face that you think may mean some sarcasm. I’ll be much more direct than that. So if you want me to learn yet another new “meaning” of an emoji invented way before Generation Alpha got their first mobile phone, then it’s on you.