Artigo original: Is Vanilla JavaScript worth learning? Absolutely.
O propósito deste artigo é enfatizar a importância dos fundamentos JavaScript para todo programador front-end. Eu irei te dizer porque você deve ter um bom conhecimento do puro (Vanilla) JavaScript. Isto significa JavaScript sem nenhum framework ou biblioteca adicional.
Eu também irei mencionar alguns recursos que me ajudaram a aprender o básico.
Outra razão por trás desse post é que muitos aspirantes a desenvolvedor web tendem a não aprender os principais conceitos JavaScript como hoisting, closures, ou protótipos. Eles vão diretamente para os frameworks mais populares como React ou Angular 2. Eu irei te mostrar porque esta abordagem não é a mais conveniente.
Então, existe alguma razão pela qual você deveria se importar em aprender Vanilla JS?
É difícil se tornar um(a) bom(a) desenvolvedor(a) sem conhecer o principal da linguagem.
Assim como você precisa entender os princípios fundamentais da lei antes de poder entrar em uma área específica da lei. Esta comparação é puramente acidental. 😉
Eu entendo que a maioria dos aspirantes a desenvolvedor web querem ser contratados o quanto antes. Eu queria isso também.
Parece muito mais fácil fazer um curso intensivo sobre o básico de JavaScript, procurar por um framework extravagante, desenvolver um app de ToDo List (deixar um filhote morrer), enviar para o GitHub, e começar a procurar um emprego.
Não me entenda mal. Eu não estou tendenciando contra frameworks JavaScript de maneira nenhuma. É examente o oposto. Muitos deles te ajudam a escrever código mais legível e de fácil manutenção. Eles te deixam escrever código mais abstrato que é mais fácil de debugar.
Mas o ecossistema JavaScript está evoluindo muito rápido. Novos frameworks estão sendo criados. Novas funcionalidades estão sendo adicionadas as existentes. E o mais importante, muitos dos frameworks mais populares hoje serão substituídos, assim como Angular 1.
Em tais circunstâncias, você ainda acha que o conhecimento de algum framework JavaScript em particular é o suficiente para um desenvolvedor web?
Ou é melhor entender como a linguagem em que todas essas bibliotecas e frameworks são baseados funciona por debaixo dos panos?
Sim, você está certo, é a segunda opção.
Se você possui um sólido conhecimento dos fundamentos do JavaScript, a única coisa de que você precisa para se familiarizar ao começar a trabalhar com um novo framework é a sintaxe dele. As regras básicas serão as mesmas já que debaixo de todas as camadas de abstração, ainda é apenas JavaScript.
Se seu conhecimento é limitado a um único framework JavaScript, você terá dificuldades em aprender um novo. Diferentes frameworks são normalmente baseados em um conjunto diferente de princípios do JavaScript. A longo prazo você irá passar mais tempo tentando entender vários frameworks e debugando o código que você escreveu neles.
Todos os frameworks e bibliotecas JavaScript são inevitavelmente baseados no Vanilla.
Isto deve convencer qualquer um que o conhecimento de JavaScript puro é necessário a longo prazo. É um pré-requisito para qualquer desenvolvedor(a) de sucesso, especialmente para aqueles que trabalham desenvolvendo no ecossistema JavaScript.
Há não muito tempo atrás, eu olhei atrás para minha jornada de advogado a desenvolvedor web. Já faz 18 meses desde que escrevi minha primeira função JavaScript, e meu 10º mês trabalhando profissionalmente como um desenvolvedor front-end.
Eu ainda lembro como foi desafiador para mim descobrir o jeito certo de aprender JavaScript, considerando que eu não tinha nenhuma experiência anterior com programação. Eu tentei (e ainda estou tentado) muitas maneiras diferentes de aprender de forma eficiente. Algumas são mais recompensadoras, outras menos.
Mais importante, eu não posso expressar o quão importante foi ter dado ênfase ao aprendizado JavaScript puro desde o começo. Frameworks vieram depois.
No momento, estou trabalhando com React e Redux. Mesmo assim, muitas vezes aparece um problema que eu consigo resolver graças ao meu conhecimento do JavaScript puro. Estes bugs seriam muito mais desafiadores de se resolver apenas com o meu conhecimento de um framework em particular.
Aprender React ou Angular 2 não irá te ensinar que objetos são passados por referência ou como closures funcionam. Tentar entender estes conceitos por trás das abstrações dos frameworks é muito mais difícil. Isto torna conceitos simples de JavaScript mais difíceis de entender.
Além disso, se você está trabalhando com JSX (React, Vue, Inferno) ou TypeScript (Angular 2), você tem outra camada de abstração no topo disso tudo.
Se você quer entender como estes frameworks funcionam por debaixo dos panos, você precisa saber primeiro como JavaScript funciona.
Você pode testar seu conhecimento de JavaScript puro lendo o código fonte do seu framework favorito. Isso não irá apenas te dar uma ideia de como funciona por debaixo dos panos, irá te ensinar muito sobre a lógica, o que você pode utilizar em seu próprio código. Você verá que as funções dos frameworks que parecem fazer muita mágica na sua aplicação são apenas composições de conceitos básicos de JavaScript.
A pergunta que você pode estar se fazendo agora é "quais são bons recursos que podem me ajudar a adquirir conhecimento em Vanilla JavaScript?".
Existem vários cursos e livros sobre JavaScript e seus frameworks. Ainda assim, apenas alguns deles tentam te ensinar Vanilla JavaScript de forma abrangente. Muitos deles são especializados em uma tecnologia JavaScript em particular.
Mas ainda assim há alguns bons...
Eloquente JavaScript irá te ensinar não apenas o básico de JavaScript, mas também o básico de programação em geral. Se você já é um(a) programador(a) avançado(a), este livro irá te prover uma perspectiva sobre JavaScript e seus conceitos principais.
Outro ótimo recurso é a série de livros Você Não Sabe JavaScript de Kyle Simpson (o link aponta para a versão traduzida). Suas explicações sobre conceitos avançados de JavaScript são amigáveis para iniciantes e ele os aprofunda. Os títulos dos livros te darão uma dica sobre o que você irá aprender. "Iniciando", "Escopos & Closures", "this & Prototipagem de Objetos", "Tipos e Gramática", "Async e Performance", "ES6 e Além". Existe também um novo sétimo livro sobre programação funcional em JavaScript.
Uma das ótimas coisas sobre JavaScript Eloquente e Você Não Sabe JavaScript é que você pode tê-los de graça (cheque os links fornecidos). Mas se você achá-los úteis, não esqueça de apoiar os autores comprando seus livros.
Se você é uma pessoa que gosta de vídeo aulas, você pode assistir os vídeos online do Kyle. Eu acho que a melhor coisa que você pode fazer é assisti-los em conjunto de seus livros, já que os tópicos são os mesmos. No entanto, estes cursos são pagos.
Outro curso online que eu acho útil é Javascript: Understanding the Weird Parts de Anthony Alicea. Ele explica o que acontece debaixo dos panos de uma forma acessível. Ele aborda conceitos avançados como herança prototípica, programação funcional e cadeias de escopo.
Se você investir seu precioso tempo aprendendo Vanilla JS, você não vai se arrepender. Ele não apenas contém a palavra 'baunilha', mas terá um impacto benéfico nas suas habilidades de programação.
Pra mim, a maior vantagem, é que aprender JavaScript puro vai ter muito mais valor ao longo prazo do que investir tempo em um framework em particular. Frameworks são apenas atalhos. Por baixo dos panos, é tudo JavaScript.
Você verá por si mesmo em uma situação onde o framework que você está usando tiver um comportamento inesperado. Nesse caso, você será forçado a investigar esse bug ao olhar o código fonte. Eu já disse que apesar de muitos frameworks não possuirem uma documentação decente, eles tem um código bem complexo? Mas, sem problemas, você com certeza já dedicou algum tempo aprendendo Vanilla JS. Ou ainda não?
Você deve se lembrar de apenas uma coisa deste artigo:
Tenha sempre em mente que conhecimento de Vanilla JS vai te ajudar a se tornar um desenvolver muito melhor. Ponto.
Se você gostou desse artigo, dê a ele algumas palmas no Medium. Eu ficarei muito agradecido.
Artigo original: Is Vanilla JavaScript worth learning? Absolutely.
Vejo você no Twitter 😊 David Kopal (@coding_lawyer) | Twitter