Travailler de manière asynchrone



Le travail asynchrone est une telle façon d'organiser un processus lorsque des tâches sont effectuées sur un pipeline. Cela vous permet de contrôler entièrement le processus et de le régler par vous-même. Dans le même temps, la pression et le stress sont réduits à zéro et les tâches sont effectuées rapidement et habilement.

Un convoyeur lisse et rapide donne exactement la bonne quantité de production, toutes ses étapes sont équilibrées en termes d'efficacité et de vitesse. Il évite de perdre du temps ou des ressources, suivant la méthodologie 3M du Toyota Production System.

Le fonctionnement asynchrone repose sur trois principes de base: le multiplexage , la communication et l' action .

Multiplexage


Les gens vivent dans un monde synchrone. L'horloge tourne pendant exactement une seconde. Mais la façon dont vous organisez les tâches a un effet fou sur le résultat. C'est une question de planification.

Planification synchrone


La planification type (synchrone) implique le démarrage simultané en masse des tâches. Cela en soi n'est pas effrayant, mais la vitesse globale est limitée par la vitesse de l'élément le plus lent. Tout retard se propage le long du pipeline, car chaque étape dépend complètement de la précédente.


Exemple 1

Nous voyons ici un flux de développement logiciel avec trois terminaux et une planification synchrone. Pour terminer le développement, vous devez effectuer les tâches A, B et C. Compte tenu de la méthode de planification et de la file d'attente, il faudra un cycle de neuf heures de travail pour terminer le travail. Le système est bien adapté aux tâches atomiques, mais est très lent dans d'autres projets, car il implique des déploiements très rares.

Planification asynchrone


La planification asynchrone implique de diviser les tâches en un nombre maximum de tâches plus petites avec la publication la plus fréquente de «changements minimalement viables» (MVC). La méthode est basée sur l'hypothèse qu'une libération plus fréquente de changements minimaux aidera à mieux mesurer le succès et à répondre aux commentaires négatifs le plus rapidement possible. Il vous permet également de mieux contrôler la répartition des ressources, car en même temps nous effectuons plus de tâches (taille réduite).


Exemple 2

En répartissant les tâches A, B et C (A1, A2, A3, B1, etc.), nous avons triplé la fréquence des déploiements. Après neuf heures, nous pouvons avoir autant de fonctions prêtes à l'emploi, mais le multiplexage avec distribution asynchrone vous permet de vérifier le résultat - et de revenir en arrière ou de modifier les étapes suivantes. Nous avons réduit le temps d'itération à un tiers de l'original.

Cette technique nous permet de multiplexer des tâches, en les combinant pour obtenir des résultats plus rapidement.

La communication


Une bonne communication est la clé du succès de tout système (personne ou machine).

Il existe de nombreux types de communication: e-mail, messagerie instantanée, appel vocal, appel vidéo ou même «allons prendre un café». Chacun d'eux a un effet complètement différent sur les performances, et choisir le bon est aussi important pour le pipeline que le choix d'une tâche.

Communication synchrone


Nous sommes par nature plus enclins à la communication synchrone, c'est plus simple et plus confortable.

Un minimum de deux sont généralement impliqués dans une conversation. Il se produit dans différents formats:

  • Rencontre
  • Appel vidéo / vocal
  • Pause café
  • Conversation au dîner
  • Envoi d'un message en attente d'une réponse immédiate

Tout cela est excellent si le problème est impossible ou difficile à discuter dans un format asynchrone. Par exemple, une évaluation des performances, une discussion sur une stratégie, une interview, une conversation en tête-à-tête.

La plupart des réunions peuvent être remplacées par une documentation correcte, des e-mails ou des messages bien écrits.

En général, les réunions sont l'outil le plus cher de l'entreprise, utilisez-le correctement.

Dans le troisième exemple, deux développeurs travaillent sur leurs propres tâches et doivent effectuer les tâches A, B et C avant le déploiement:


Exemple 3

Situation assez typique. Les deux développeurs ont été distraits pendant un certain temps par une discussion sur les spécifications techniques, et bientôt une réunion sur ce qu'ils devraient faire ensuite.

Ce n'est clairement pas la meilleure option pour utiliser les communications synchrones. On voit que les interruptions ont retardé tous les travaux et le déploiement n'a pas eu lieu.

Les performances d'un tel convoyeur ne sont clairement pas uniformes et ne peuvent pas être qualifiées de élevées.

Communication asynchrone


La communication asynchrone donne l'indépendance. Elle essaie de s'assurer que la tâche et ses conséquences ne dépendent pas de qui l'a planifiée ou achevée.

La communication asynchrone fournit certaines des meilleures pratiques généralement reconnues, telles que:

  • Bonne documentation
  • Instructions écrites
  • Messagerie au lieu d'appels
  • Respect du travail sans distractions

Exemple 4 avec les deux mêmes développeurs et tâches, mais communication asynchrone.


Exemple 4

Dans cet exemple, la communication se fait via la messagerie et une documentation bien écrite. Même si la messagerie est étendue dans le temps, l'impact sur le flux de travail est négligeable et donne souvent de meilleures performances.

