Por que aprender Angular 2 é tão doloroso?

Alguns meses atrás, decidi dar uma chance ao desenvolvimento web.. Angular 2 era novo na época, então decidi baixá-lo e comecei a construir um site. Para alguém que é originalmente um desenvolvedor Java, essa foi uma experiência nova e interessante. Eu segui o famoso “5 Minute Quick Start Guide” e depois de uma hora e meia lutando com o Angular 2 e sua infinidade de dependências, eu tinha algo rodando..
Então eu comecei a construir um aplicativo real. Resolvi construir uma plataforma de blog do zero, principalmente para aprender, e também porque há tempos queria começar um blog. A vontade de ter um blog seria a cenoura que me motivaria a aprender novas tecnologias e me permitiria construir meu projeto.
Mês após mês, acompanhei os lançamentos do Angular 2 e todo fim de semana, eu me arrastava no blog. Eu disse dolorosamente? Na verdade, eu quis dizer “batendo minha cabeça contra a parede” repetidamente, tentando entender e dominar o ecossistema JavaScript muito assustador.
Talvez eu esteja acostumado com bibliotecas Java cuja robustez foi lentamente testada no campo de batalha... Talvez aprender desenvolvimento web começando com Angular 2 seja como tentar aprender um videogame começando logo com o modo hardcore... Não sei.
Tudo o que sei é que o lançamento do Angular 2 foi, da minha perspectiva como engenheiro Java, um desastre super assustador. Cada versão menor fez muitas mudanças importantes. Toda vez que eu assistia ao maldito “5 Minute Quick Start” novamente, não tinha nada a ver com isso. Sem falar no roteador Angular 2. Foi um verdadeiro fiasco, uma agonia para os usuários, principalmente aqueles que não estão acostumados com o mundo Javascript.
Encontro-me escrevendo este post em um momento de paixão, falando sobre o último lançamento do Angular que foi anunciado há alguns dias. Angular 2 foi lançado definitivamente desta vez, e você pode atualizar sem ter que antecipar mudanças drásticas por pelo menos 6 meses ! Foi assim que eu ingenuamente pensei que deveria atualizar meu blog de @angular 2.0.0-rc.4 para @angular 2.0.0.
Aqui está o épico que vivi:

  1. Atualize para @angular 2.0.0
  2. Remova todos os campos 'diretivas' dos meus componentes. Aparentemente, o Angular2 decidiu que os módulos são o melhor caminho a percorrer.
  3. Exclua todas as importações que terminam com _DIRECTIVES.
  4. Atualize @angular/forms de 0.3.0 para 2.0.0. Por alguma razão, @angular/forms estava muito atrás do resto do Angular em termos de lançamento. Até este lançamento.
  5. Atualize o material angular para 2.0.0-alpha.8–2 (você percebe o quão ridículo é ter uma versão chamada 2.0.0-alpha.8–2??).
  6. Atualize para o typescript 2.o, que, e foi uma péssima surpresa para mim, está atualmente em beta. Depois de finalmente alcançar uma versão relativamente estável no Angular, é terrível perceber que o angular-material, uma ferramenta chave na minha pilha, depende de dependências instáveis ​​que estão à frente das dependências do Angular. 2.

Neste ponto, 'npm start' estava funcionando. Agora é onde fica complicado porque eu tive que lidar com mensagens de erro extraordinariamente obscuras que me atormentaram desde que comecei a aprender Angular 2. Como esta:
01
02
 
Depois de algumas soluções de problemas (desde então, fiquei muito bom em decifrar mensagens de erro desnecessárias do System JS), o problema veio desta linha errônea no meu arquivo systemjs.config.js:
// No umd for router yet
packages['@angular/router'] = { main: 'index.js', defaultExtension: 'js' };
Acho que @anguler/roteador agora tem UMD. Seja o que for UMDs.........
O próximo problema que encontrei foi este:
03
04
 
