Já observei que a maior parte dos programadores com algum tempo de estrada tende a se acomodar, acreditando que o que quer que fosse estado da arte (ou apenas popular) quando a pessoa era ultra-jovem é a verdade absoluta e inenarrável. Não sei se por preguiça, insegurança, ou cansaço, mas muita gente, depois de um tempo, se recusa a a aprender qualquer tecnologia, paradigma ou modo de trabalho novo, em muitos casos se afastando da programação porque já “aprendeu tudo”.
Robert C. Martin é tiozão, assim como eu. Talvez um tiquinho mais: ele até adotou o nick “Uncle Bob”, me fazendo pensar se eu não vou virar o “Tio Chester” logo, logo. Mas, também como eu, ele não é acomodado. Muito pelo contrário: entre seu tempo de consultor, desenvolvedor e autor, ele foi um dos criadores do Manifesto Ágil, e, mais recentemente, ajudou a consolidar o termo “Artesanato de Software” (Software Craftsmanship).
Artesanato, de fato, descreve o dia-a-dia da imensa maioria dos programadores profissionais de forma muito mais completa do que as metáforas tradicionais que giram em torno de engenharia ou administração, reaproximando o ofício das suas raízes na computação, mas levando em conta o aspecto de criação, qualidade e atenção ao ser humano que está na “outra ponta”. Uncle Bob postula com muita propriedade que a adoção de uma política de aprendizado constante e qualidade total é fundamental para um profissional digno do nome – em um bate-papo com o Fábio Akita ele compara o desenvolvimento de software com a medicina, ilustrando muito bem a questão.
O Clean Code é um guia sobre um aspecto fundamental da atividade: a criação de código limpo. Mesmo tendo bastante experiência e escrevendo código que eu julgava muito limpo e bem documentado, o livro me mostrou diversas maneiras de escrever código que seja mais fácil de ler e manter. O autor adverte: você pode não concordar com todas as sugestões dele, e provavelmente vai discordar de forma veemente de uma ou duas (no meu caso: deixe meus parâmetros booleanos em paz :-P). Mas o espírito é que conta.
Ele vai a fundo em uma série de aspectos – quase todos são possivlemente pequenos detalhes, mas a atenção ao conjunto cria programas que dão orgulho para quem faz e alívio para quem mantém. Os exemplos todos são baseados em Java, mas compreensíveis para qualquer um que tenha conhecimentos básicos de orientação a objeto, e quase todos são aplicáveis a qualquer linguagem.
Comportamentos enraizados no Java (ex.: JavaDoc, encapsulamento via getters/setters) são analisados com a mente limpa, na tentativa de separar o mito da realidade no que diz respeito aos benefícios reais (e possíveis malefícios) de cada um deles. Eu certamente revi meus conceitos quanto à maneira de nomear e dividir os artefatos dentro do meu software, e recomendo o livro para qualquer um que leve a programação a sério, independente da experiência ou área de atuação.
Li a versão Kindle que, apesar de não usar formatação monoespaçada para o código, foi bem confortável de ler, até mesmo no iPod Touch (meu companheiro do ônibus/metrô). Existe uma versão nacional (“Código Limpo”), mas não sei quão boa é a tradução. Qualquer que seja o formato ou idioma, só não recomendo a leitura se para você programação é só um day job, ou se você acha que o seu jeito é o jeito certo, e todo o resto é modinha. Neste caso, eu torço muito para que a gente se encontre na rua ou na balada, mas jamais em um projeto de software.