Mais pourquoi?


Les gens ne passent pas très bien d'un état de pleine concentration sur la tâche A à une pleine concentration sur la tâche B (comme le montre la figure suivante). Par exemple, lorsque vous êtes profondément immergé dans un livre et vous distrait, il vous faudra un certain temps pour revenir au texte.

Dans l'exemple 5, nous voyons un diagramme où le temps et les performances du développeur backend, qui est distrait deux fois, sont tracés le long des axes: d'abord, le développeur frontend pose des questions sur la charge utile de la demande d'API, puis le nouveau venu dans l'équipe demande de l'aide pour configurer la base de données de projet localement.


Exemple 5

Le développeur principal a passé un certain temps à se concentrer sur la tâche actuelle (1), puis est entré dans un état de concentration (2), où son cerveau super créatif et puissant fonctionne le plus efficacement. Il est ensuite distrait et passe un peu de temps à communiquer avec le développeur frontal (3), puis à revenir à la tâche (1). Malheureusement, lorsque le développeur s'est à nouveau concentré (2), il a de nouveau été distrait (3).

Si vous lisez cet endroit, je suis sûr que tout cela vous est très familier.

La clé est le concept de flux (2). Définition Wikipédia :

En psychologie positive, l'état de flux est un état mental dans lequel une personne effectuant une activité est complètement immergée dans un sentiment de concentration énergétique, de pleine implication et de jouissance du processus d'activité. Essentiellement, le flux se caractérise par une absorption complète de l'attention et la perte qui en résulte d'un sentiment d'espace et de temps.

S'il est difficile de se concentrer seul, il est encore plus difficile d'entrer dans le courant. Mieux vous vous concentrez, plus la probabilité d'entrer dans le cours d'eau est élevée, mais si vous avez des problèmes pour maintenir votre concentration, oubliez le cours d'eau.

La communication asynchrone est extrêmement importante ici, car elle protège le temps et la concentration de chaque employé, réduisant les distractions inutiles. Lorsque vous communiquez de manière asynchrone, ces types d'interruptions sont beaucoup moins courants. Augmente le temps de travail en profondeur et la probabilité d'atteindre un flux.

Action


Il s'agit du dernier facteur de passage en mode asynchrone. L'important n'est pas dans les procédures, mais par rapport à soi-même en tant que professionnel et à ses objectifs professionnels.

On constate souvent que la tâche n'est pas préparée, que les processus ne sont pas planifiés, que les personnes responsables ne se mettent pas en contact, etc.

«Toujours agir par défaut» est un mantra que nous continuons à répéter à distance. Cela signifie que si vous devez faire quelque chose et que personne ne peut vous aider ou indiquer quoi faire ensuite, utilisez le bon sens et faites votre propre choix.

Imaginez qu'il existe trois tâches, dont seulement deux sont bien décrites, vous devez donc attendre que le chef de produit détermine avec précision les exigences.


Exemple 6

Dans cet exemple, le premier développeur prend une action par défaut et le second attend par défaut. Le premier a pris une autre tâche, quoique moins importante. La seconde attend que le gestionnaire aide à décrire les exigences d'une telle tâche.

Il s'agit d'un exemple conditionnel, et je voudrais dire qu'il est exagéré, mais non. Une situation très courante.

Si vous avez vraiment besoin d'aide pour la prochaine tâche et que vous ne trouvez rien d'autre, eh bien, il vaut mieux utiliser ce temps pour votre bien personnel, par exemple, allez au gymnase, promenez-vous avec le chien ou regardez un épisode de votre série préférée (oui, même pendant la journée de travail )

Bien sûr, certaines tâches sont très subtiles, et si vous n'êtes pas sûr, vous pouvez prendre autre chose. Il ne s'agit pas d'ignorer le risque, mais de prendre ses responsabilités de manière contrôlée.

Résumé


Le travail asynchrone est un moyen d'organiser le travail avec moins d'interruptions et plus d'efficacité, basé sur plusieurs idées:

  • Le fonctionnement asynchrone doit être utilisé plus souvent que le fonctionnement synchrone, il offre une meilleure gestion des ressources, réduit les pertes de temps et, par conséquent, optimise les performances.
  • Les tâches de multiplexage de taille réduite vous permettent d'accomplir des tâches plus rapidement, de tester des hypothèses plus rapidement et de réussir avec une plus grande confiance.
  • Dans la plupart des cas, la communication doit être asynchrone, sauf dans les cas qui nécessitent explicitement une synchronisation. Cela permet aux gens de se concentrer plus longtemps sur leurs tâches et d'appliquer les meilleures pratiques telles que la documentation et la rédaction des procédures appropriées.
  • Agir toujours par défaut (dans des limites raisonnables) permet à toute l'équipe d'avancer plus rapidement, de réduire les pertes de temps et d'augmenter l'implication de chaque employé dans une cause commune.

Source: https://habr.com/ru/post/fr473602/


All Articles