Impara a programmare: saggezza e strumenti per il viaggio

Pubblicato: 2022-03-11

La programmazione è una grande abilità da avere. È estremamente gratificante sia a livello personale che professionale, dandoti la possibilità di costruire, armeggiare e inventare. Può aprire le porte a tutti i tipi di percorsi di carriera con grandi vantaggi, che si tratti di uno stipendio rispettabile, della libertà di lavorare quando e dove vuoi, o tutto quanto sopra.

Non sorprende che sempre più persone, di ogni tipo, decidano di imparare a programmare. Ma ogni persona che affronta il compito si trova presto di fronte a una spiacevole realtà: imparare a programmare è difficile.

Complicato e confuso, all'inizio, gran parte della programmazione non ha alcun senso. Contrariamente alle aspettative, la sensazione di "Non capisco" può persistere senza sosta a lungo nel viaggio, facendo sentire i principianti con gli occhi lucidi senza speranza, persi e pronti a rinunciare.

La morale della storia è questa: sii preparato. Il percorso verso il paradiso dei programmatori è lungo e, senza la giusta mentalità all'inizio, può perdere rapidamente il suo fascino.

In questo articolo, cercherò di darti alcune indicazioni su cosa aspettarti durante il tuo viaggio, come affrontarlo al meglio e quali strumenti e risorse potresti trovare utili lungo il percorso.

Il viaggio nel paradiso dei programmatori inizia con un solo passaggio.

Cosa aspettarsi

Forse è ovvio, ma la prima cosa per essere sicuri di capire è che la programmazione, al suo interno, è una disciplina tecnica. Le prime abilità che impari richiederanno molta "esattezza" e "correttezza" e cercare di tagliare gli angoli non ti porterà da nessuna parte. Dovrai imparare almeno un po' di matematica, oltre a molte cose che potrebbero sembrare matematiche, come la logica procedurale.

Il punto è che l'apprendimento delle basi della programmazione richiede molta attenzione e pratica. Tuttavia, innumerevoli persone, sia tecnologiche che non, hanno fatto questo viaggio prima di te, quindi non scoraggiarti. Come vedremo, c'è un'abbondanza di risorse per le persone come te per aiutare a rendere il processo il più semplice possibile.

Imparare a programmare non è facile.

La curva di apprendimento per la programmazione è più ripida all'inizio. C'è un'enorme quantità di "fondamenti" da assorbire, comprese le varie parti di un linguaggio di programmazione (espressioni, variabili, tipi di dati, operatori, loop, istruzioni condizionali, funzioni, classi) e le tecniche per capire quanto di tempo e spazio di memoria che il codice utilizzerà (complessità). Scriverai molto codice che non funziona la prima volta, quindi dovrai fare i conti con la rovina dell'esistenza di ogni programmatore: il debug.

Dopo aver imparato a scrivere codice, sarai in grado di imparare a scrivere codice robusto . Rendere il codice efficiente, facile da leggere e da capire e facile da espandere è un'arte in continua evoluzione. Sarai in grado di iniziare a esplorare diverse filosofie software e passare dall'essere semplicemente un "codificatore" all'essere un "architetto del software". Anche questo è un processo che richiede molto tempo e pratica, ma più ci riuscirai, più troverai opportunità che si apriranno per te.

Come imparare a programmare

Il viaggio di ogni persona verso la programmazione del paradiso è diverso, ma ci sono alcuni buoni principi di cui tutti i viaggiatori possono trarre vantaggio. Ecco il processo di base che consiglio se sei appena agli inizi:

1. Scegli la tua destinazione: scegli una lingua, qualsiasi lingua

Se sei seriamente intenzionato a imparare a programmare, la lingua che scegli non ha molta importanza. I linguaggi di programmazione più popolari condividono gli stessi concetti fondamentali e, quando avrai davvero imparato a programmare nella tua prima lingua, sceglierne una nuova sarà più facile della prima volta. Se stai studiando attraverso un corso di laurea o simile, probabilmente la tua lingua sarà scelta per te.

In ogni caso, a meno che tu non sappia esattamente cosa vuoi fare a lungo termine, ci sono solo cinque lingue che consiglio di prendere in considerazione, che trovano un equilibrio tra facilità di apprendimento, versatilità delle conoscenze acquisite e abbondanza di lavoro a lungo termine potenziali clienti: Ruby , JavaScript , Python , C e Java .

Ecco alcune note generali su ciascuno, per aiutarti a decidere:

Lingue interpretate

