Trabalhar de forma assíncrona



O trabalho assíncrono é uma maneira de organizar um processo quando as tarefas são executadas em um pipeline. Isso permite controlar totalmente o processo e ajustá-lo por si mesmo. Ao mesmo tempo, pressão e estresse são reduzidos a zero e as tarefas são executadas com rapidez e habilidade.

Um transportador suave e rápido fornece exatamente a quantidade certa de produção, todos os seus estágios são equilibrados em termos de eficiência e velocidade. Evita desperdício de tempo ou recursos, seguindo a metodologia da 3M do Sistema Toyota de Produção.

A operação assíncrona se baseia em três princípios básicos: multiplexação , comunicação e ação .

Multiplexação


As pessoas vivem em um mundo síncrono. O relógio está correndo exatamente por um segundo. Mas a maneira como você organiza tarefas tem um efeito maluco no resultado. É tudo sobre planejamento.

Planejamento síncrono


O planejamento típico (síncrono) envolve o início em massa simultâneo de tarefas. Isso por si só não é assustador, mas a velocidade geral é limitada pela velocidade do elemento mais lento. Qualquer atraso se espalha ao longo do pipeline, pois cada estágio depende completamente do anterior.


Exemplo 1

Aqui vemos um fluxo de desenvolvimento de software com três terminais e programação síncrona. Para concluir o desenvolvimento, é necessário concluir as tarefas A, B e C. Dado o método de planejamento e a fila, é necessário um ciclo de nove horas para concluir o trabalho. O sistema é adequado para tarefas atômicas, mas é muito lento em outros projetos, pois envolve implantações muito raras.

Planejamento assíncrono


O planejamento assíncrono envolve a divisão de tarefas em um número máximo de tarefas menores, com a liberação mais frequente de "alterações minimamente viáveis" (MVC). O método baseia-se na hipótese de que uma liberação mais frequente de alterações mínimas ajudará a medir melhor o sucesso e responder a feedback negativo o mais rápido possível. Também permite controlar melhor a distribuição de recursos, porque ao mesmo tempo realizamos mais tarefas (tamanho reduzido).


Exemplo 2

Dividindo as tarefas A, B e C (A1, A2, A3, B1 etc.), triplicamos a frequência das implantações. Após nove horas, podemos ter tantas funções prontas, mas a multiplexação com distribuição assíncrona permite verificar o resultado - e reverter ou alterar as próximas etapas. Reduzimos o tempo de iteração para um terço do original.

Essa técnica nos permite multiplexar tarefas, combinando-as para obter resultados mais rapidamente.

Comunicação


Uma boa comunicação é a chave para o sucesso de qualquer sistema (pessoa ou máquina).

Existem muitos tipos de comunicação: email, mensagens instantâneas, chamadas de voz, videochamadas ou até "vamos tomar um café". Cada um deles tem um efeito completamente diferente no desempenho, e escolher o caminho certo é tão importante para o pipeline quanto escolher uma tarefa.

Comunicação síncrona


Por natureza, somos mais propensos à comunicação síncrona, é mais simples e mais confortável.

Um mínimo de dois geralmente está envolvido em uma conversa. Ocorre em diferentes formatos:

  • Reunião
  • Chamada de Vídeo / Voz
  • Coffee break
  • Conversa no jantar
  • Enviando uma mensagem aguardando uma resposta imediata

Tudo isso é excelente se o problema for impossível ou difícil de discutir em um formato assíncrono. Por exemplo, uma análise de desempenho, discussão de uma estratégia, uma entrevista, uma conversa individual.

A maioria das reuniões pode ser substituída por documentação correta, e-mails ou mensagens bem escritos.

Em geral, as reuniões são a ferramenta mais cara da empresa, use-a corretamente.

No terceiro exemplo, dois desenvolvedores estão trabalhando em suas próprias tarefas e devem concluir as tarefas A, B e C antes da implantação:


Exemplo 3

Situação bastante típica. Ambos os desenvolvedores ficaram distraídos por algum tempo com uma discussão das especificações técnicas e logo uma reunião sobre o que deveriam fazer em seguida.

Essa claramente não é a melhor opção para o uso de comunicações síncronas. Vimos que as interrupções atrasaram todo o trabalho e a implantação não ocorreu.

O desempenho de um transportador desse tipo não é claramente uniforme e não pode ser chamado de alto.

Comunicação assíncrona


A comunicação assíncrona dá independência. Ela está tentando garantir que a tarefa e suas conseqüências não dependam de quem a planejou ou concluiu.

A comunicação assíncrona fornece algumas práticas recomendadas comumente reconhecidas, como:

  • Boa documentação
  • Instruções escritas
  • Mensagens em vez de chamadas
  • Respeito ao trabalho sem distrações

Exemplo 4 com os mesmos dois desenvolvedores e tarefas, mas comunicação assíncrona.


Exemplo 4

