Teleworking Guide for Developers


With the current events, many of us have to telecommute. This is why today I offer you a guide to optimize remote work as a developer.

Teleworking is an important change in habit and impacts several aspects of daily work, starting with the environment.

The environment

The first problem encountered when working "at home" is to manage to separate the moments that correspond to work from personal moments.

Workspace

A good practice is to assign a dedicated workspace to better separate the time dedicated to work from the rest. This space can take many forms.

  • If you have a spare room, transform it into an office space which will be a space entirely dedicated to work.
  • If you do not have a dedicated space you can settle for a desk or a table which will henceforth be your workspace.

The important thing here is to separate the work space from the rest in order to create a clear separation between work and the rest.

Maintain habits

It can be tempting, when working from home, to sleep fat and stay in your pajamas all day. Even if the idea can be attractive it does not help to get into the mindset "work". The best is to try to maintain your habits with well-defined schedules for better differentiation of work / personal moments. Even if you do not move from your apartment I advise you to take breaks as you would at the office by leaving your workstation completely (tell your employees before all the same).

Family

Telework is made more complicated when you are surrounded by family members. Also, it is important to be an educator and to communicate about the way you will adopt for your day. It is important to explain clearly that you cannot be disturbed during the moments dedicated to work. It is not an obvious task, especially with young children (I imagine), but the risk here is to be cut frequently in your work which will necessarily affect your concentration.

Communication

Even if the internet today offers a multitude of tools to communicate (video, audio, chat, boards ...) companies are often used to a synchronous communication system where everyone can come and ask their question directly (this method is 'elsewhere problematic because it very often breaks the concentration). In a context of teleworking, this method of communication is even more unsuitable because it involves telephone calls all day long which are impractical.

It is imperative to set up asynchronous communication tools that allow everyone to communicate without interrupting other employees in their work. However, it is also important to define a satisfactory response time at the risk of creating problems in the collaboration chain.

For example, a project manager can be blocked waiting for a response from a developer and vice versa. It is therefore imperative to notify employees during your breaks and to establish a certain process for the different levels of information in order to separate urgent requests (site that no longer works, need key information) from requests that may wait (request for information on an upcoming feature, general question ...).

Document = fewer questions

It is important to document as much as possible what you are doing as this will also allow you to receive fewer questions in relation to the features you have implemented.

"What does this function do?"
"Why did you add this feature?"
"What does this fix (API) commit: bug 42" mean?

Remember that other developers should be able to work on your code without necessarily having to ask you questions. You can also create a document to define the rules to be adopted in the structuring of the project in order to limit the points of friction. You can also document your technical choices (why I chose Amazon SES for sending email rather than MailChimp, Mailgun, SendGrid or other?).

Also plan a "Getting started" when you start a new project by creating a guide to set up the project and start working on it. This is a step that is often overlooked and which then leads to a considerable loss of time (with a 1 hour conf call to try to detail the implementation ...).

This documentation can be published directly from your versioning tool or you can create a small static site with
VuePress for example.

Note to remember

When you participate in meetings, or during individual calls, do not hesitate to write down the information given to you so that you do not have to ask the question again later. You don't necessarily need an advanced tool to create a little sticky note, a simple markdown file open in your editor is more than enough.

Agree on the communication method

The concern encountered by many teams is the multiplication of tools and the breakdown of means of communication. Information is then fragmented in different channels and it is not necessarily easy to follow everything that is exchanged. As with the documentation of the code it can be interesting to create a guide on the internal communication method which you can then provide in the different communication channels.

Besides GitLab offers an interesting guide that can serve as a base.

The tools

Today there are an astronomical quantity of tools dedicated to internal communication. Often these tools can be combined together to set up more advanced operations (Slack for team communication, Monday for planning, Trello for tracking tasks ...).

Beware, however, of fashion effects. It is very tempting as a project manager to want to evaluate a new tool by imposing it on the rest of the team. But as stated above, the multiplication of tools risks eventually bursting information and will harm trade. Try to favor a tool that centralizes as much information as possible (even if it means using more specific tools for needs limited to part of the team).

You can also interconnect the tools to improve the workflow (a commit can close a Trello issue for example ...).

Share your progress

It is also important to communicate to the team your progress. This allows everyone (and especially the project manager) to have a daily overview of the progress of the project and to plan accordingly.

You can use Asana, Monday, Trello, Basecamp or Notion to follow up on the progress of the different tasks. You can also link these tools to your internal communication tool for better monitoring.

Videoconferences

Even if the internet now allows fluid video calls, people very often tend to favor text communication. But sometimes a videoconference can be much more effective in dealing with a specific problem. Do not hesitate to request a call if you feel that the problem can be resolved more quickly than in writing (provided that the person is obviously available).

The organization

The change of habit is not necessarily obvious and it is quite normal not to be well organized when you start working remotely.

Create habits

Create habits with well-defined schedules. Without this precaution it will be difficult to separate the moments dedicated to work from the moments dedicated to your personal life. The risk in the long term is to no longer manage to separate the 2 things while having the impression of being at work permanently.

Track your time

Tracking your time is important because it can allow you to situate yourself in the project and your tasks.
Tools like Clockify and Toggl can provide you with reports on the time you spend on different project tasks and activities.

Disconnect

When you finish your work mark a clear break.
In normal times I would have advised you to walk around but period requires, favor indoor activities (read a book, listen to music, watch a series ...).

It is tempting when working from home to extend these hours in order to finalize a project on time. But this practice carries a risk of burnout in the long term so do not pull too much on the rope and as you would in an office do not work outside the hours. If you do not disconnect you very quickly risk being burned out.