Work asynchronously









Asynchronous work is such a way of organizing a process when tasks are performed on a pipeline. This allows you to fully control the process and fine-tune it for yourself. At the same time, pressure and stress are reduced to zero, and tasks are completed quickly and deftly.



A smooth and fast conveyor gives exactly the right amount of production, all its stages are balanced in terms of efficiency and speed. It avoids wasting time or resources, modeled on the 3M Toyota Production System methodology .



Asynchronous operation relies on three basic principles: multiplexing , communication, and action .



Multiplexing



People live in a synchronous world. The clock is ticking for exactly a second. But the way tasks are organized has a crazy effect on the result. It's all about planning.



Synchronous scheduling



Typical (synchronous) planning involves the simultaneous mass start of tasks. This in itself is not scary, but the overall speed is limited by the speed of the slowest element. Any delay spreads along the pipeline, since each stage completely depends on the previous one.





Example 1



Here we see a flow of software development with three terminals and synchronous scheduling. To complete the development, you need to complete tasks A, B, and C. Given the planning method and the queue, a nine-hour cycle is required to complete the work. The system is well suited for atomic tasks, but is very slow in other projects, since it involves very rare deployments.



Asynchronous scheduling



Asynchronous planning involves dividing tasks into a maximum number of smaller tasks with the most frequent release of “minimally viable changes” (MVC). The method is based on the hypothesis that a more frequent release of minimal changes will help to better measure success and respond to negative feedback as quickly as possible. It also allows you to better control the distribution of resources, because at the same time we perform more tasks (reduced size).





Example 2



Dividing tasks A, B and C (A1, A2, A3, B1, etc.), we tripled the frequency of deployments. After nine hours, we can have as many ready-made functions, but multiplexing with asynchronous distribution allows you to check the result - and roll back or change the next steps. We reduced the iteration time to one third of the original.



This technique allows us to multiplex tasks, combining them to get results faster.



Communication



Good communication is the key to the success of any system (person or machine).



There are many types of communication: email, instant messaging, voice call, video call, or even “let's go have some coffee.” Each of them has a completely different effect on performance, and choosing the right one is as important for the pipeline as choosing a task.



Synchronous communication



We are by nature more prone to synchronous communication, it is simpler and more comfortable.



A minimum of two are usually involved in a conversation. It occurs in different formats:





This is all excellent if the issue is impossible or difficult to discuss in an asynchronous format. For example, a performance review, discussion of a strategy, an interview, a one-on-one conversation.



Most meetings can be replaced with correct documentation, well-written emails or messages.



In general, meetings are the most expensive tool in the company, use it correctly.



In the third example, two developers are working on their own tasks and must complete tasks A, B and C before the deployment:





Example 3



Pretty typical situation. Both developers were distracted for some time by a discussion of the technical specifications, and soon a meeting on what they should do next.



This is clearly not the best option for using synchronous communications. We see that interruptions delayed all work and the deployment did not take place.



The performance of such a conveyor is clearly not uniform, and it can not be called high.



Asynchronous communication



Asynchronous communication gives independence. She is trying to ensure that the task and its consequences do not depend on who planned or completed it.



Asynchronous communication provides some commonly recognized best practices, such as:





Example 4 with the same two developers and tasks, but asynchronous communication.





Example 4



In this example, communication is done through messaging and well-written documentation. Even if messaging is extended over time, the impact on the workflow is negligible and often gives better performance.



But why?



People do not transition very well from a state of full concentration on task A to full concentration on task B (as shown in the following figure). For example, when you are deeply immersed in a book and you are distracted by something, you will need time to return to the text.



In example 5, we see a diagram where the time and performance of the backend developer, which is distracted twice, are plotted along the axes: first, the frontend developer asks about the payload of the API request, and then the newcomer to the team asks for help with setting up the project database locally.





Example 5



The backend developer spent some time focusing on the current task (1), then went into a state of concentration (2), where his super-creative and powerful brain works most efficiently. Then he is distracted, and he spends some time communicating with the front-end developer (3), then to return to task (1) again. Unfortunately, when the developer focused again (2), he was again distracted (3).



If you read to this place, I’m sure that all of this is very familiar to you.



The key is the concept of flow (2). Wikipedia definition :



In positive psychology, the state of flow is a mental state in which a person performing an activity is completely immersed in a feeling of energetic concentration, full involvement and enjoyment of the activity process. In essence, the flow is characterized by a complete absorption of attention, and the resulting loss of a sense of space and time.


If focusing alone is difficult, getting into the flow is even more difficult. The better you are focused, the higher the probability of getting into the stream, but if you have problems maintaining concentration, forget about the stream.



Asynchronous communication is extremely important here, as it protects the time and concentration of each employee, reducing meaningless distractions. When you communicate asynchronously, these types of interrupts are much less common. Increases time for deep work and the likelihood of flow reaching.



Act



This is the last factor in switching to asynchronous mode. The point is not in the procedures, but in relation to yourself as a professional and your professional goals.



It is often found that the task is not prepared, the processes are not planned, the responsible people do not get in touch, etc. In such circumstances, successful teams do the work, even if they have to redo it and adapt it later, but do not spend time “waiting”.



“Always act by default” is a mantra that we continue to repeat at Remote. This means that if you need to do something and no one can help or indicate what to do next, then use common sense and make your own choice.



Imagine that there are three tasks, of which only two are well described, so you need to wait for the product manager to accurately determine the requirements.





Example 6



In this example, the first developer takes an action by default, and the second one expects by default. The first took some other task, albeit not so important. The second is waiting for the manager to help describe the requirements for such a task.



This is a conditional example, and I would like to say that it is exaggerated, but no. A very common situation.



If you really need help with the next task and you just can’t find anything else, well, it’s better to use this time for personal good, for example, going to the gym, taking a walk with a dog or watching an episode of your favorite series (yes, even during the working day )



Of course, some tasks are very subtle, and if you are not sure, you can pick up something else. It's not about ignoring risk, but about taking responsibility in a controlled way.



Summary



Asynchronous operation is a way to organize work with less interruptions and higher efficiency, based on several ideas:






All Articles