Whether you have worked in a traditional office or work remotely, software development has always had an asynchronous nature to it. But now that almost all of us are working remotely, it's important to define exactly what it means to work asynchronously and look at some specific tips for folks that are new to it.
So what is asynchronous work? When working asynchronously, your work should be queued up in such a way that it does not stop while waiting for others to provide you with deliverables or clarification. It requires a shift in how your work flows. We often like to tackle a single task at a time until it's complete, even if that means bringing in others to get the information you need immediately. With asynchronous work, this is not an option, so you need to be able to work on a task, figure out what is needed from others and share that with the right people asynchronously, then move on to another task while waiting for that information.
None of this is to say that we should never have synchronous communication. Video conferencing and chat are necessary tools, but they should be used sparingly. Jason Fried and DHH said it best in It Doesn’t Have To Be Crazy at Work: “Real time sometimes, asynchronous most of the time.”
So with all that out of the way, here are ten tips to help you avoid some common pitfalls and get a productive asynchronous workflow going quickly.
Goals, not activity. Many new async workers feel pressure to “look busy.” However, asynchronous work is all about goals, not activity. Focus on tasks you have been assigned and relax and enjoy the benefits of asynchronous work. This will cut down on unnecessary team chatter, help you do better work, and allow you to enjoy your new work life balance.
Keep regular hours. When you first start working remotely, set a schedule. Many companies will set core work hours for remote workers. If so, this is a good place to start; organize your schedule around those core hours. As you settle into a routine you will find out what works best for you. If you are an early riser you might want to get more hours in early in the morning, or if you like to sleep in you can enjoy brunch everyday and work into dusk.
Self-documenting code. Whether it's being explicit in how you write your code or writing good commit messages, there are all kinds of ways that allow for good asynchronous communication during the software development life cycle. The Software Development Life Cycle done well is its own engineering meeting. Let your code and the tools you use do the talking so you don't have to.
Know (and use) the right tools. Hangouts and Zoom are nice, but they are sometimes luxuries that asynchronous workers are expected to use sparingly. Rather, tools like Slack or Stackoverflow for Teams and Project Management tools like Jira or Asana are more often used. These tools allow you to move knowledge outside of virtual meetings and into an open space that others can benefit from at the time that works for them.
A picture is worth a 1,000 words. Images, links, and other supporting materials can go a long way in communicating a problem or issue. Emojis and animated GIFs aren’t popular for nothing! They allow us to share nuances that words never could. Just as an emoji can express your mood, screenshots or even a short video of a technical issue can give context and insight into an issue that would take you twice as long to explain with words.
Learn from others in your new organization or search out your local meetup or tech group for someone who is already working async and remotely. There is likely someone in your circle who would love for you to buy them lunch and pick their brain about asynchronous strategies that work for them.
Rightsize your communication. Communicating asynchronously requires the right amount of information for the right people at the right time. Be thoughtful about your communication, but don’t overshare. Your messages should contain enough information to cover follow up questions and also give context but not overwhelm the recipient with irrelevant data. Be judicious about @here and @everyone messages in group chat rooms and including or forwarding emails to people who may only have a tangential interest in a conversation.
Transparency is the goal, but discretion has value. You will hear a lot about transparency being a tenet of asynchronous work. Transparency has value, but so does discretion. I still subscribe to what I call the virtual golden rule; if you wouldn’t do it in a real office setting, don’t do it in a virtual one. If a coworker fubars a pull request you wouldn’t walk into the break room and blurt out “Man, that pull request was junk!” By the same token, be mindful of what you share and how you address others in public chat channels. In the example above, it would be wiser to send a direct message to that person to address the issue. They will appreciate the discretion and won’t feel shamed by a public rebuke of their work.
Disconnect during the day. Disconnect to focus and recharge your batteries. Distraction can loom large in an async environment, so be smart about how you manage your notifications. Don’t be afraid to snooze or shut down apps in order to spend a solid block of time focused on one task. Just be sure to re-engage every few hours to address issues or respond to others when needed. To recharge your mental state, physically disconnect from your workspace by going for a walk around the block. Give your mom or an old friend a call to get your mind away from work for a while.
Async doesn’t mean asocial. The goal of asynchronous work is efficiency, but it doesn’t mean you can’t have fun. Many companies will have virtual parties or happy hours so coworkers can let their avatar’s hair down and get to know their teammates on a personal level. Just because most of your work is remote or asynchronous doesn’t mean you shouldn’t take advantage of opportunities to socialize and have fun with your team.
I believe the Coronavirus Pandemic will fundamentally change the world in many ways. One of those changes will be how we work. Now that many of us are being forced to work asynchronously, we will take this skill back with us when things get back to normal.
What are your favorite asynchronous work tips? Reach out to me on twitter or share your comments below.
Happy Coding! 🤓