Caelum | Ensino e Inovação - Cursos de Java, Scrum, Ruby on Rails


Livros: escolhendo a trindade do desenvolvedor Java

Por Guilherme Silveira em 22/09/06

Muitas pessoas costumam me perguntar se o livro X é bom, se o livro Y cobre bem Java EE, assim por diante. Alguns desses livros são super específicos de uma determinada tecnologia Java, como por exemplo Struts in Action que só aborda a versão 1.x.y do Struts. Em um curto espaço de tempo você vai acabar reciclando as folhas desses livros: ficarão desatualizados.

Na Caelum começamos a debater sobre quais livros importantes havíamos lidos e que ainda eram úteis, e queríamos muito que os outros que participavam da discussão também tivessem lido. A lista estava ficando muito grande quando resolvemos corta-la para apenas 3. Separamos então a trindade do desenvolvedor Java. O critério da escolha foi tentar achar uma intersecção dos livros considerados importantes por nós que todos saíssem satisfeitos. Repare que já são bem velhinhos:

  • Refactoring, Martin Fowler
  • Livro do cientista chefe da ThoughtWorks, a famosa empresa onde nosso amigo Carlos Villela trabalha. Um excelente catálogo das gambiarras (smells, mal cheiro) que acabam aparecendo no seu código e como você pode fazer para conserta-las de maneira sensata. Ok, você já sabia disso. Exemplos clássicos são o uso de herança apenas por preguiça, uso do switch em vez de polimorfismo, entre milhares. Uma pena o código não usar a conveção da Sun e estar lotado de underscores…

  • Effective Java, Joshua Bloch
  • Livro do ex bambambam da Sun (você pode encontrar o nome dele como @author das principais classes do Java SE), agora no Google. Aqui ele mostra como enfrentar os principais problemas e limitações da linguagem. Se você já programa a algum tempo sem dúvida alguma já passou por boa parte dos casos catalogados. Uma excelente leitura, além de simples pois cada caso é relatado em um texto bem curto. Entre os casos interessantes está o uso de factory methods, os problemas da herança e do protected, uso de coleções, objetos imutáveis e serialização.

  • Design Patterns, Erich Gamma et al
  • O clichê dos clichês não poderia estar fora da lista! Livro do atual líder do projeto Eclipse, entre outros. Compre! E ao contrário do que muitos fazem não saia lendo o catálogo dos patterns decorando-os, concentre-se em ler toda a primeira parte onde eles revelam duas regras de ouro da programação orientada a objetos: “Evite herança, prefira composição” e “Programe voltado a interfaces e não à implementação“. Infelizmente perdi minha cópia hard-cover em inglês, faz uma falta imensa na empresa.

Apesar disso, todos eles revelam sinais de sua idade. No Design Patterns, muita gente já considera Singleton como um antipattern (como discutido neste post). Mais ainda, alguns vão além, dizendo que se você precisou utilizar um design pattern, é provável que a sua linguagem não tenha um nível de abstração suficiente para suprir as suas necessidades. Na minha opinião, uma crítica válida.

No Refactoring e no Effective Java, muita coisa já não ocorre mais das formas descritas devido ao Java 5 (em especial com o uso de generics e enumerações), além de que vários códigos podem ser escritos de uma forma mais elegante.

Claro que eu não deixo de ler alguns livros bem técnicos. Os últimos dois que gostei muito foram Lucene in Action e Enterprise Java Beans 5th edition (este último é excelente). Ao contrário dos livros JSF in action e do Core JSF, livros os quais não achei que foram escritos de maneira a prender a atenção do leitor: joga-se muita especificação e conceitos, além de que não há uma ordem de aprendizado, parece mais um guia de referência. Sinceramente, não faz sentido algum explicar todos os passos de uma requisição JSF sem antes mostrar concretamente o objetivo e uso da tecnologia.

Ficaram de fora da lista Programming Pearls, Practices of an Agile Developer, The Pragmatic Programmer, The Practice of Programming entre outros gigantes. E você, tem algum livro que considere imprescindível para os desenvolvedores Java? Tem uma outra formação para a sua trindade?

  • Share/Bookmark

6 Comments »

  1. Um livro que na minha opinião não deveria faltar na biblioteca de NENHUM programador OO é Applying UML and Patterns do Craig Larman, por sua importantíssima explanação sobre padrões GRASP e outros princípios fundamentais de projeto OO, que na verdade são o fundamento e as motivações de praticamente todos patterns.

    Comment by João Paulo (neófito) — September 24, 2006 @ 11:05 pm

  2. As pessoas da Caelum que participaram dessa discussão poderiam postar aqui nos comentários os 5 melhores livros que sugeriram e ficaram fora da lista acima… com certeza muita coisa boa tem. =)

    Comment by Fernando Boaglio — September 25, 2006 @ 11:55 am

  3. Um livro que acho muito bom também para aprender os conceitos do paradigma OO e Java é o Thinking in Java de Bruce Eckel. Livro de leitura fácil, traz ao leitor conceitos de OOP com exemplos bastante práticos e úteis, além de disseminar as melhores práticas do desenvolvimento Java.

    Comment by Rafael Naufal — October 19, 2006 @ 10:38 am

  4. O EFFECTIVE JAVA PROGRAMMING LANGUAGE GUIDE ja esta na 2 edicao e contempla isso que voces falaram.

    Comment by Junior — March 27, 2008 @ 7:50 pm

  5. [...] está estendida e revista, para cobrir as grandes mudanças do Java 5. Esse, juntamente com outros dois livros (e atualmente incluiríamos também o The Mythical Man-month), são de extrema importância para [...]

    Pingback by » Effective Java: segunda edição » blog.caelum.com.br — July 25, 2008 @ 5:56 am

  6. Que fique aqui registrado, que adicionariamos mais dois livros bem populares entre o pessoal da Caelum: Pragmatic Programmer do Andrew Hunt e The Mythical Man-Month do Frederick Brooks.

    Comment by Paulo Silveira — July 29, 2009 @ 3:22 am

RSS feed for comments on this post. TrackBack URL

Leave a comment




Caelum | Ensino e Inovação
São Paulo: Rua Vergueiro, 3185, cj. 87, próximo ao Metrô Vila Mariana   |   Tel. (11) 5571-2751
Rio de Janeiro: Rua Senador Dantas, 80, cj. 307/308 - Centro   |   Tel. (21) 2220-4156 ou 2297-0033
Brasília: SCS Qd. 8 Bl. B-50, Sala 521 - Ed. Venâncio 2000   |   Tel. (61) 3039-4222