Os benefícios do TDD que vão além do código
Como desenvolvedores de software, nos deparamos constantemente com a tarefa de solucionar problemas e construir novas soluções por meio do código. Com isso, o tempo todo há algo para fazer e, em geral, mesmo as pequenas coisas são uma sequência de vários passos para fazer as coisas.
Isso levanta perguntas importantes: por onde começamos? Qual tarefa devemos priorizar ? Como podemos organizar efetivamente nossos pensamentos para maximizar a produtividade e manter o controle sobre o fluxo de desenvolvimento?
Uma das melhores opções para resolver esse problema é usar o TDD. A prática de TDD não é sobre testes ou cobertura, pode ser uma das coisas que você ganha ao usar isso, mas esse não é o ponto principal, se você pensa que TDD é apenas sobre testes você entendeu mal o real significado.
O TDD pode ser um guia para desenvolver as regras de negócios necessárias. Quando usamos o TDD pensando em cenários e abstrações ao invés de testes e coberturas podemos ter muitos benefícios que não são apenas relacionados ao código, mas também benefícios até para nossa saúde mental.
Aqui estão alguns benefícios que você pode obter usando a prática de TDD:
Os cenários servem como guias valiosos
Sempre temos alguns comportamentos e cenários para implementar e a melhor maneira de começar a implementar é definir um cenário esperado que te force a pensar em uma perspectiva diferente porque você precisa imaginar qual é a melhor entrada e saída para a abstração que você está construindo. Isso é realmente poderoso porque você começa a pensar em regras de negócios e abstração em vez de detalhes de implementação e, quanto mais nos distanciarmos dos pequenos detalhes do código, podemos obter uma melhor visão do todo. Quando começamos a desenvolver algo, não devemos ser guiados por “como” podemos fazer, mas “o que” precisamos, porque pensar em um alto nível de abstração pode te colocar em uma posição de engenheiro de software com uma visão externa ao invés de um desenvolvedor focado apenas em código e sintaxe.
Você tem um feedback constante
Às vezes é difícil saber se as funcionalidades que estamos construindo estão funcionando corretamente e não recebemos o feedback do status até terminarmos. Quando usamos o TDD pode ser um alívio porque podemos dividir a feature em pequenas partes e usar os cenários como guia. Para cada etapa do processo, obtemos o feedback (RED, GREEN, REFACTOR), o que é bom para o mecanismo de recompensa do nosso cérebro.
Pode te ajudar com sua ansiedade
Quase todos os desenvolvedores ficam ansiosos quando precisam construir algo. É bem comum, queremos fazer as coisas para conseguir outra tarefa e assim por diante, mas isso não é saudável e o TDD pode te ajudar nisso. Quando definimos que vamos começar com um cenário e temos um feedback constante isso se torna uma boa forma de trabalhar.
Usar o TDD te dá a sensação de que você está no controle e também sabe que o que está construindo está funcionando.
Você pode melhorar o seu software sempre que quiser
À medida que evoluímos com o tempo, nossas versões anteriores se tornam impulsos para uma melhor versão nossa. É natural refletir sobre nosso design de software e visualizar soluções melhores em comparação com nosso trabalho anterior. No entanto, sem a prática do TDD, fazer mudanças torna-se difícil e propenso a resultados desastrosos.
O TDD capacita os desenvolvedores a adotar mudanças constantes e aprimorar seu design de código a qualquer momento. Ao aderir à "regra do escoteiro" de deixar o código mais limpo do que o encontramos, o TDD permite uma mentalidade de melhoria contínua. Essa liberdade de fazer mudanças nos dá uma sensação gratificante de controle, especialmente quando nos permite desafiar o status “quo” e lutar por melhores soluções.
No vídeo da conferência de Venkat Subramaniam, "Refactor your language knowledge portfolio - we are what we can code", ele oferece insights profundos sobre como a linguagem de programação que usamos molda nossos pensamentos e como nosso ambiente influencia nosso crescimento como desenvolvedores de software. Isso leva à reflexão sobre como práticas, princípios e processos de software podem impactar nossas vidas como um todo. Se não adotarmos boas práticas que garantam o comportamento esperado de nossos sistemas e negligenciarmos as mudanças necessárias, somos forçados a aceitar o status “quo”. Essa aceitação pode permear nossas vidas pessoais, limitando nosso potencial de crescimento e melhoria.
Você pode dividir o problema em pequenas etapas
Em vez de tentar lidar com todas as tarefas simultaneamente, o TDD incentiva um fluxo de trabalho mais sistemático e eficiente. Seguindo os princípios do TDD, você pode aprimorar seu processo de desenvolvimento e criar ciclos pequenos e simples. Isso está de acordo com a famosa citação de Júlio César, "Dividir para conquistar", que enfatiza o poder de dividir problemas maiores em problemas menores e mais administráveis. Adotar o TDD não apenas ajuda você a priorizar e focar nas features mais importantes, mas também promove uma mentalidade essencialista, permitindo que você crie soluções robustas passo a passo.
Agradecimentos
Esta publicação sobre os benefícios e a percepção do TDD não é um estudo científico. Todas as informações, percepções e opiniões são baseadas em minha experiência diária com esta prática.
Gostaria de agradecer a Marcelo Torres e Kassio Santana, que são pessoas incríveis, por toda a ajuda e apoio durante o processo de escrita. Sou muito feliz por ter vocês em minha vida.
Referências:
Nas referências, deixarei todos que foi importante para consolidar o conceito e o valor da prática do TDD em minha vida.
- Dave Farley - https://www.youtube.com/@ContinuousDelivery
- Otavio Lemos - https://www.youtube.com/@otaviolemos
- Dev Eficiente - https://www.youtube.com/@DevEficiente
- Vídeo do Venkat Subramaniam citado - https://youtu.be/zajUPJI19ZQ