JavaScript só é difícil para quem começa do fim
JavaScript só é difícil para quem começa do fim.
Há poucos anos, desenvolver web apps era muito fácil, por exemplo, usávamos PHP (ou qualquer outra linguagem server side, como Python ou Ruby), alguns ifs e fors e renderizávamos HTML facilmente. Só precisávamos conhecer HTML, CSS e uma linguagem server side.
Vamos voltar no tempo e falar um pouco desse passado.
Em algum momento no passado, você decidiu construir um website. Descobriu que precisava aprender HTML.
Você aprendeu HTML rapidamente, porém queria deixá-lo mais bonito, então aprendeu CSS.
Seu primeiro site com HTML e CSS
Depois de algum tempo, você decidiu que queria tornar seu site mais dinâmico, com opção para cadastro, login, etc. Então decidiu aprender PHP.
Aprendeu PHP e criou várias funcionalidades legais para o site. Aí, a coisa ficou mais séria, e você começou a criar vários projetos e a ganhar dinheiro com isso.
Depois de algum tempo usando PHP (ou qualquer outra linguagem server side), você percebeu que precisava abstrair alguns conceitos, conceitos genéricos, como a conexão ao banco de dados ou gerenciamento de models, para economizar tempo e reutilizar em vários projetos.
Você criou um repositório chamado utils ou packages e, sempre que precisava utilizar uma abstração, você a copiava e colava no projeto correspondente.
Logo, isso ficou insustentável porque você precisava enviar correções e adicionar features em cada abstração, porém existiam diversas cópias em diversos projetos. Numa rápida pesquisa no Google, você descobriu que existia um gerenciador de pacotes que resolvia seu problema!
🎉🎉👏🏻👏🏻. Seu primeiro gerenciador de pacotes.
Com o gerenciador de pacotes, você conseguia corrigir bugs e adicionar features num só lugar e atualizar todos os projetos sem muito trabalho.
Abstrações escritas, pacotes gerenciados. Sobrou mais tempo e você decidiu pegar novos projetos para ganhar mais dinheiro.
Sua agenda ficou mais apertada, a abstração que gerencia conexões com diferentes bancos de dados cresceu muito, e você não tinha mais tempo para se dedicar a corrigir bugs, então procurou um projeto open source que possuía uma solução mais madura para o problema e que tinha uma comunidade ativa para corrigir bugs e adicionar features com frequência.
🎉🎉👏🏻👏🏻. Sua primeira biblioteca. Você economizou tanto tempo e gostou tanto da solução que encontrou, que procurou outras bibliotecas open source para resolver outros problemas que você tinha.
Depois de alguns meses você conseguiu parar de usar a maioria das abstrações que escreveu porque encontrou soluções melhores para os problemas que você tinha.
Um belo dia, após horas jogando Tibia e Counter Strike, seu melhor amigo disse que também queria aprender a desenvolver web apps.
Como você já passou por diversos problemas, sabia como resolvê-los e era um bom amigo (e espero que ainda seja), você enviou por MSN uma lista com 10 tecnologias para seu amigo estudar.
Seu amigo olhou a lista e achou muito difícil aprender tudo aquilo, então, ele preferiu desistir.
Como você queria um parceiro de desenvolvimento, explicou para ele que, na verdade, não precisava aprender tudo de uma vez. Ele poderia começar do básico e ir, lentamente, para o avançado, porque não há como aprender tudo da noite para o dia.
Seu amigo aceitou a sugestão, começou do início, foi evoluindo aos poucos e, assim como você, se tornou um ótimo desenvolvedor. ~~Hoje em dia, ele está usando Angular 2, e você parou de falar com ele.~~
Voltando ao presente...
Perceberam? Ter de aprender várias tecnologias não é exclusivo do JavaScript.
Como, hoje em dia, JavaScript é a linguagem mais usada no mundo, é natural que ela possua um ecossistema gigante e que evolua muito depressa. Isso não quer dizer que você precisa aprender esse ecossistema inteiro.
Toda biblioteca foi criada pra resolver um determinado problema. Se você não tem o problema que a biblioteca resolve, você não precisa da biblioteca.
Não fique desesperado achando que tem que aprender todo o ecossistema do JavaScript, na verdade, os melhores programadores são os que mantêm seus projetos simples e fáceis de entender. Você pode dominar várias tecnologias, mas só deve as usar quando realmente necessário.
Muitos programadores adicionam bibliotecas sem nem mesmo precisar, apenas porque elas são famosas. Se você não tem um problema, você não precisa resolvê-lo.
Aprenda a identificar o problema, procurar uma solução dentro das bibliotecas ou tecnologias que você já usa e, se for realmente necessário, incluir uma nova biblioteca.
Não se esqueça de aprender a usar de verdade sua linguagem principal. Aprenda todas as funcionalidades e técnicas possíveis antes de recorrer a uma biblioteca terceira.