Le lingue interpretate sono più facili da usare . Questo perché il loro codice sorgente può essere eseguito non appena viene scritto. Al contrario, i linguaggi compilati richiedono un passaggio aggiuntivo tra la scrittura e l'esecuzione del codice.

Di conseguenza, i linguaggi interpretati consentono una codifica più veloce , ma non utilizzano le risorse del computer in modo efficiente ed è più facile che i bug non vengano rilevati . Sono più adatti per applicazioni in cui le prestazioni non sono una priorità. Questi linguaggi sono molto popolari per lo sviluppo web. In effetti, uno di questi, JavaScript, è l' unico linguaggio che può essere eseguito direttamente in un browser web, contribuendo alla sua rapida ascesa come uno dei linguaggi più redditizi da conoscere.

Lingua Professionisti contro Comunemente usato per
Rubino
  • Sintassi estremamente flessibile.
  • Facile iniziare.
  • L'elevata domanda crea posti di lavoro ben retribuiti.
  • La flessibilità può oscurare gran parte dei processi sottostanti.
  • Le prestazioni lente lo rendono poco adatto alle applicazioni di fascia alta.
  • Web back end. Vedi Ruby on Rails.
JavaScript
  • Unica opzione per il software nel browser.
  • Fondamentale per ogni sito web moderno.
  • Una domanda estremamente elevata equivale a un'abbondanza di posti di lavoro ben pagati.
  • La sintassi complessa a volte può creare confusione.
  • Più impegnativo di Ruby o Python per i principianti.
  • Front-end web. Vedi React, Angular, Ember, jQuery e altri.
  • Back-end web. Vedere Node.js.
Pitone
  • La sintassi di digitazione elegante e minimalista è amata dai professionisti.
  • Facile iniziare.
  • Prestazioni lente significano scarsa compatibilità per applicazioni di fascia alta.
  • Scarsa scalabilità. Il design del linguaggio crea problemi nelle applicazioni di grandi dimensioni.
  • Web back end. Vedi Django.
  • Ricerca scientifica e accademica. Vedi SciPy.

Lingue compilate

Quando il codice viene compilato , viene convertito da codice leggibile dall'uomo in codice macchina ottimizzato prima di essere eseguito. Il risultato è molto più veloce ed efficiente rispetto ai linguaggi interpretati. Il compilatore che esegue questa operazione deve, come parte del suo lavoro, assicurarsi che tutto ciò che è stato codificato "abbia senso" e, di conseguenza, può identificare e prevenire molti tipi di bug a cui i linguaggi interpretati sono suscettibili.

Per questo motivo, è più difficile farla franca con errori o codice errato con questi linguaggi. Ti costringeranno ad acquisire una comprensione più profonda di ciò che sta realmente accadendo "sotto il cofano" e imparerai molto di più su come funziona davvero un computer . Il prezzo è che queste lingue richiedono più lavoro e in genere sono più difficili da imparare per i principianti.

I linguaggi compilati vengono utilizzati in applicazioni che richiedono prestazioni e affidabilità, comprese le applicazioni integrate, che possono essere eseguite su hardware con limitazioni di risorse limitate, e applicazioni grandi e complesse, in cui anche un piccolo bug può causare il caos.

Lingua Professionisti contro Comunemente usato per
C
  • Può fornire prestazioni migliori rispetto a qualsiasi altro "linguaggio di programmazione di alto livello".
  • Ti insegnerà di più su come funziona un computer.
  • Probabilmente il più difficile da padroneggiare da questa lista.
  • Sistemi operativi.
  • Videogiochi di fascia alta.
  • Sistemi integrati.
  • Robotica e intelligenza artificiale.
Giava
  • La lingua più usata, in generale.
  • La digitazione rigorosa impone un modo di pensare chiaro ed efficiente.
  • La sintassi complessa può essere ingombrante da leggere e lavorare.
  • Considerato da molti antiquato, monolitico e prossimo al declino.
  • Applicazioni aziendali su larga scala.
  • Sviluppo web.
  • Sviluppo Android.

HTML e CSS: non linguaggi di programmazione

Va notato che HTML e CSS, che sono usati praticamente in ogni pagina web che sia mai esistita, non sono linguaggi di programmazione . Sono linguaggi di presentazione, usati per definire come dovrebbe apparire qualcosa e cosa dovrebbe contenere, ma non come dovrebbe comportarsi. Tuttavia, possono essere un buon punto di partenza, perché sono molto più facili da raccogliere e ti insegneranno a digitare correttamente le cose. Inoltre, se hai intenzione di fare qualsiasi sviluppo web, dovrai comunque impararli a un certo punto.

2. Inizia in piccolo

