Esta é a primeira publicação de uma série de outras onde pretendo comentar sobre livros relacionados à programação de computadores, desenvolvimento de sistemas, engenharia de software e assuntos relacionados. Vou começar por um dos livros mais famosos: Código Limpo, de Robert Martin, do Uncle Bob.
O livro Código Limpo foi originalmente publicado em 2008 com o título Clean Code: A Handbook of Agile Software Craftsmanship. O conteúdo se tornou essencial no mundo do desenvolvimento de software, pois é amplamente respeitado e aceito, possuindo uma abordagem objetiva. Todos os princípios apresentados são vinculados a exemplos práticos e de fácil entedimento, possibilitando enxergar, em quase tudo, a validade das técnicas defendidas.
No primeiro capíulo, um parágrafo que chama a atenção é o que fala sobre o custo de ter um código confuso. Um software que cresce muito rapidamente sem o devido cuidado tende a ter seu crescimento cada vez mais retardado. O sistema começa a ficar confuso e cada adição de nova funcionalidade é feita com muitas remendos, reduzindo, e muito, a segurança nas entregas e aumentando o tempo necessário para que as pessoas possam entender o que está escrito lá.
A tendência é que a equipe comece a deixar sistemas desse tipo de lado. Chega um ponto onde o sistema antigo está tão ruim que a gerência autoriza criação de um novo, que, é claro, precisa ser construindo rapidamente para fazer tudo que o sistema antigo faz. E o ciclo se repete. As pessoas vão querer fazer parte da equipe que trabalha nesse novo sistema e pessoas novas são contratadas para trabalhar no sistema antigo. Mas as pessoas novas não entendem nada do sistema antigo, e tendem a adicionar ainda mais bagunça.
Do ponto de vista de quem escreve o código fonte, a culpa é nossa, e me incluo aqui, pois sou programar há algum tempo. Nosso trabalho é proteger a base de código fonte com todas as ferramentas disponíveis, da mesma forma que um gerente protege seus prazos e requisitos. Esse ecossistema, no entanto, não precisa ser apenas de conflito. Na verdade, esses dilemas são inerentes ao nosso trabalho. Prazos são importante, mas não serão cumpridos se a regra do sistema for a bagunça.
Assim, o livro é repleto de técnica, dicas e conceitos que podem minimizar alguns tipos de problemas, que tentam reduzir a bagunça. Para o criador da linguagem C++, Bjarne Stroustrup, um código precisa ser elegante e eficiente. O autor do livro Objected Oriented Analysis and Design with Applications defende que um código limpo precisa ser simples e direto e não pode confudir o programador (Tocantins inteiro). Nas próximas postagens, vou passear pelos pontos que acho mais interessantes.
O primeiro capítulo possui diversas comparações do nosso trabalho com arte. E não deixo de concordar. Meu amigo Leandro certa vez escreveu que construir um sistema é uma trabalho de artezanato. Embora possamos sentir o perfurme das ciências exatas no nosso trabalho, para mim, é impossível não dar ao nosso trabalho um grau de artezanato. Um problema pode ser resolvido de diversas maneiras diferentes para atender um mesmíssimo requisito, algumas soluções podem ser bagunçadas (o que queremos evitar), mas outras podem ser espetaculares e completamente diferentes uma das outras. A arte não é isso? Um artista coloca em sua obra emoção humana profunda com objetivo de comunicar sua percepção de mundo e de chamar atenção. Modestia à parte, me acho bem parecido com que eu tento fazer todos os dias no meu trabalho, espero que sem bagunça.
Até a próxima!