Construindo um hábito de teste que adere

Alvaro Fernando Lara Blocked Desbloquear Seguir Seguindo 2 de janeiro Foto por rawpixel no Unsplash

Sou fascinado pelo conceito de hábitos, que o dicionário Oxford define como:

Uma tendência ou prática regular ou regular, especialmente aquela que é difícil de desistir.

A razão para os hábitos é aquela que tem a ver com a nossa capacidade de processar informações. Quando nos encontramos com um novo problema, é necessário um esforço mental para encontrar uma solução para isso.

Uma vez que vimos um problema se repetir e encontramos uma maneira satisfatória de lidar com ele, o cérebro começa a automatizá-lo, de modo que a reação não requer esforço consciente.

Esse comportamento automatizado significa que podemos reagir a situações particulares com muito mais rapidez e aparentemente sem esforço, e liberar nossa consciência para lidar com novos problemas. Aqui é onde está o poder (e perigo) dos hábitos.

A mecânica de como os hábitos funcionam normalmente é chamada de “loop de hábitos” e pode ser caracterizada por uma sequência composta de quatro partes:

  1. Sugestão : um evento, hora, lugar ou pensamento que desencadeia o hábito
  2. Desejo : como interpretamos a sugestão, o que estamos tentando resolver
  3. Rotina : as ações que tomamos para alcançar um resultado
  4. Recompensa : o que ganhamos por termos realizado a rotina

Vamos ver alguns exemplos:

  1. Entre em um quarto e note que está escuro por dentro ( sugestão )
  2. Você quer ver para encontrar essas chaves ( desejo )
  3. Encontre o interruptor e ligue a luz ( rotina )
  4. Mova-se para dentro da sala e encontre as chaves ( recompensa )

Nós associamos estar em um quarto escuro com as luzes acesas. Agora que meus pais particularmente encorajaram:

  1. Acendeu as luzes e finalmente encontrou as chaves
  2. Ninguém mais está dentro e eu não deveria desperdiçar dinheiro
  3. Apague as luzes quando eu sair da sala
  4. Ajudando a manter uma conta de baixa energia

Desta vez, a associação é quando saímos de um quarto e as luzes estão acesas, desligue-as quando você sair, se ninguém estiver dentro.

Por que construir um hábito de testar

Como mencionei anteriormente, a solução de um problema requer um esforço consciente, e os hábitos são uma maneira de automatizar esse esforço e liberar nosso cérebro para resolver novos problemas.

Então pense sobre isso por um momento, qual problema merece o máximo de sua mente consciente:

  1. Descobrir se seu código ainda está funcionando como esperado?
  2. Implementar esse fluxo de checkout para permitir que sua empresa ganhe dinheiro?

Se você acha que 2. é a resposta, então criar um hábito de teste é o caminho a percorrer.

Estruturando o hábito de testar

Precisamos voltar e olhar para o laço de hábito para entender quais são os componentes dele e como isso se encaixa em nosso trabalho diário. Haverá uma sugestão, desejo, rotina e recompensa.

Na maioria das empresas de software, haverá algum tipo de repositório de trabalho a ser feito, com tarefas prontas para serem escolhidas. Nossa sugestão para o hábito pode ser atribuir uma das tarefas a você.

O desejo é garantir que o novo recurso funcione como esperado e não se preocupar em quebrar os outros.

Uma rotina seria seguir práticas de Desenvolvimento Orientado a Testes como Red-Green-Refactor , que em si consistem em loops de hábitos (são hábitos até o fim!):

  1. escrever um teste e vê-lo falhar
  2. para ter certeza de que toda a funcionalidade funciona como esperado
  3. escrever código suficiente para fazer isso passar
  4. o sentimento de realização e progresso

A recompensa é um alto grau de confiança, temos um recurso de trabalho. Não só isso, mas também sabemos que não quebramos a funcionalidade dos outros.

Até agora isso parece simples, certo? Você começa com um mar de capital vermelho Fs:

Teste de rspec do Ruby falhando

E depois, lentamente, se transformar em uma linha ordenada de pontos verdes :

Passagem de teste Rubspecspec

Ou um colorido gato voando Nyan:

Créditos para mattsears / nyan-cat-formatter

O aspecto poderoso sobre essa prática é que ela combina duas coisas que nosso cérebro almeja:

  • feedback rápido
  • o sentimento de sucesso (e progresso)

Agora imagine uma pessoa passando por esses ciclos repetidamente a cada poucos minutos e depois de algumas horas se sentir como se tivesse alcançado algo grande e maior confiança de que o código funciona.

Acho que todos podemos concordar que esses dias são dias incríveis. Mas então, se isso é tão bom, por que nem todo o código em que trabalhamos tem testes?