L'apprendimento richiede tempo e c'è molto da assorbire. Se provi a creare un'applicazione completa il primo giorno, non funzionerà. Per risparmiarti la frustrazione, inizia risolvendo piccoli e semplici problemi e fatti strada verso l'alto.

Ad esempio, il primo programma che viene scritto tradizionalmente quando si impara una nuova lingua è il programma "Hello World", che stampa semplicemente le parole "Hello World" sullo schermo. Nella maggior parte delle lingue, è quasi impossibile scrivere un programma più semplice e chiaramente questo programma fa poco di effettivo utilizzo. Tuttavia, incorpora ancora molte delle parti fondamentali della lingua, quindi è perfetto per presentarsi a come viene digitata la lingua.

Da qui, puoi scrivere qualcosa che aggiunge o sottrae alcuni numeri, quindi qualcosa che riceve input dall'utente. È quindi possibile conoscere i condizionali, che sono un modo per prendere decisioni, e i loop, che eseguono attività ripetitive. Presto sarai pronto per costruire il tuo primo oggetto, ea quel punto potrai iniziare a sperimentare la costruzione di applicazioni complete.

3. Sii paziente

I concetti fondamentali della programmazione possono essere piuttosto impegnativi. Molti di loro non sono per niente intuitivi se non sai già come funziona il computer a un livello più profondo.

Ad esempio, quando stavo iniziando, ho trovato il debug un processo esasperante; non mi sembrava di programmare. Invece di scrivere un nuovo codice che facesse cose interessanti, passavo un'intera giornata a perlustrare qualcosa che avevo scritto, cercando di capire: "Come ho fatto a rovinare tutto questa volta?" grattandomi la testa e pronto a rinunciare. Alla fine, avrei scoperto di aver lasciato un singolo punto e virgola da qualche parte, o di aver usato una scheda invece di uno spazio, e quando il mio codice funzionava di nuovo, sarebbe stata la fine della giornata. Mi sentirei un totale idiota; sembrerebbe una tale perdita di tempo.

Imparare a programmare richiede molta perseveranza, specialmente nei giorni in cui senti di non arrivare da nessuna parte.

Questo genere di cose ti accadrà e ti farà impazzire. Quindi, una delle chiavi del successo è questa: sii paziente e vai piano con te stesso . Alcuni dei migliori consigli sull'argomento consigliano di concentrarsi sul processo, non sugli obiettivi. Se ti concentri sul tuo obiettivo finale ("Voglio creare un sito Web entro la fine di giugno") ti scoraggerai e ti sentirai un fallito. Lasciandoti impiegare tutto il tempo necessario per fare progressi, avrai più successo.

4. Pratica Pratica Pratica

Come ogni abilità, diventare bravo in questo si riduce davvero alla pratica. Non c'è niente come fare qualcosa, per imparare a farlo! Anche se puoi risparmiare solo poche ore alla settimana, se continui a esercitarti regolarmente, un giorno ti ritroverai a sapere come programmare. Alla fine, svilupperai un'intuizione per le cose e qualcosa che all'inizio ha richiesto un'intera giornata (come rintracciare un bug), ora potrebbe richiedere solo pochi secondi.

Quando ti senti come se avessi più o meno imparato le basi della programmazione, un ottimo modo per fare pratica è iniziare il tuo primo progetto. Pensa a una semplice applicazione che vorresti creare, come un elenco di cose da fare o una calcolatrice (di nuovo, inizia in piccolo) e provaci. Questo ti insegnerà come risolvere problemi architettonici e di design e costruire pezzi diversi in modo che si incastrino in un insieme funzionante. Queste sono le abilità essenziali che ti permetteranno di definirti veramente un programmatore.

Risorse

A seconda dei tuoi obiettivi, stile di apprendimento e mezzi, potresti voler utilizzare diverse risorse lungo il tuo viaggio. Per aiutarti a determinare quali metodi sono adatti a te, ecco un breve riassunto di alcuni degli strumenti che puoi utilizzare, ordinati, approssimativamente, dall'apprendimento più strutturato all'apprendimento meno strutturato.

Questi strumenti e risorse ti aiuteranno a imparare a programmare.

Apprendimento strutturato

Questa è la categoria di opzioni che forniscono istruttori, compiti, test, voti, scadenze e conseguenze reali se non fai dei tuoi studi la massima priorità. Queste sono le opzioni in cui dovrai andare in classe o essere bocciato dal programma.

Diploma universitario formale

