Se eu tivesse que escolher apenas um livro como leitura obrigatória de todo programador, eu escolheria “O Programador Pragmático”. Sem hesitar um segundo. Esse livro é simplesmente muito bom.

O Programador Pragmático: De Aprendiz a Mestre é um livro de engenharia de software de autoria de Andrew Hunt e David Thomas, publicado originalmente em Outubro de 1999. O livro é organizado em capítulos curtos e auto-contidos, que podem ser lidos em qualquer ordem. Cada capítulo apresenta dicas (há 70 no total) que oferecem conselhos em diversos tópicos, tais como, estimativas, testes, debugging, como prototipar, como se comunicar de maneira eficaz, boas práticas no uso de exceções, e muito mais.

Cada capítulo também tem excercícios e/ou desafios. Qual a diferneça? Todos os excercícios têm respostas, e você pode encontrá-las no apêndice ao final do livro. Os desafios, por outro lado, não possuem necessariamente uma resposta certa. Eles foram feitos de maneira a te fazer pensar, refletir e (adivinha!) desafiar a si próprio e ao jeito que você está acostumado a fazer as coisas.

Uma coisa que eu gosto muito nesse livro é que ele é muito prático. É claro que a teoria tem o seu valor e seu lugar, e eu pessoalmente acredito que muitos programadores têm lacunas em seu conhecimento dos fundamentos da Ciência da Computação, e isso acaba prejudicando a nossa área. Dito isso, eu acho incrível que dois programadores tomaram o tempo de traduzir os seus anos de experiência e conhecimento em um livro que vai direto ao ponto com conselhos muito práticos que você consegue colocar em uso imediatamente.

Outro ponto que merece destaque é o fato de que esse livro é muito fácil e divertido de ser lido. Os capítulos e seções são bem curtos, o que proporciona um ritmo agradável. Ele também possui um ótimo senso de humor. Não do tipo que faz você rir histericamente, mas sim aquele que te deixa confortável, como se o livro fosse uma conversa.

Mas eu acho que a coisa que eu mais gosto a respeito de “O Progamador Pragmático” é que ele não é realmente focado em código, ou preso a alguma tecnologia específica, ou ferramentas específicas. Claro, ele tem sua parcela de trechos de código (principalmente Java e C/C++). Sim, ele menciona algumas ferramentas ou aplicações específicas. Mas na maior parte, esse livro é sobre uma mentalidade. Um jeito específico de pensar, uma maneira de abordar problemas e desafios. Quando essa mentalidade, essa “filosofia pragmática”, estiver realmente enraizada na sua maneira de pensar, você será capaz de aplicá-la a diversas áreas da sua vida profissional, não apenas codifição. E eu acho que essa é realmente a maior força desse livro. Caso ele fosse focado em ferramentas ou alguma linguagem específica, eu provavelmente não estaria escrevendo sobre ele agora, quase 17 anos depois.

Alguns contras

Claro, agora que eu já elogiei bastante esse livro, vou falar um pouco sobre os pontos negativos dele. E olha, pra ser honesto, não é tão fácil achar coisas pra criticar nele não, viu? Mas se tem algo que eu penso que a maioria dos leitores concordaria, é que certos trechos do livro estão claramente datados.

Tipo, dá um tempo. Já são quase duas décadas. É incrível um livro sobre desenvolvimento de software permanecer influente por tanto tempo. É claro que pelo menos algumas partes têm que estar desatualizadas. Por exemplo, uma das dicas é “sempre use controle de versão”. Hoje em dia, controle de versão é algo que tomamos por garantido, qualquer desenvolvedor que se preze conhece o Github, então chega a ser engraçado ler essa recomendação. É igual quando você assiste o vídeo do Steve Jobs apresentando o primeiro iPhone, e você vê o público alucinado por causa das funcionalidades do aparelho, que podem não ser grande coisa para os padrões de hoje, mas eram incríveis naquela época. (Sim, eu sei que existem empresas por aí na qual os desenvolvedores nem ao menos sabem que existe controle de versão. Minha dica é: se você trabalha em um lugar assim, tente ensiná-los sobre controle de versão. Se der certo, ótimo! Se não, saia daí o mais rápido possível.)

Em outro trecho do livro, eles explicam uma ténica chamado “desenvolvimento tracer-bullet”. O nome pode ser um pouco estranho, mas quando eles começam a explicação, você pode perceber que é bastante parecido com o conceito de “mínimo produto viável”, que você talvez tenha aprendido nas metodologias ágeis.

O que não deveria ser uma empresa, já que Andy Thomas e Dave Hunt estavam entre os signatários do já lendário Manifesto Para Desenvolvimento Ágil de Software.

Conclusão

É por isso que é difícil achar algo pra criticar nesse livro. Veja bem, ele pode parecer um pouco datado hoje em dia, mas isso é justamente porque os autores estavam a frente de seu tempo. Algumas coisas que são comuns e óbvias hoje, eram totalmente não-óbvias e até mesmo contra-intuitivas quase 20 anos atrás. Foi preciso muita visão para escrever esse livro, e é por causa disso, e tudo o mais acima, que eu acredito que esse livro é uma leitura digna do seu tempo.