Errori che ho fatto quando ho imparato a programmare

Foto di Nikolay Tarashchenko su Unsplash

Se potessi tornare indietro nel tempo, mi risparmierei da innumerevoli ore, giorni e mesi lavorando su cose sbagliate. Sapendo quello che so ora, ci sono molte cose che farei diversamente quando imparassi a programmare. Spero che questo articolo ti aiuti a risparmiare tempo ed evitare gli errori che fanno molti principianti. Tieni presente che l'esperienza di tutti è diversa e questo è un punto di vista di una persona (me). Tuttavia, essendo un programmatore autodidatta e avendo avuto una carriera abbastanza riuscita fino a questo punto, spero che ti identifichi con alcuni degli argomenti seguenti.

Per favore, condividi le tue esperienze nei commenti e ricorda quanto ti ha sopraffatto quando hai iniziato a provare a scalare questa montagna intimidatoria. Può aiutare quelli che stanno appena iniziando.

Tu chi sei?

Se ti interessa, continua a leggere. Altrimenti, passa alla sezione successiva. Sono un programmatore autodidatta. Le cose hanno funzionato abbastanza bene per me dato che ho lavorato per alcune grandi aziende tecnologiche. L'anno scorso ho cambiato le cose e ho iniziato a insegnare anche a programmare. Ora insegno a circa 80.000 programmatori di 194 paesi moderne capacità di programmazione e alcuni di loro hanno continuato a lavorare per grandi aziende tecnologiche di cui hai sicuramente sentito parlare. Ho anche visto innumerevoli amici passare attraverso costosi bootcamp di codifica e ancora non ho un lavoro molto dopo la laurea (che devo ammettere che mi ha reso molto frustrato per alcune delle affermazioni e bugie che alcuni tutorial e bootcamp fanno). Non sono affatto il miglior programmatore, ma almeno ho visto un successo moderato essere autodidatta. Abbastanza su di me, diamo un'occhiata ad alcune delle lezioni che penso possano aiutarti nel tuo viaggio ...

Selezione dell'insegnante / mentore sbagliato

Rispetto a quando ho iniziato a studiare molti anni fa, il numero di risorse online per imparare a programmare ha visto una crescita esponenziale. Ci sono alcuni contenuti di qualità davvero buona là fuori. Tuttavia, ora hai il paradosso della scelta: è impossibile studiare tutto. Di chi ti fidi e quali risorse usi? Ci sono innumerevoli video Youtube, libri, codifica bootcamp, programmi online, corsi Udemy, lezioni freeCodeCamp, ecc ... Cosa è aggiornato? Chi è in realtà un buon istruttore e chi è là fuori solo per venderti e fare soldi?

Quando non sai cosa devi imparare, è facile leggere un articolo di una o due persone online e decidere:

"Ah sì! Ho bisogno di imparare PHP, cPanel e anche di realizzare 30 progetti, inserirli nel mio portafoglio e quindi imparare anche Python e l'apprendimento automatico. Ho sentito che fa caldo in questo momento. Oh e poi tutti i framework di frontend (Vue, Angular e React) per ottenere il lavoro, quindi impariamo anche JavaScript. Studierò tutto da tutti. Poi farò anche cose Blockchain. Lasciami solo alcuni video di YouTube ”

Questa è la mentalità sbagliata.

Non tutti i contenuti sono uguali. La tecnologia è in continua evoluzione e selezionare da chi impari è uno dei criteri più importanti per il tuo successo. Se decidi di seguire un istruttore, leggere un libro o fare un corso, assicurati di conoscere il background di quella persona che insegna quel materiale.

Al momento esiste un grande mercato per i programmatori e ci sono molti "insegnanti" (sì, incluso me stesso). Tutti stanno cercando di attirare la tua attenzione e dirti "questo è il modo giusto di farlo". Tuttavia, come puoi verificarlo se non sai cosa devi sapere? Ecco una semplice lista di controllo:

  1. L'istruttore è attivo su Github? Hanno una storia di lavoro con ciò che ti insegnano o sono bravi nel marketing?
  2. Quando è stato aggiornato l'ultimo contenuto? L'istruttore è coinvolto nell'aggiornamento del corso?
  3. Hanno studenti passati che hanno avuto successo (non solo false testimonianze). Puoi metterti in contatto con loro e chiedere loro delle loro esperienze?
  4. Hanno lavorato sul campo nel ruolo che stanno insegnando (è possibile utilizzare i profili LinkedIn per verificare questo). Cosa stanno facendo attualmente per affinare le loro abilità? O sono solo creatori di contenuti per tutta la vita che non sono stati sul campo per molto tempo?
  5. Ti insegnano a costruire progetti sciocchi o costruiscono progetti che impressionerebbero i datori di lavoro? (no, un'app di incontri per cani, una calcolatrice, un'app di todo list non è impressionante)
  6. Hanno un blog? Quali sono alcuni dei loro scritti tecnici come / video? Hanno credibilità oltre al contenuto che stanno fornendo?