L'opzione più costosa ma, per molti, la più preziosa, un diploma universitario formale ti darà le migliori basi per una fiorente carriera nella programmazione e nella tecnologia informatica. Riceverai un riconoscimento per i tuoi risultati sotto forma di laurea (un vantaggio importante quando entri nel mercato professionale). Ma soprattutto, emergerai con una comprensione profonda e approfondita di tutto ciò che riguarda il computer e le tue capacità di scrivere software davvero di prim'ordine ed efficace lo rifletteranno.

Ecco alcune delle cose che puoi aspettarti di imparare in modo approfondito da qualsiasi programma universitario decente, e che potrebbe essere più difficile trovare istruzioni complete per altrove.

  • Circuiti elettrici - La fisica di base alla base di praticamente tutto l'hardware del computer.
  • Circuiti logici digitali - Come rappresentare la verità e costrutti logici con i circuiti.
  • Microprocessori e sistemi informatici - Come i circuiti logici vengono combinati per creare una macchina informatica programmabile. Cosa sta succedendo su tutti quei piccoli spilli di metallo e fili stampati.
  • Sistemi operativi : come programmare un computer per gestire, organizzare e proteggersi e consentire il funzionamento sicuro di più applicazioni.
  • Database - Come archiviare e copiare grandi quantità di dati senza perderli, danneggiarli o rendere impossibile la ricerca.
  • Reti - Come possono comunicare tra loro sistemi informatici diversi e non correlati.
  • Matematica superiore - Compresi il calcolo e l'algebra lineare. Indispensabile per qualsiasi carriera in settori avanzati o all'avanguardia.
  • Signal Processing - Come attraversare il confine dal mondo analogico a quello digitale e viceversa.
  • Metodi numerici - Per quando i problemi del mondo reale non si adattano perfettamente a un computer.

La scuola di informatica e ingegneria ti prenderà a calci in culo e dovrai sacrificarti e dedicarti a completarla. Ma ne varrà la pena. Ho lottato per ottenere la mia laurea, ma il giorno in cui l'ho ricevuta rimane uno dei giorni più orgogliosi della mia vita.

Bootcamp

Sono emersi i cosiddetti programmi "bootcamp" per soddisfare le esigenze di coloro che non hanno il tempo o le risorse per conseguire una laurea formale, ma sono disposti a lavorare sodo e almeno a imparare il minimo necessario per iniziare una carriera di sviluppo software. Sia in termini di costi che di impegno richiesto, rientrano tra una laurea formale e le opzioni autodirette discusse di seguito.

I bootcamp in genere comportano da 8 a 12 settimane di studio intenso e costano circa 10.000 dollari. Coprono molto materiale in un breve lasso di tempo, durante il quale dovrai sacrificare la maggior parte delle altre attività. Ma promettono di prepararti per lo sviluppo di software nel mondo reale e di metterti sulla corsia preferenziale per una carriera nella programmazione. Molti bootcamp culminano in giorni di carriera, o altrimenti tentano di inserirti in un lavoro retribuito subito dopo la laurea.

I bootcamp sono un fenomeno relativamente recente ed esplosivo. In quanto tale, è ancora difficile misurare il loro tasso di successo e molti devono ancora sviluppare una comprovata esperienza nel collocare i laureati in posti di lavoro. Detto questo, ci si può solo aspettare che i programmi disponibili migliorino man mano che questa nuova industria fiorente continua a crescere. Finché fai le tue ricerche con attenzione, potresti scoprire che questa è l'opzione perfetta per te.

La maggior parte dei bootcamp sono programmi locali, quindi dovrai vedere cosa è disponibile nella tua città. Se vivi in ​​una grande metropoli, forse puoi trovare quello che stai cercando in questo elenco o in questo.

Apprendimento semistrutturato

Ogni giorno stanno diventando disponibili sempre più risorse per coloro che lavorano meglio con un elemento di struttura e guida, ma non hanno il tempo o le risorse per impegnarsi in una laurea formale o in un programma di bootcamp. Queste opzioni sono generalmente offerte interamente online e molte sono completamente gratuite! Man mano che l'elevata domanda di tali servizi è diventata evidente, questi strumenti sono cresciuti rapidamente in termini di sofisticatezza e valore fornito. I corsi di sviluppo del software hanno naturalmente guidato gran parte di questa evoluzione, poiché l'apprendimento e l'insegnamento del software attraverso il software ha evidenti vantaggi.

Quindi vuoi diventare un programmatore, vero? Questi suggerimenti e strumenti ti aiuteranno a iniziare.
Twitta

Corsi online aperti di massa (MOOC)

