Perché l'apprendimento di Angular 2 è così doloroso?

Alcuni mesi fa, ho deciso di provare lo sviluppo web.. Angular 2 era nuovo di zecca all'epoca, quindi ho deciso di scaricarlo e ho iniziato a creare un sito web. Per qualcuno che è originariamente uno sviluppatore Java, questa è stata un'esperienza nuova e interessante. Ho seguito la famosa "Guida rapida in 5 minuti" e dopo un'ora e mezza di battaglie con Angular 2 e la sua pletora di dipendenze, avevo qualcosa in esecuzione..
Poi ho iniziato a creare una vera app. Ho deciso di costruire una piattaforma di blog da zero, principalmente per imparare, e anche perché volevo aprire un blog da anni. Il desiderio di avere un blog sarebbe la carota che mi motiverebbe ad apprendere nuove tecnologie e mi permetterebbe di costruire il mio progetto.
Mese dopo mese, ho seguito le versioni di Angular 2 e ogni fine settimana, arrancavo sul blog. Ho detto dolorosamente? In realtà volevo dire "sbattere la testa contro il muro" più e più volte, cercando di capire e padroneggiare l'ecosistema JavaScript molto inquietante.
Forse sono solo abituato alle librerie Java la cui robustezza è stata lentamente testata sul campo di battaglia... Forse imparare lo sviluppo web a partire da Angular 2 è come cercare di imparare un videogioco iniziando subito con la modalità hardcore... non lo so.
Tutto quello che so è che il rilascio di Angular 2 è stato, dal mio punto di vista di ingegnere Java, un disastro super inquietante. Ogni versione minore ha apportato molte modifiche importanti. Ogni volta che guardavo di nuovo il dannato "5 Minute Quick Start", non c'entrava nulla. Per non parlare del router Angular 2. È stato un vero fiasco, un'agonia per gli utenti, soprattutto quelli che non sono abituati al mondo Javascript.
Mi ritrovo a scrivere questo post in un momento di passione, sbraitando sull'ultima release di Angular che era stata annunciata qualche giorno fa. Angular 2 è stato rilasciato definitivamente questa volta e puoi aggiornare senza dover anticipare cambiamenti drastici per almeno 6 mesi ! È così che ho pensato ingenuamente di dover aggiornare il mio blog da @angular 2.0.0-rc.4 a @angular 2.0.0.
Ecco l'epopea che ho vissuto:

  1. Esegui l'upgrade a @angular 2.0.0
  2. Rimuovere tutti i campi "direttiva" dai miei componenti. Apparentemente Angular2 ha deciso che i moduli sono il modo migliore per andare.
  3. Elimina tutte le importazioni che terminano con _DIRECTIVES.
  4. Aggiorna @angular/forms da 0.3.0 a 2.0.0. Per qualche motivo @angular/forms era molto indietro rispetto al resto di Angular in termini di rilascio. Fino a questo rilascio.
  5. Aggiorna il materiale angolare a 2.0.0-alpha.8–2 (ti rendi conto di quanto sia ridicolo avere una versione chiamata 2.0.0-alpha.8–2??).
  6. Esegui l'aggiornamento a dattiloscritto 2.o, che, ed è stata una brutta sorpresa per me, è attualmente in versione beta. Dopo aver finalmente raggiunto una versione relativamente stabile in Angular, è spaventoso rendersi conto che angular-material, uno strumento chiave nel mio stack, si basa su dipendenze instabili che sono in anticipo rispetto alle dipendenze di Angular.

A questo punto 'npm start' funzionava. Ora è dove diventa complicato perché ho dovuto fare i conti con messaggi di errore straordinariamente oscuri che mi hanno afflitto da quando ho iniziato a imparare Angular 2. Come questo:
01
02
 
Dopo un po' di risoluzione dei problemi, (da allora sono diventato abbastanza bravo a decifrare i messaggi di errore di System JS non necessari), il problema è derivato da questa riga errata nel mio file systemjs.config.js:
// No umd for router yet
packages['@angular/router'] = { main: 'index.js', defaultExtension: 'js' };
Immagino che @anguler/router ora abbia UMD. Qualunque cosa questo UMD.........
Il problema successivo che ho riscontrato è stato questo:
03
04
 
