Effective Programming: More Than Writing Code

1559_thumbComo programador que sou, dedico boa parte do meu tempo escrevendo para um computador e tentando me aperfeiçoar nisto. No entanto, isto não é tudo que se espera de mim como profissional. Grande parte do meu trabalho não está relacionada ao código que escrevo. Por mais que me tornar um escritor de código melhor seja essencial para o meu trabalho, existem outros pontos tão essenciais quanto (ou mais) e é disto que Effective Programming: More Than Writing Code se trata.

Este ebook é um apanhado de posts do famoso blog Coding Horror de Jeff Atwood  — um dos meus blogs favoritos, devo admitir — é comercializado pela hyperink por justos US$ 2,99, e você ainda pode enviar para os amigos de graça no momento da compra! Claro que tudo isso é possível porque a “editora” sabe que você já tem esse conteúdo gratuitamente, mas acredite, só o trabalho de separar e organizar estes posts já vale mais do que o simbólico preço.

O Coding Horror é um blog publicado desde sempre 2004 e embora eu até já conhecesse alguns dos posts no livro, a maioria foi inédita para mim. Eu recomendo muito a leitura, mas se você não estiver planejando comprar, considero os seguintes posts altamente interessantes:

I Repeat: Do Not Listen to Your Users: Muito perceptível no dia-a-dia. Ouvir cegamente seu usuário chega a ser frustrante, mas isto não significa que devemos ignorá-lo.

Listen to Your Community, But Don’t Let Them Tell You What to Do: Sobre como receber o feedback da comunidade ao redor do seu software ou projeto.

Low-Fi Usability Testing: “You don’t know if your application truly works until you’ve performed usability tests on it with actual users.”.

I Pity The Fool Who Doesn’t Write Unit Tests: “Whenever you are tempted to type something into a print statement or a debugger expression, write it as a test instead.”

The Ultimate Unit Test Failure: Seu usuário não liga muito para sua cobertura de testes de 100%.

Meetings: Where Work Goes to Die: Me fez fazer a minha “lição de casa” antes das reuniões do trabalho.

Sharpening the Saw: “Sharpening the saw is shorthand for anything you do that isn’t programming, necessarily, but (theoretically) makes you a better programmer.”

Como o próprio título do livro já diz, eu aprendi mais do que escrever um código melhor.

Introdução à Arquitetura e Design de Software

Em virtude dos projetos em que eu estava envolvido, decidi aprender um pouco mais sobre Java. É comum no meu dia-a-dia escrever algumas linhas de código nessa linguagem — normalmente acompanhado por alguém com mais experiência do que eu. Foi exatamente um desses programadores mais experientes, o Thiago Caiubi, que me indicou o livro “Introdução à Arquitetura e Design de Software — Uma visão sobre a Plataforma Java”. Excelente indicação, por sinal.

Me lembro de ter ouvido um colega de faculdade dizer que uma das partes de se aprender uma nova linguagem é entrar no “eco-sistema” dela. Um grande acerto do livro é começar exatamente por este ponto. O capítulo 1 — A plataforma java — nos introduz ao glossário da linguagem, nos explica como a linguagem tem evoluído e mostra como funciona o sistema de especificações com a tal “burocracia”  em se incluir uma funcionalidade na plataforma. Embora seja um livro focado em uma tecnologia, fiquei impressionado com o grau de imparcialidade apresentado. Foi muito bom ver que nenhuma das ferramentas é apresentada como “a solução definitiva para o problema X” (nem mesmo o próprio Java). Os autores se esforçaram para apresentar pontos a favor e contra cada tecnologia, assim como possíveis casos de uso.

O livro se faz valer também por suas referências. Pausei a leitura várias vezes para poder lê-las e refletir com calma. Essas pausas, no entanto, se tornaram um pouco incômodas com o tempo. Porque as referências ficam listadas todas no final do livro (NBR 14724, ou parecido). Aliás, por que não colocá-las no rodapé da página?

Como a própria descrição já diz, o objetivo deste livro não é te ensinar a linguagem e sim te introduzir ao pensamento arquitetural, e de design, de software que utiliza a plataforma Java nos dias de hoje. Isso faz com que o livro aborde temas como frameworks, REST, conceitos de orientação a objetos, dentre outros. Ainda assim, enriquece estes tópicos mais “comuns” com a experiência dos autores — Não necessariamente recomendando algo, mas estimulando seu raciocínio.

Visto que a última vez que li um livro de Java foi em 2008 — durante a minha faculdade — este livro me ajudou a me atualizar com o desenvolvimento Java desta década e estudar conceitos de arquitetura e design. Não sei se o livro gerará tanto interesse aos que já tem mais experiência com a linguagem, mas acho bem possível que ele te leve a uma reflexão.