Excelente! Um erro de sintaxe muito assustador em um material angular. Não há mensagem de erro útil, nem número de linha. Nenhuma ajuda para me guiar. Não sei se devo atualizar ou fazer downgrade de dependências, instalar novas, alterar a sintaxe do meu arquivo tsconfig.js (que provavelmente mudou quando atualizei para o typescript 2.0). Estou perdido em um mar de confusão e frustração.
Agora, isso provavelmente é fácil de consertar para aqueles que são desenvolvedores web experientes. Não é daí que eu venho. Não é esse caso específico. É o fato de que o ecossistema JavaScript é um caos absoluto.
Cada nova versão de cada nova biblioteca vem com muitas mudanças radicais. Novas bibliotecas são lançadas antes que suas APIs sejam estabilizadas. As bibliotecas beta estão desatualizadas e apenas as bibliotecas alfa são novas e interessantes.

No Stackoverflow, posts com 6 semanas são antigos e mais relevantes porque falam de problemas com uma versão antiga que não uso mais.

O engenheiro Java que sou está louco de raiva contra esse ecossistema. Em que loucura o desenvolvimento web afundou? O que diabos está acontecendo com Javascript hoje em dia???
Ok, acho que está na hora de dar um passo para trás e dizer que realmente amo o Angular 2. Uma vez que todas as dependências foram atualizadas e tudo está funcionando, quando o Intellij aponta que deveria ser, e meu compilador datilografado está funcionando bem , Angular 2 é incrível.
Para ser honesto, usei versões de bibliotecas que ainda não foram lançadas oficialmente. Talvez você diga que é minha culpa se eu tentar baixar e usar uma versão da biblioteca que ainda está em alpha/beta/release candidate e esperar que ela funcione e seja fácil de usar. você provavelmente estaria certo. Mas se considerarmos que centenas de milhares de desenvolvedores já usam o Angular 2, devemos nos perguntar: é realmente responsável publicar bibliotecas que ainda estão em andamento? Faz sentido anunciar um release candidate e então fazer toneladas e toneladas de mudanças drásticas ao longo do caminho de rc.1 para rc.6?
Quantas centenas de milhares de horas de trabalho humano foram desperdiçadas tentando atualizar uma versão do Angular 2 e todas as suas dependências? E, como a maioria dos engenheiros atestará, as horas do desenvolvedor são uma mercadoria valiosa no mercado de trabalho atual. Quantos desenvolvedores foram totalmente devastados pela experiência de tentar usar o Angular 2 e prometeram abandonar o Angular em favor do React? Quantas outras bibliotecas JavaScript espalhadas por aí causaram dores de cabeça e ansiedade a seus usuários?
Talvez o ecossistema JavaScript esteja passando por suas primeiras dores de crescimento. Talvez os desenvolvedores estejam descobrindo os erros em seu design inicial e estejam trabalhando duro para corrigi-los em cada iteração para produzir sempre versões melhores.
Talvez o mundo do Javascript seja onde a grande maioria dos desenvolvedores em breve viverá, já que as ferramentas ferramentas terão evoluído de forma rápida e eficiente.. Talvez as pessoas consigam mais com JavaScript e ferramentas escritas em JavaScript sejam mais fáceis de usar do que aquelas escritas em outras linguagens...
Ou talvez, talvez o mundo Javascript seja algum tipo de embuste, um lugar onde engenheiros hipster vão perder tempo e sentir que estão na vanguarda da inovação, quando na realidade estão em um universo caótico e louco, jogando horas e horas de produtividade pela janela apenas para que você possa usar as ferramentas mais recentes e interessantes que existem.
Mas sou apenas um humilde desenvolvedor Java.
O que mais me interessa é o que você acha?
Artigo original de Liz Bennet
Traduzido por JS Staff
[separator type=”” size=”” icon=”star”] [actionbox color=”default” title=”” description=”JS-REPUBLIC é uma empresa de serviços especializada em desenvolvimento JavaScript. Somos um centro de treinamento aprovado. Encontre todos os nossos treinamentos técnicos em nosso site de parceiros dedicado ao Treinamento” btn_label=”Nosso treinamento” btn_link=”http://training.ux-republic.com” btn_color=”primary” btn_size=”big” btn_icon=”star” btn_external ="1″]