Eccellente! Un errore di sintassi molto inquietante in un materiale angolare. Non ci sono messaggi di errore utili, né numero di riga. Nessun aiuto per guidarmi. Non so se dovrei aggiornare o eseguire il downgrade delle dipendenze, installarne di nuove, cambiare la sintassi del mio file tsconfig.js (che probabilmente è cambiato quando ho aggiornato a typescript 2.0). Sono perso in un mare di confusione e frustrazione.
Ora, probabilmente è facile da risolvere per quelli di voi che sono sviluppatori web esperti. Non è da lì che vengo. Non è quel caso specifico. È il fatto che l'ecosistema JavaScript è il caos assoluto.
Ogni nuova versione di ogni nuova libreria comporta molti cambiamenti radicali. Le nuove librerie vengono rilasciate prima che le loro API siano stabilizzate. Le librerie beta sono obsolete e solo le librerie alfa sono nuove e interessanti.

Su Stackoverflow, i post di 6 settimane sono vecchi e più rilevanti perché parlano di problemi con una vecchia versione che non utilizzo più.

L'ingegnere Java che sono è pazzo di rabbia contro questo ecosistema. In quale follia è sprofondato lo sviluppo web? Che cazzo sta succedendo con Javascript in questi giorni???
Ok, immagino sia giunto il momento di fare un passo indietro e dire che in realtà amo Angular 2. Una volta che tutte le dipendenze sono state aggiornate e tutto funziona, quando Intellij fa notare che dovrebbe essere, e il mio compilatore dattiloscritto funziona bene , Angular 2 è fantastico.
Ad essere onesto, ho usato versioni di librerie che non sono state ancora rilasciate ufficialmente. Forse diresti che è colpa mia se provo a scaricare e utilizzare una versione della libreria che è ancora in alpha/beta/release candidate e mi aspetto che funzioni e sia facile da usare. probabilmente avresti ragione. Ma se lo consideriamo centinaia di migliaia di sviluppatori già utilizzando Angular 2, dovremmo porci la domanda: è davvero responsabile pubblicare biblioteche che sono ancora in lavorazione? Ha senso annunciare un candidato per il rilascio e quindi apportare tonnellate e tonnellate di cambiamenti drastici lungo il percorso da rc.1 a rc.6?
Quante centinaia di migliaia di ore di lavoro umano sono state sprecate nel tentativo di aggiornare una versione di Angular 2 e tutte le sue dipendenze? E come attestano la maggior parte degli ingegneri, le ore di sviluppo sono un bene prezioso nel mercato del lavoro di oggi. Quanti sviluppatori sono stati totalmente sventrati dall'esperienza di provare a utilizzare Angular 2 e hanno promesso di abbandonare Angular a favore di React? Quante altre librerie JavaScript in giro hanno causato mal di testa e ansie ai loro utenti?
Forse l'ecosistema JavaScript sta vivendo i suoi primi problemi di crescita. Forse gli sviluppatori stanno scoprendo i difetti nella loro progettazione iniziale e stanno lavorando duramente per correggerli attraverso ogni iterazione per produrre versioni sempre migliori.
Forse il mondo Javascript è il luogo in cui vivrà presto la stragrande maggioranza degli sviluppatori, poiché gli strumenti si saranno evoluti in modo rapido ed efficiente.. Forse le persone otterranno di più con JavaScript e gli strumenti scritti in JavaScript saranno più facili da usare rispetto a quelli scritti in altri linguaggi...
O forse, forse il mondo Javascript sarà una specie di bufala, un luogo in cui gli ingegneri hipster vanno a perdere tempo e si sentono come se fossero all'avanguardia dell'innovazione, quando in realtà si trovano in un universo caotico e pazzo, lanciando ore e ore di produttività fuori dalla finestra solo per poter utilizzare gli strumenti più recenti e interessanti disponibili.
Ma sono solo un umile sviluppatore Java.
Quello che mi interessa di più è cosa ne pensi?
Articolo originale de Liz Bennet
Tradotto da JS Staff
[tipo separatore=”” size=”” icon=”stella”] [actionbox color=”default” title=”” description=”JS-REPUBLIC è una società di servizi specializzata nello sviluppo di JavaScript. Siamo un centro di formazione riconosciuto. Trova tutta la nostra formazione tecnica sul nostro sito partner dedicato alla Formazione” btn_label=”La nostra formazione” btn_link=”http://training.ux-republic.com” btn_color=”primary” btn_size=”big” btn_icon=”star” btn_external =”1″]