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 1Aqui 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 2Dividindo 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 3Situaçã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 4Neste 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 5O 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 6Neste 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.