Quando vamos à academia, exercitamos nossos músculos para que eles tenham um maior desempenho, certo? Pensando da mesma forma, também devemos exercitar o nosso cérebro para que a nossa produtividade seja aprimorada, principalmente para nós, desenvolvedores, que demandamos raciocÃnio lógico. Este artigo apresenta dois exercÃcios relacionados à programação que podem ser interessantes para essa finalidade. Confira!
Kata e Kaizen
Certo dia, no meu trabalho, após codificar uma funcionalidade, olhei bem para o meu código recém escrito e pensei: “Será que não existe uma forma melhor de implementar essa funcionalidade?”. Haviam várias linhas de código e algumas delas me pareciam desnecessárias. Além disso, a quantidade de variáveis também não me agradava. Neste ponto, eu tinha duas opções: limpar o código ou reescrevê-lo por completo. Essas duas opções, resumidamente, correspondem aos exercÃcios de Kata e Kaizen!
Estes são nomes de atividades que consistem em refletir novas formas de escrever um código, buscando aprimorar a expressividade, legibilidade e desempenho, ao mesmo tempo que o desenvolvedor aperfeiçoa a sua experiência com programação de software.
Kaizen e Kata possuem muitas caracterÃsticas semelhantes, já que ambos são mencionados no Lean Thinking. A maior diferença entre eles é que, enquanto Kata é uma rotina, Kaizen é um evento, no qual pode ser inserido em Coding Dojos. Mesmo assim, o objetivo é o mesmo: melhoria contÃnua. Na proporção em que o desenvolvedor pratica mais estes exercÃcios, maior fica a sua percepção lógica no código.
Na verdade, como qualquer outra atividade que realizamos no nosso dia a dia, a repetição é o que leva à perfeição. Geralmente aprendemos com os erros que cometemos anteriormente e evitamos repeti-lo na próxima vez. Além disso, a cada repetição, descobrimos novas formas de simplificar ou facilitar a atividade.
Kata em prática
Praticar um Kata pode ser uma atividade individual. Por exemplo, implemente um código e deixe-o funcional hoje. Amanhã, retorne neste mesmo código e pense em novas formas de escrevê-lo, mas, desta vez, com novos aperfeiçoamentos. Para isso, faça as seguintes perguntas:
– Como posso melhorar esse código? Declarar menos variáveis e aumentar o desempenho? Utilizar mais variáveis e aumentar a legibilidade? Criar tipos enumerados, constantes, encapsular dados? Diminuir a complexidade ciclomática com polimorfismo? Criar heranças e compartilhar responsabilidades? Utilizar classes abstratas e Interfaces para reduzir o acoplamento?
No dia seguinte, volte novamente ao código e continue pensando em como aprimorá-lo. Prossiga com essa rotina até encontrar uma solução plenamente satisfatória. Embora não seja tão perceptÃvel, este processo de aprimoramento exercitará o seu cérebro, desenvolvendo uma capacidade de elaborar melhores soluções nas suas próximas atividades de codificação, e, acredite, quando você for trabalhar em uma nova implementação, lembrará do Kata! Ou então, vice-versa, ao programar uma nova funcionalidade, você poderá se deparar com uma solução que pode ser adequada para o seu Kata! 🙂
Algumas vezes, praticamos alguns exercÃcios dessa natureza sem percebermos. Há algumas semanas, fui alocado para implementar um código com um grau relativamente alto de complexidade, que provavelmente demandaria várias linhas de código. Eu estava ciente de que não conseguiria implementá-lo, logo de primeira, de um modo perfeitamente satisfatório. Então, a primeira coisa que fiz foi fazê-lo funcionar e, em seguida, partir para a limpeza do código. A cada vez que eu revisava a minha codificação, encontrava uma porção de código que poderia ser reescrita. Isso é o que chamamos de “polir” o código.
Claro, estes exercÃcios não precisam ser necessariamente no local de trabalho. Se você deseja desenvolver a sua capacidade de programação, sugiro que estude por conta própria. Crie um projeto simples e trabalhe diariamente na codificação para melhorá-lo. Durante este processo de aperfeiçoamento, além de limpezas e refatorações, considere também a possibilidade de incorporar Design Patterns, padrões de arquitetura e técnicas de Clean Code. Eu garanto que, ao final deste processo, você notará uma grande diferença na sua habilidade em programação.
Boa sorte, pessoal!
Abraço!