Skip to main content

blog do gabriel

Ansiedade na programação

Table of Contents

# Introdução

Minha ansiedade com o trabalho varia de tarefa para tarefa. Ela aparece quando eu estou travado há um tempo na implementação de uma tarefa e isso pode ter muitas causas. Listo algumas que percebi:

  • Falta de conhecimento do sistema. Eu não conheço a seção de interesse do sistema o suficiente para estar confortável para resolver o problema em questão;
  • Tarefa mal especificada. A demanda chegou em desenvolvimento mal especificada, então fico indo e voltando com a implementação por causa dos equívocos e problemas que vou descobrindo;
  • Qual o orçamento? Existem muitas formas de resolver um problema, com nível de completude bem variado e eu não tenho contexto ou poder suficiente para decidir qual delas é a mais adequada para o orçamento disponível;
  • Já estou ansioso. Fiquei assim por outras tarefas e esse sentimento tomou conta de mim.
  • Estou cansado e está difícil de concentrar e pensar (privação de sono crônica, estresse externo, etc).

As causas listadas podem aparecer juntas, claro. Inclusive, todas elas ao mesmo tempo. Essas combinações e as variações de intensidade de cada uma delas geram situações únicas, o que confunde a mente dispersa. Mas, com prática, dá para entender e resolver mais rápido o que está acontecendo.

# O que identifiquei

## Falta de conhecimento do sistema

Acontece geralmente quando vou fazer a manutenção de alguma parte do sistema que não conheço e não está documentada. Nesses casos, o modelo mental da seção é nulo ou muito insuficiente para fazer a tarefa. A falta de certeza e progresso podem te deixar perdido, inseguro e ansioso.

O jeito mais fácil de se resolver essa questão é pedir ajuda a alguém com expertise na seção de código de interesse para construir esse modelo mental. Essa pessoa pode dar uma visão geral do funcionamento do código e acelerar bastante as coisas pra você. Mesmo que essa visão ainda tenha algumas lacunas, fica muito mais fácil preenchê-las agora explorando o código, lendo documentação das ferramentas e algoritmos.

Lembre-se de tomar nota para não ter que manter muita informação na cabeça e para poder consultar depois. Faça diagramas se necessário, incluindo fluxogramas, máquinas de estado, linhas do tempo e diagramas de relação de entidade.

Caso não haja quem possa te guiar, você terá que criar o modelo mental sozinho através da leitura de código e exploração do sistema. Nessa situação, o custo cognitivo é maior, então use e abuse dos artifícios mencionados anteriormente. Anote, desenhe, etc. Revise o modelo com colegas para ver se alguém percebe algo que parece errado.

## Tarefa mal especificada

Os requisitos mínimos de especificação de uma tarefa para ela começar a ser desenvolvida podem variar bastante com o contexto. Há momentos em que tem muita coisa acontecendo e há uma cobrança para as coisas serem feitas mais rápido do que seriam se seguíssemos o processo. Há tarefas que soam mais simples que o normal, o que pode seduzir tanto o time de produto como o de desenvolvimento a não tomar muito tempo para pensar sobre o problema, pulando etapas do processo. E muitas vezes dá certo. Porém, há casos complexos em que a chance de se acertar de primeira (ou segunda, ou terceira) é baixa.

Negligenciar o desenho de tarefas complexas na etapa de produto e ser displicente na modelagem para desenvolvimento traz muita incerteza para a implementação. É difícil ter bons critérios para tomar uma decisão ou pensar em boas soluções. E essa incerteza, unida aos equívocos feitos no caminho e do tempo maior que se leva para entregar a tarefa, abre as portas para a vozinha crítica e uma insegurança acerca de sua própria capacidade.

Percebeu essa incerteza generalizada ou paralisia em certos momentos? Volte para a etapa de modelagem. Releia a definição de produto, destrinche melhor o problema, anote os furos, as dúvidas e inconsistências para poder discutí-los com quem tem poder de decisão. Consolide a modelagem antes de voltar à implementação.

