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:
- Sugestão : um evento, hora, lugar ou pensamento que desencadeia o hábito
- Desejo : como interpretamos a sugestão, o que estamos tentando resolver
- Rotina : as ações que tomamos para alcançar um resultado
- Recompensa : o que ganhamos por termos realizado a rotina
Vamos ver alguns exemplos:
- Entre em um quarto e note que está escuro por dentro ( sugestão )
- Você quer ver para encontrar essas chaves ( desejo )
- Encontre o interruptor e ligue a luz ( rotina )
- 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:
- Acendeu as luzes e finalmente encontrou as chaves
- Ninguém mais está dentro e eu não deveria desperdiçar dinheiro
- Apague as luzes quando eu sair da sala
- 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:
- Descobrir se seu código ainda está funcionando como esperado?
- 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!):
- escrever um teste e vê-lo falhar
- para ter certeza de que toda a funcionalidade funciona como esperado
- escrever código suficiente para fazer isso passar
- 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?