Seleziona l'insegnante giusto. Una piccola ricerca da parte tua può impedirti di investire il tempo nel posto sbagliato.

(Secondo me questo è il miglior istruttore là fuori e tutti gli istruttori dovrebbero puntare alla qualità di livello di David J. Malan. Inoltre, qualcosa come i frontendmaster fa un buon lavoro selezionando solo istruttori di prim'ordine. In un mercato come Udemy dove è molto facile essere un istruttore, devi fare più due diligence.)

Infine, non esiste un singolo istruttore in grado di insegnarti tutto. Avere più istruttori da cui imparare in modo da considerare diversi punti di vista e competenze.

Selezione della rotta / risorsa sbagliata

Simile al punto precedente, non ci sono carenze di risorse e materiale online da cui imparare. Tutti stanno cercando di attirare la tua attenzione. Ma ecco il problema: quale corso dovresti usare, quale materiale dovresti imparare? Ogni risorsa è diversa e quando sei all'inizio è difficile decidere chi sta dicendo la verità e quale corso è obsoleto e quale corso è pertinente. Prima di immergerti in un corso, assicurati che questo sia il tipo di lavoro a cui sei interessato (ad es. Sviluppo Web, sviluppo mobile) e che sia il modo moderno o giusto di fare le cose. Quando è stato aggiornato il corso per ultimo? Ha 3 anni? L'industria tecnologica è in costante evoluzione, quindi un corso che ha anche solo 1 anno dovrebbe probabilmente essere aggiornato. Questo non significa che non sia una buona risorsa, ma dovrebbe essere qualcosa che consideri (questo è ancora più vero quando stai imparando biblioteche come React invece dei fondamenti di informatica che non cambiano così tanto).

Non c'è mai una risorsa che risolva tutti i tuoi problemi e ti faccia assumere, proprio come a scuola non hai un solo corso sul "successo". Utilizza risorse diverse per creare il tuo albero delle conoscenze, ma fai la dovuta diligenza e assicurati di studiare le cose giuste. Ecco una bella lista di controllo:

  1. Il corso è stato aggiornato?
  2. Ci sono studenti che hanno terminato il corso e in tal caso lo raccomandano?
  3. Il corso è in linea con ciò che vedi con le tendenze e le richieste di lavoro? Puoi usare l'analisi delle tendenze come fatto in questo articolo qui, o qualcosa come HNTrends e StackOverflow Survey.
  4. Il corso è tenuto da qualcuno che è stato sul campo o solo un istruttore a vita (vedi la sezione sopra)?
  5. Il corso copre i contenuti che vedi nelle offerte di lavoro di dove vuoi lavorare?
  6. Guardando i primi video. Sembra che il corso sia ben organizzato e ci sia stato molto pensiero e lavoro nella struttura, nella struttura e nella preparazione del corso? O era qualcosa che è stato creato in un giorno al volo?

Nessun corso è perfetto, ma il tuo tempo è prezioso, quindi assicurati di spenderlo nelle cose giuste. Una risorsa popolare può essere popolare a causa del marketing fatto su di essa e non in realtà sulla qualità del contenuto.

Cercare di imparare tutto in una volta

Non fraintendetemi, è bene comprendere gli argomenti delle differenze in tutto lo spettro tecnologico. È bello essere curiosi e voler imparare quante più cose possibile. Ma se decidi di voler padroneggiare 3 linguaggi di programmazione ...

Ehi, ho sentito che Google sta usando Go e ho sentito che Python è usato per l'apprendimento automatico. Ho bisogno di JavaScript anche per le app web. Imparerò Python, Go e JavaScript e diventerò una superstar!

Lo stai facendo male.

Se non hai alcuna esperienza lavorativa, mantieni una lingua e lavora con quella lingua. Diventa abbastanza buono per essere assunto. Inizia a lavorare in team con quella lingua. Ecco quando inizia il vero apprendimento: quando inizi a lavorare su progetti reali.

Inizia ad imparare altre lingue, strumenti o framework solo perché c'è un chiaro vantaggio nell'apprendimento e c'è una necessità nel mercato. Impara a fare una cosa davvero bene prima (o almeno abbastanza bene per essere assunto).

Stai cercando di imparare React, Angular e Vue e non hai alcuna esperienza lavorativa? Congratulazioni, hai appena appreso 3 librerie / framework di frontend che alla fine fanno la stessa cosa e non hai avuto il tempo di imparare perché dovresti usare gli indici nei tuoi database. Scegline uno e mantienilo.

Essere concentrato! Impara una lingua / strumento che fa una cosa specifica e cerca di essere assunto in modo da iniziare a vivere un'esperienza di vita reale.

Alla ricerca della perfezione

Non esiste un programmatore perfetto. Tutti sbagliano. Tutti hanno dei difetti. Tutti scriviamo software buggy. Non esiste un codice perfetto. Quindi non essere intimidito. Il tuo progetto non sarà mai un capolavoro. Tra 2 ~ 3 anni molto probabilmente sarà superato. Crea cose che funzionino anche se il codice non è pulito. Gli errori vanno bene e sono incoraggiati. Sono il modo migliore per imparare. È un dato di fatto, anche le persone da cui impari a programmare non sono perfette e scrivono codice errato.

Ricorda, quando sali su quella montagna e arrivi in ​​cima, ti rendi conto che tutti qui sono solo un bambino intrappolato nel corpo di un adulto. Stiamo tutti provando a navigare nel codice facendo il meglio che possiamo fare. Alcune persone lo nascondono meglio di altri.

Quindi, sì, probabilmente dovresti smettere di aspettare la perfezione e iniziare a fare domanda per i lavori, spedire quel progetto o iniziare a quel progetto a cui stavi pensando. Le persone che fanno le cose e il codice di spedizione vinceranno sempre le persone che aspettano.

Selezione dello strumento sbagliato

Inizi a conoscere la programmazione e leggi che devi imparare React, GraphQL, Node.js, MongoDB, Storybook, React Hooks, AWS, ecc ... inizi a imparare le librerie senza capire cosa fanno o perché sono popolari. La cosa peggiore che puoi fare è saltare su qualsiasi tendenza senza capire quale problema risolve.

React Hooks YEY! Non è più necessario utilizzare i componenti di classe in React e tutto è una funzione. Sto convertendo tutto in componenti funzionali ora!

No. Riprova.

Perché va bene? Se non puoi spiegarlo ai tuoi amici, allora dovresti impararlo prima di saltare sul carro. TypeScript è un superset statico di JavaScript e ora avremo meno bug nel nostro codice! Bene, in quel caso è meglio conoscere le differenze tra le lingue tipizzate in modo dinamico e le lingue tipizzate in modo rigoroso e conoscere i pro ei contro.

Non c'è mai una soluzione perfetta.

Quindi, come selezioni lo strumento giusto quando hai appena iniziato e non sai cosa imparare? Puoi consultare questo articolo per una risposta, ma tieni presente che dovresti fare la tua dovuta diligenza (ps, dovresti probabilmente iniziare con JavaScript però). Inoltre, ricorda che la maggior parte delle biblioteche si evolvono e cambiano nel tempo. Niente è costante, quindi concentrati sull'apprendimento dei fondamenti.

Nuoto nel tutorial del purgatorio

Non limitarti a guardare il codice persone e prova a completare ogni singolo tutorial su YouTube, Udemy o qualsiasi altra piattaforma. Inizia a costruire i tuoi progetti. Il miglior apprendimento che puoi fare è lavorare su progetti reali e in team. Se stai guardando i video di YouTube che ti dicono ...

Non appena avrò finito di guardare questi 5 corsi, POI inizierò ad applicare ai lavori!

Lo stai facendo male.

Costruisci cose da solo ... espanderlo. È sempre bello imparare, ma se stai facendo tutorial dopo tutorial e non hai ancora un lavoro, o un motivo per imparare qualcosa di diverso dal fatto che è "alla moda", è tempo di mettere in pausa e riflettere. Non otterrai mai le cose giuste. Costruisci cose. Il codice farà schifo. Non importa.

Guardare 100 video di YouTube non è impressionante per nessuno. Chiunque può farlo. Devi costruire cose che sono ciò che la maggior parte delle persone non fa.

Ricorda: impari questi strumenti per costruire cose. Alla fine della giornata, la programmazione ti dà accesso agli strumenti per costruire cose reali che le persone reali usano. Alla gente interessano queste cose, non gli strumenti che conosci. È come guardare tutti i video del mondo sul calcio ma in realtà non ci si allena. Ti presenti alle prove di calcio e dici all'allenatore che hai guardato più video di calcio di qualsiasi altro giocatore. A nessuno importa.

Inizia a costruire i tuoi progetti che richiedono più di un giorno per essere completati. Ti distinguerai immediatamente dal 90% delle persone che imparano a programmare proprio lì.

Dovresti andare in un bootcamp?

Il 99% delle volte, la risposta è no. Se hai i soldi da spendere e hai verificato che il bootcamp ha laureati di successo con cui hai parlato e di cui ti puoi fidare, allora fai un bootcamp (sì, ce ne sono alcuni buoni là fuori). Tuttavia, tieni presente che l'offerta di bootcamp è la stessa di quella che puoi trovare online. Puoi leggere di più qui, ma proprio come in tutti i giorni, ci sono buoni bootcamp e bootcamp cattivi. Se stai spendendo oltre $ 10.000 in qualcosa, assicurati che ti prenda dove vuoi. Il più delle volte, però, puoi trovare le tue risorse online e non hai bisogno di questi costosi bootcamp. La natura del funzionamento dei bootcamp li rende in realtà meno flessibili per adattare e aggiornare i loro contenuti rispetto alle risorse online. L'unico vantaggio che danno è una struttura chiara (e la posta in gioco perché hai appena pagato così tanto per iscriverti) e compagni di classe (che con il giusto corso online e la comunità online possono essere raggiunti senza bootcamp).

Fidati di me, fare un bootcamp non è un biglietto sicuro per il successo. Hai ancora bisogno di duro lavoro e disciplina. Qualunque cosa nella vita che valga la pena avere, o un'abilità che paga bene, richiede un duro lavoro perché per definizione è difficile acquisire e per cui è difficile trovare talento.

Rilassati, ci arriverai

Certo, sembra che non ci sia alcuna possibilità che tu possa sapere tutte le cose di cui hai bisogno per diventare un grande sviluppatore. Bene, non lo farai. Nessuno fa. Non esiste un programmatore perfetto che sappia tutto e possa rispondere a tutte le domande di programmazione. La tecnologia è in continua evoluzione. È un percorso per le persone che vogliono imparare costantemente. Se senti di avere così tanto da imparare e non hai abbastanza tempo per imparare tutto, allora bene. Benvenuti nel club e godetevi il vostro giro. Anche piccoli passi ogni giorno per imparare hanno effetti combinanti in 10 anni. Se stai cercando di padroneggiare tutto in un mese, ottenere uno stipendio di 7 cifre e andare in pensione in 3 anni, probabilmente sei nel campo sbagliato.

Se vuoi concentrarti sulla padronanza, evolvere costantemente le tue conoscenze e costruire cose reali che contano, allora benvenuto.

Fare domande

Se non sai qualcosa, chiedi. Non far finta di sapere cosa significhi qualcosa solo perché pensi che la persona accanto a te lo sappia e sembrerai stupido per aver posto la domanda. Sei in questo a lungo termine. Questo non è un post di Instagram in cui sei perfetto e sei seduto sul lato di una piscina a sfioro a guardare le montagne con una tazza di tè matcha e parli di come hai capito la tua vita. Questa è la tua carriera Puoi fare domande e dimostrare che non hai capito tutto.

Conclusione

Un'ultima cosa ... non seguire ciecamente un corso o un tutorial online. Ogni volta che investi il ​​tuo tempo in qualcosa, stai cedendo l'opportunità di fare qualcos'altro. Non tutto l'apprendimento è creato allo stesso modo, quindi dedica un po 'di tempo a fare qualche ricerca per decidere in cosa dovresti dedicare tempo e sforzi. Non si tratta di stipare la maggior parte del lavoro per migliorare. Coloro che hanno successo sono quelli che possono imparare in modo efficiente. Questa è un'abilità che va oltre l'apprendimento del codice.

Alla fine della giornata, però, non credetemi. Proprio come ho menzionato in questo articolo, fai le tue ricerche e scopri le cose da solo e trova pochi mentori di cui ti puoi fidare. Alla fine ci arriverai. Una volta superato l'ostacolo, e una volta che si arrampica su quella montagna che la maggior parte delle persone rinuncia e si gira, è allora che inizi a vedere i guadagni, rendendoti conto che la montagna era semplicemente l'ostacolo che premiava coloro che la scalavano e rendeva davvero la tua abilità prezioso.

Se ti è piaciuto il mio modo di scrivere ti potrebbero piacere alcuni dei miei altri articoli:

→ Non essere uno sviluppatore junior
 → Impara a programmare nel 2019, fatti assumere e divertiti lungo la strada

Grazie per aver letto fino a questo punto. Se ti è piaciuto questo post, ti preghiamo di condividere, commentare e tenere premuto that alcune volte (fino a 50 volte). . . Continuerò a farlo se c'è abbastanza interesse!

Seguimi su Twitter o su Medium se vuoi tenere il passo con la mia scrittura. A proposito, il mio lavoro a tempo pieno è insegnare alle persone a programmare nel modo più efficiente possibile. Puoi vedere i miei corsi qui sotto (usa il codice coupon LEVELUPZTM per uno sconto piacevole):

O i miei altri 3 corsi che sono più avanzati:

Concetti avanzati di JavaScript

Padroneggia l'intervista sulla codifica: strutture di dati + algoritmi

Roadmap per sviluppatori Web da junior a senior (2019)

Ricorda: non andare avanti e acquistare i corsi perché hai letto questo articolo. Fai le tue ricerche, scopri cosa vuoi fare e decidi cosa è meglio per te.