Pensando em como evitar que essa situação aconteça novamente, não pular etapas do processo seria o ideal, mas como é comum que aconteça, minha proposta é que se tenha as etapas e critérios de produto e desenvolvimento determinados e que seja uma escolha consciente e transparente pular alguma delas. Mas digo com confiança: é bobagem pulá-las por acreditar que uma tarefa é simples demais para precisar de X ou Y. É justamente nessas etapas de especificação que a pessoa vai entender o trabalho.

Faça, sim, os protótipos de alta fidelidade, considere os casos de erro, os fluxos de interação com a interface, escreva ADRs, desenhe os fluxogramas que fizerem sentido, escreva bons testes automatizados. Deixar de fazer alguma etapa dá uma falsa impressão de ter ganhado tempo. Mas as idas e vindas da tarefa até chegar na solução desejada por não as ter feito são uma perda muito maior.

## Qual o orçamento?

Existem muitas formas de resolver um problema, com nível de completude bem variado (tanto no tratamento de casos quanto na qualidade da estrutura de código entregue).

Quando houver uma disparidade grande entre as possíveis soluções, vale perguntar para as partes interessadas (produto, marketing, quem for) as expectativas de entrega, assim como negociar mais tempo para alguma mudança maior que julgue importante. Suas incertezas vão embora e sua decisão é bem comunicada.

## Já estou ansioso

Se nos identificamos e alimentamos a ansiedade e insegurança que aparecem por causa de uma situação, elas não se restringirão a essa situação somente. Esses sentimentos permearão as situações seguintes também.

Tomar consciência que está se sentindo assim para poder agir sobre pode ser difícil quando não se tem costume de fazê-lo. Às vezes, nos falta até vocabulário. Mas é o primeiro passo, e, com o tempo, você vai ficando bom no negócio.

Estando consciente da situação, ações simples podem nos ajudar tremendamente:

  • Meditações simples de consciência plena, como os de ancoragem da atenção na respiração, te ajudam a desassociar dos pensamentos repetitivos, diminuir a frequência deles e criar espaço mental;
  • Dar uma volta no quarteirão, andar de bicicleta, levar o cachorro para passear ou ir a academia são outras formas de quebrar o ciclo de pensamento;
  • Chás calmantes e cápsulas de passiflora (é do maracujá) são bons paliativos;
  • Escrever sobre o que está havendo talvez seja necessário para dar mais clareza em situações mais complexas.

É contraintuitivo mas o tempo que se usa para recuperar a consciência de si e do momento em questão vai te economizar um tempão lá na frente. Estar ansioso e inseguro é muito desgastante e consome demais nossa mente e corpo. Pelo nosso bem e do que estamos produzindo, vale a pena gastar o tempo que for necessário. Já houve caso em que precisei de uma sessão de uma hora de meditação para voltar para mim. Interromper esse ciclo vicioso impacta positivamente vários dias para frente.

## Estou cansado

Quando estou cansado, costumo tomar um café ou ouvir uma música mais agitada para me ajudar a pegar no tranco. Há situações, no entanto, que o cansaço é demais e os estimulantes não são suficientes. Se a tarefa atual demandar muito e você não estiver rendendo bem o bastante, tire um cochilo mais prolongado (estou falando de 1h aqui). Seu dia inteiro depois desse cochilo vai ser mais produtivo.

# Conclusão

Faz parte da jornada de autoconhecimento entender o que nos provoca pensamentos e sentimentos para poder lidar com as situações de um jeito melhor pra gente.

No caso da ansiedade ao programar, percebi algumas situações. E o legal de cada uma delas é que posso começar a resolvê-las eu mesmo, ainda que precise do input dos outros em alguns casos.

A prática de identificar as situações nos deixa cada vez melhores nisso, nos dando mais controle do efeito que os pensamentos ansiosos tem sobre nós, o que melhora tanto o nosso bem-estar, como também nos permite ter uma relação mais gostosa com o nosso trabalho.