I MOOC sono una risorsa straordinaria e stanno facendo grandi passi avanti nel livellare il campo di gioco per un'istruzione di qualità e a prezzi accessibili. Offrono gran parte della struttura e della guida delle migliori classi universitarie formali del mondo, ma sono disponibili online per chiunque, ovunque, abbia una connessione a Internet. Molti MOOC popolari sono anche completamente gratuiti , anche se per un prezzo aggiuntivo (e impegno per lo studio) si possono guadagnare anche crediti formali per molte classi, equivalenti ai crediti universitari.

Ci sono molte piattaforme MOOC di prim'ordine disponibili online con corsi tenuti da professori delle università più prestigiose del mondo e piattaforme comunitarie in modo che tu e i tuoi compagni di classe in tutto il mondo possiate aiutarvi a vicenda nell'apprendimento. Ecco alcuni dei provider più noti:

  • Coursera
  • EdX
  • Audacia

Tieni presente che, come pubblicizzato, questi corsi offrono corsi di livello universitario, quindi è meglio essere preparati a lavorare sodo per superarli!

Siti web di tutorial guidati

Se ti piacciono la struttura e la guida, ma non ti piacciono le scadenze, ci sono molte fantastiche piattaforme online che forniscono formazione automatizzata passo dopo passo attraverso un'ampia gamma di metodi di consegna. Alcuni sono guidati da tutorial video, altri dal testo. Molti includono editor di codice interattivi su cui esercitarti nel tuo browser. Questi ti danno una grande flessibilità per imparare al tuo ritmo, che si tratti di mezz'ora di pratica alla fine di ogni giornata o di una maratona di 10 ore nel fine settimana.

Sebbene molte di queste piattaforme richiedano un abbonamento a pagamento per accedere a tutti i contenuti, la maggior parte offre prove gratuite in modo che tu possa iniziare subito e decidere da solo se funziona per te.

  • Accademia Kahn
  • Udemy
  • Codecademy
  • Codice Vendicatori
  • Scuola di codice
  • Casa sull'albero
  • Linda
  • Visione plurale

Questo è solo un breve elenco, quindi cerca in giro e guarda cos'altro c'è là fuori!

Apprendimento non strutturato

Per coloro che vogliono trovare la propria strada, o migliorare le proprie conoscenze nel tempo libero, senza la pressione di lezioni strutturate, i seguenti strumenti forniscono un approccio autodiretto. Anche se hai intenzione di adottare uno degli approcci di cui sopra, potresti trovare molte di queste risorse utili per integrare il tuo apprendimento o fornire una piattaforma per esercitarti.

Siti web di perforazione

Se il tuo obiettivo è solo quello di esercitarti a risolvere i problemi di programmazione, Internet, ancora una volta, ti copre. I seguenti siti offrono serie in continua espansione di sfide di codifica, insieme a interfacce di codifica interattive, per la risoluzione di problemi, la valutazione immediata delle soluzioni e il confronto del modo in cui si accumulano con le soluzioni di altri utenti.

  • Esercizio.io
  • CheckiO
  • CodeChef
  • CodeEval
  • Codewar
  • Codilità
  • HackerRank

Video

L'apprendimento della programmazione passiva ha una praticità limitata, ma se vuoi assorbire alcuni dei concetti più profondi, tra una riunione e l'altra o con un bicchiere di vino la sera, queste serie di conferenze sono tra le migliori in circolazione. Se ti piace questo genere di cose, controlla cos'altro è disponibile su YouTube e sul Web.

  • MIT OpenCourseWare
  • Serie di conferenze alla Stanford University

Libri

Anche con tutte le meraviglie della tecnologia disponibile, per molte persone non c'è ancora niente come un buon libro in cui immergersi e ottenere una profonda comprensione di un argomento. Se ti piace imparare in questo modo, dai un'occhiata all'elenco dei migliori libri di programmazione gratuiti di Toptal.

In chiusura

Imparare a programmare è un viaggio molto personale. Ognuno inizia con risorse diverse e obiettivi diversi e incontra sfide e opportunità diverse lungo il percorso. Non preoccuparti di quello che fanno gli altri o di come ci sono arrivati. Anche per i programmatori esperti, il viaggio in sé non finisce mai, poiché ci sono costantemente cose nuove da imparare.

Una volta che sei diventato un programmatore, ti aspetta un mondo di meraviglie.

Quindi, il mio consiglio per te è, vai piano e goditi il ​​viaggio! C'è molto da esplorare e un mondo di meraviglie ti aspetta. Un viaggio di mille miglia inizia con un solo passo. Ecco delle buone scarpe. Buona fortuna!