“Quem não conhece línguas estrangeiras, não sabe nada da própria.” - Goethe

Se a primeira linguagem em que você começou a programar foi JavaScript, parabéns, acredito que você fez uma excelente escolha. Veja 7 Razões para aprender JavaScript.

Entretanto, existem alguns fundamentos de desenvolvimento de software que são melhores abordados por autores com experiência em Java, por exemplo. Isso aconteceu porque Java era uma linguagem muito mais madura antes da explosão do Ruby on Rails por volta de 2008 e da popularização do AJAX em torno de 2005 que teve papel fundamental para que outros desenvolvedores levassem a sério o JavaScript.

Sendo assim, assuntos como padrões de projeto, desenvolvimento ágil, TDD(Test Driven Development), DDD(Domain Driven Development) e refatoração tiveram suas origens em experiências de autores como Kent Beck, Martin Fowler, Robert C.Martin e a Gangue Dos Quatro(Gang Of Four - Autores que documentaram a utilização de padrões, através do livro Design Patterns: Elements of Reusable Object-Oriented Software).

JavaScript tem suas próprias lendas, porém a contribuição dos autores mencionados não tem abrangência apenas técnica, mas também profissional. O mundo do desenvolvimento de software será eternamente grato a eles. Por causa deles, qualquer pessoa com o passar do tempo agora pode alcançar o que eles tiveram que aprender "na marra". Eles desenvolveram métodos para criação de software que se sustenta no longo prazo e graças a isso é possível replicar o processo e treinar mais rapidamente profissionais.

Por conta disso, não me arrependo de maneira alguma de ter começado minha trajetória como desenvolvedor, programando em C#. Acredito que essa escolha acelerou o meu contato com os excelentes livros que recomendo a seguir, mesmo que certamente eu me deparasse com eles, caso houvesse começado com JavaScript. Alguns deles não li completamente, outros li em etapas à medida que ia me certificando que tinha alcançado a maturidade necessária para melhor absorvê-los. Aqui está a ordem que recomendo, com base unicamente em minha experiência de análise de reviews da Amazon, necessidade do trabalho e tentativa e erro:

1. Código Limpo - Robert C Martin

Esse foi o primeiro livro que li sobre boas práticas de programação e os primeiros capítulos são muito úteis pra qualquer desenvolvedor que ainda não possui muita experiência.

2. Design Patterns - Head First

Não gosto de livros da série Head First. Não gosto de nenhum dos que li, o formato não me agrada. Apesar disso, eu tenho que dar o braço a torcer a este. Ele cumpre o papel a que se destina, explicar um assunto um tanto difícil para iniciantes de maneira leve, fazendo você fixar bem o conteúdo.

Depois dele, comprei o famoso livro Design Patterns: Elements of Reusable Object-Oriented Software. Li apenas os três primeiros capítulos, mas posso garantir que a abordagem é densa e voltada mais para referência. É um livro que deve ficar na cabeceira, mas deve aguardar o momento certo de ser lido por completo para em seguida ser utilizado à medida que a demanda surgir.

3. Agile Software Development, Principles, Patterns, and Practices - Robert C.Martin

Gostei muito desse livro, pois é prático e faz uma apresentação clara dos princípios SOLID, aplicando ainda padrões de projeto a situações reais.

Li esse livro ao mesmo tempo que acompanhava os cursos de SOLID e Design Patterns no PluralSight. Aprender a mesma coisa, através de fontes diferentes, é uma das técnicas de aprendizado comprovadamente mais eficazes e é o que a leitura conjunta desses livros fazem, conectar pontos para facilitar a construção de uma memória de longo prazo.

4. Refactoring - Martin Fowler

Esse livro é um guia prático de como adquirir o excelente hábito de alterar o código pra melhor sem alterar o seu comportamento observável, isto é, refatorar. O que o autor faz é sugerir uma metodologia de como e quando fazê-lo. É um livro que só vale a leitura uma vez que se tenha lido os outros três, pois tem um conteúdo mais pesado, apesar de também ser repleto de exemplos. O que de uma forma ou de outra este livro faz é transformar algo feio em bonito. O que os outros três livros fazem é ajudá-lo a criar algo bonito.

Atualmente estou trabalhando com um software com um código legado de cerca de 1.000.000(um milhão) de linhas, mas o livro é excelente mesmo para aqueles que estão fazendo criando um projeto do zero e com 100% de certeza precisarão refatorá-lo uma hora ou outra.

5. Outras Recomendações

Esses, infelizmente, ainda não li, porém são referências na programação, independente da linguagem:

  1. Working Effectively With Legacy Code - Michael C Feathers

  2. Patterns of Enterprise Application Architecture - Martin Fowler

  3. Test Driven Development: By Example - Kent Beck

  4. Code Complete - Steve McConell

Conclusão

Embora o tema deste artigo não tenha sido exatamente o que aprender com outras linguagens, mas sim o que aprender sobre desenvolvimento de software com autores de outras linguagens, ler, pelo menos, os quatro principais livros aqui recomendados farão de qualquer desenvolvedor um melhor profissional. Esses são autores especialistas com mais de 10.000 horas de experiência naquilo que escrevem. Não estamos falando de principiantes aqui, mas de referências mundiais.

Ler esses livros também vai lhe introduzir a conceitos ainda inexistentes em JavaScript, como o de interface, e lhe demonstrar como algumas linguagens se ajustam a alguns padrões melhor que outras.

Acredito que o próximo passo para um profissional familiarizado com melhores práticas, padrões de projeto e metodologia de refatoração é conhecer a metodologia mais utilizada pelas grandes empresas de software: Test Driven Development (TDD) E é exatamente isso que vamos procurar abordar em alguns de nossos próximos artigos. Mantendo, claro, o foco em JavaScript.

Sobre o Autor

Johel Carvalho

Johel Carvalho

Engenheiro Civil formado pelo Instituto Militar de Engenharia (IME-RJ) em Dezembro de 2012. Largou a profissão pelo desenvolvimento web, começando com C# e sendo atualmente aficionado por JavaScript.

comments powered by Disqus