25 de novembro de 2014 André Luis Celestino Carreira, Desenvolvimento de Software, Utilidades
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!
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 de programação 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-los na próxima vez. Além disso, a cada repetição, descobrimos novas formas de simplificar ou facilitar a atividade.
Praticar um Kata pode ser uma atividade individual. Por exemplo, implemente um código e deixe-o funcional hoje. Amanhã, volte 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 aumentar a flexibilidade e reduzir o acoplamento?
No dia seguinte, volte novamente no código e continue pensando em como aprimorá-lo. Prossiga com essa rotina até encontrar uma solução absoluta. 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 na sua próxima 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, eu estava implementando 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 legível. 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. Por exemplo, 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.
Publicado originalmente em Blog Subrotina
Fernando M. Pinheiro novembro 26, 2014 às 11:14 am
Muito interessante. Acho oportuno também expor que existem grupos que se dedicam justamente à técnicas de programação com uma ênfase em testes, ou Test Driven Development (TDD).
Vale a pena se informar na sua região sobre os "Coding Dojos", onde o propósito é justamente este. Vale lembrar que vários autores citam o "refactoring", onde você deve melhorar seu código sem alterar a funcionalidade, e para isto é muito importante que você possua testes unitários para seu apoio.
Em Florianópolis, vários Coding Dojos são organizados pelo grupo "Coding Dojo Floripa" (Google Groups) e também pelo "Vilaj Coworking" (http://www.vilaj.com.br/encontros/).
André Luis Celestino novembro 28, 2014 às 7:21 pm
Muito bom o seu comentário, Fernando! Participar de Coding Dojos periodicamente proporciona um aperfeiçoamento considerável na capacidade de construir e implementar soluções.
Realmente faltou mencionar o afamado TDD no artigo, Essa técnica é um dos alicerces para a melhoria contínua e deve ser praticada, com frequência, nos exercícios de Kata e Kaizen!
Fernando, muito obrigado pela informação sobre o grupo Vilaj em Florianópolis. Eu não conhecia este grupo e me interessei pelos eventos que eles promovem. Vou acompanhá-los!