Neste exemplo, a comunicação é feita por meio de mensagens e documentação bem escrita. Mesmo que as mensagens sejam estendidas ao longo do tempo, o impacto no fluxo de trabalho é desprezível e geralmente oferece melhor desempenho.

Mas porque?


As pessoas não passam muito bem de um estado de concentração total na tarefa A para concentração total na tarefa B (conforme mostrado na figura a seguir). Por exemplo, quando você está profundamente imerso em um livro e o distrai, levará um tempo para voltar ao texto.

No exemplo 5, vemos um diagrama em que o tempo e o desempenho do desenvolvedor de back - end, que são distraídos duas vezes, são plotados ao longo dos eixos: primeiro, o desenvolvedor de front-end pergunta sobre a carga útil da solicitação de API e, em seguida, o recém-chegado à equipe pede ajuda para configurar o banco de dados do projeto localmente.


Exemplo 5

O desenvolvedor de back-end passou algum tempo concentrando-se na tarefa atual (1) e depois entrou em um estado de concentração (2), onde seu cérebro super-criativo e poderoso trabalha com mais eficiência. Então ele se distrai e passa algum tempo se comunicando com o desenvolvedor de front-end (3) e, em seguida, retornando à tarefa (1) novamente. Infelizmente, quando o desenvolvedor focou novamente (2), ele ficou novamente distraído (3).

Se você ler neste lugar, tenho certeza de que tudo isso é muito familiar para você.

A chave é o conceito de fluxo (2). Definição da Wikipedia :

Na psicologia positiva, o estado do fluxo é um estado mental no qual uma pessoa que realiza uma atividade é completamente imersa em um sentimento de concentração energética, envolvimento total e prazer no processo da atividade. Em essência, o fluxo é caracterizado por uma absorção completa da atenção e a perda resultante de uma sensação de espaço e tempo.

Se focar sozinho é difícil, entrar no fluxo é ainda mais difícil. Quanto melhor você estiver focado, maior a probabilidade de entrar no fluxo, mas se você tiver problemas para manter a concentração, esqueça o fluxo.

A comunicação assíncrona é extremamente importante aqui, pois protege o tempo e a concentração de cada funcionário, reduzindo as distrações sem sentido. Quando você se comunica de forma assíncrona, esses tipos de interrupções são muito menos comuns. Aumenta o tempo para trabalhos profundos e a probabilidade de atingir um fluxo.

Acção


Este é o último fator na mudança para o modo assíncrono. O ponto não está nos procedimentos, mas em relação a si mesmo como profissional e aos objetivos profissionais.

Frequentemente, verifica-se que a tarefa não está preparada, os processos não são planejados, as pessoas responsáveis ​​não entram em contato etc. Em tais circunstâncias, as equipes bem-sucedidas fazem o trabalho, mesmo que posteriormente tenham que refazê-lo e adaptá-lo, mas não percam tempo "esperando".

"Sempre aja por padrão" é um mantra que continuamos repetindo no Remote. Isso significa que, se você precisar fazer algo e ninguém puder ajudar ou indicar o que fazer a seguir, use o bom senso e faça sua própria escolha.

Imagine que existem três tarefas, das quais apenas duas são bem descritas, portanto, é necessário aguardar que o gerente de produto determine com precisão os requisitos.


Exemplo 6

Neste exemplo, o primeiro desenvolvedor adota como padrão a ação e o segundo adota como espera. A primeira teve outra tarefa, embora não tão importante. O segundo está aguardando o gerente ajudar a descrever os requisitos para essa tarefa.

Este é um exemplo condicional, e eu gostaria de dizer que é exagerado, mas não. Uma situação muito comum.

Se você realmente precisa de ajuda com a próxima tarefa e não consegue encontrar mais nada, é melhor usar esse tempo para o bem pessoal, por exemplo, ir à academia, passear com o cachorro ou assistir a um episódio de sua série favorita (sim, mesmo durante o dia de trabalho) )

Obviamente, algumas tarefas são muito sutis e, se você não tiver certeza, pode escolher outra coisa. Não se trata de ignorar riscos, mas de assumir responsabilidade de maneira controlada.

Sumário


O trabalho assíncrono é uma maneira de organizar o trabalho com menos interrupções e maior eficiência, com base em várias idéias:

  • A operação assíncrona deve ser usada com mais frequência do que a operação síncrona, fornece melhor gerenciamento de recursos, reduz a perda de tempo e, portanto, otimiza o desempenho.
  • A multiplexação de tarefas de tamanho reduzido permite concluir tarefas mais rapidamente, testar hipóteses mais rapidamente e obter sucesso com maior confiança.
  • Na maioria dos casos, a comunicação deve ser assíncrona, exceto nos casos que exigem explicitamente sincronização. Isso permite que as pessoas se concentrem mais em suas tarefas e apliquem as melhores práticas, como documentação e elaboração de procedimentos adequados.
  • Sempre agir por padrão (dentro do razoável) ajuda toda a equipe a se mover mais rapidamente, reduzir a perda de tempo e aumentar o envolvimento de cada funcionário em uma causa comum.

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


All Articles