Diventare programmatore partendo da zero: 5 consigli per iniziare
In questo articolo prenderò in considerazione alcuni consigli che avrei voluto seguire anche io quando anni fa ho deciso che nella vita avrei fatto il programmatore. Prima ancora che arrovellarsi sul linguaggio di programmazione da scegliere per iniziare, o sul framework da studiare per trovare facilmente lavoro o su quale ambiente di sviluppo poter essere più produttivi, ci sono alcuni preamboli che, se affrontati all’inizio, creano un terreno favorevole all’apprendimento di tecniche e concetti necessari a scrivere buon codice, oltre a sviluppare quelle che definisco “le attitudini positive del buon programmatore”.
Ecco quindi alcuni consigli per chi non ha mai visto una riga di codice in vita sua, ma è sempre rimasto incuriosito dall’arcano che si cela dietro la misteriosa arte della produzione di software. Volendo, però, questi suggerimenti possono tornare utili anche per chi ha già raggiunto un livello medio (quasi alle soglie di quello che in gergo viene definito programmatore junior). Lo sviluppatore navigato, invece, può sempre commentare per dire la sua in merito.
Sezioni
Studia i software che usi
Quante volte al giorno ti trovi ad usare lo smartphone, il tablet o il pc per i più svariati usi? Sia che scorri interminabili liste di post sui social, sia che chatti con i tuoi amici, sia che svolgi i tuoi lavori d’ufficio per il tuo impiego (rispondere alle mail, compilare fogli di calcolo, redigere documenti di testo, immettere dati in un software gestionale ecc.), approfittane per studiare a fondo come sono stati progettati i programmi che usi quotidianamente per eseguire questi compiti. Ovviamente potrai solo indagare partendo dall’interfaccia grafica, ma puoi fare di una necessità un’occasione di apprendimento. Ti sarà molto utile quando progetterai il software per te o per il tuo target di utenti. Dov’è posizionato il menu? Dove si inseriscono i dati? Come viene controllato l’input dell’utente? Come vengono gestiti errori imprevisti? Come vengono precompilati i campi di una form in base a determinate scelte dell’utente? Quali scorciatoie vengono create per facilitare l’usabilità del programma e rendere più piacevole l’esperienza utente? Quali formule possono esserci dietro a certi calcoli? La finestra del programma è farraginosa? Troppo scarna? Oppure è ottimizzata per l’uso che se ne deve fare?
Prova anche ad evidenziare le differenze nello stesso software tra la visualizzazione sul tuo pc e quella sui dispositivi mobili, come cellulare e tablet. Soffermati a riflettere su tutti i programmi che usi, dal browser web alla posta elettronica, dal tuo videogioco preferito alla piattaforma di streaming su cui guardi le tue serie televisive preferite. Potrebbe incuriosirti pure il cruscotto della tua auto!
Tutto ciò ti sarà molto utile anche per imparare ad adattarti a tecnologie sempre nuove e a fare evolvere nel tempo le tue abilità.
Usa il sistema operativo a riga di comando
Questo consiglio si applica quasi esclusivamente all’uso del pc (esistono modi per usare la command line sui dispositivi mobili, ma è sicuramente materia per utenti avanzati).
Quante volte usi il mouse per spostare, copiare, rinominare cancellare file da una cartella all’altra? Quante volte al giorno ti trovi a premere bottoni, scegliere voci da un menu e chiudere finestre? Non immagini nemmeno quante di queste operazioni si possono fare digitando qualche comando sul terminale.
Una volta, prima dell’invenzione delle interfacce utente grafiche e prima che diventassero così sofisticate come lo sono attualmente, per lavorare al computer usare comandi da shell era la regola.
Digita quindi sul tuo motore di ricerca preferito la chiave “guida terminale a riga di comando”, completandola con il nome del sistema operativo installato sul tuo personal computer e comincia a studiare le varie istruzioni. In qualche ora dovresti essere già in grado di fare cose abbastanza utili. Come impostare un file in sola lettura? Come creare una cartella nascosta? Come rimuovere tutti i file da una cartella ricorsivamente (cioè rimuovendo il contenuto delle sottodirectory)? Qual è il mio ip in rete locale? Quanti processi vengono eseguiti in background? Quali porte sono aperte nel mio firewall? Ti stupirai di quante di queste domande troveranno una risposta rapidissima lanciando un semplice comando in quella “vetusta” finestra nera del terminale che non usi mai.
Come programmatore ti troverai molto spesso a scrivere software che manipola i file e il loro contenuto, che esegue processi e a navigare in cartelle e sotto cartelle. Conoscere la riga di comando ti fornirà quindi tutte le basi necessarie per gestire questi compiti con strumenti più evoluti come quelli messi a disposizione di un linguaggio di programmazione e di tutte le librerie a suo corredo. Inoltre ti darà un’idea più approfondita di cosa fanno dietro le quinte anche il tuo sistema operativo e altri programmi. Il che ti aiuterà quando dovrai risolvere qualche baco presente nel tuo software.
Quando inizierai ad apprendere un linguaggio di programmazione o un framework, usare la riga di comando per una molteplicità di task, come creare il boiler plate di progetto, far partire un serverino http di sviluppo, eseguire lo scaffolding delle entità di un database, scaricare dipendenze ecc. sarà un gioco da ragazzi.
Usa un editor di testo evoluto
Adesso che sai lanciare comandi sul terminale, potresti volerli raccogliere in una sequenza da salvare su file, ciò che comunemente si chiama script. Uno script non è altro che un semplicissimo programma di poche righe (non sempre poche) contenuto in un unico file costituito da un insieme di comandi per tuo sistema operativo. Sicuramente ti verrà in mente di usare il blocco note, che però ha il non piccolo svantaggio di essere soltanto un’area di testo bianca con poche funzionalità.
Ti suggerisco quindi di installare un editor di testo che abbia funzionalità di evidenziazione della sintassi dei tuoi script, che possa eseguire ricerche e sostituzioni di testo sia in alto che in basso nel documento in maniera automatica e che abbia la possibilità di aggiungere qualche plugin per l’autocompletamento del codice.
Evidenziazione della sintassi, ricerca e sostituzione del testo e autocompletamento del codice sono tre funzionalità imprescindibili per la redazione di uno script (e nella scrittura di codice): con la prima tutti i comandi e i loro argomenti vengono colorato in modo differente, per permettere di distinguerli meglio già a un primo sguardo; con la seconda puoi trovare e correggere facilmente errori o dimenticanze nello script; con l’ultima puoi scrivere il codice molto più rapidamente.
Questo ti introdurrà più agevolmente ad un uso futuro di un complesso IDE (ambiente di sviluppo integrato) che è sostanzialmente il pane quotidiano di tutti gli sviluppatori, il software dei software, il programma con cui i programmatori scrivono altri programmi.
Ce ne sono tantissimi, i più semplici e diffusi sono Notepad++ per windows e Gedit o Geany, che sono crossplatform (cioè compatibili con diversi sistemi operativi). Un ambiente a metà strada tra l’ide e l’editor è Visual Studio Code (di cui puoi ammirare un’anteprima nell’immagine in evidenza di questo articolo), anche questo cross platform; negli ultimi tempi ha visto un’impennata nella sua duffusione.
Automatizza compiti noiosi
Editor e comandi alla mano, hai una cassetta degli attrezzi sufficientemente fornita per iniziare a creare script di una certa complessità. Comincia a pensare a tutte le attività noiose che quotidianamente compi manualmente. Fare una copia di backup dei documenti, scaricare l’ultima copia di un file da un sito web, cancellare periodicamente i file più vecchi di una certa data, liberare la cartella temporanea ecc. sono solo alcune delle attività che possono essere automatizzate con un programmino. Molto probabilmente hai già qualche software che compie queste operazioni per te, ma quello che devi tenere presente è che provando a crearne uno tu, per quanto semplice e rudimentale, sviluppa un’attitudine al problem solving, che ti sarà molto utile quando dovrai trovare soluzioni problemi molto più complessi. E magari un giorno l’idea di un servizio completamente nuovo nato per utilità personale, potrebbe offrirti nuove opportunità di business! Oppure più semplicemente, potresti scoprire di voler fare il sistemista.
Nell’immagine in evidenza, ad esempio, uno script python per verificare lo status code http di una lista di url, mi è stato molto utile per testare il funzionamento dei redirect 301 di un sito che subiva una pesante migrazione. Invece di scaricare e studiare un programma ad hoc, come screaming frog, in 5 minuti ho creato uno script che leggeva la lista degli url, eseguiva una richiesta http di tipo HEAD e salvava il risultato in un file csv, per una consultazione successiva su foglio di calcolo.
Gioca con Arduino
Forse non conosci Arduino: si tratta di una schedina elettronica open source molto diffusa tra hobbisti e maker per la creazione di progetti elettronici alla portata di tutti. Ha un costo contenuti e un ide per lo sviluppo, oltre ad essere ben documentata e ad usufruire di una grande quantità di codice libero, tra librerie e progetti completi, per la risoluzione di qualunque problema. Perché dovresti imparare a usarlo? Perché dà subito l’idea di quante cose interessanti possono essere fatte scrivendo un programma; ma anche perché è a metà strada tra l’elettronica e il software puro, ciò che rende Arduino uno strumento ideale per entrare il mondo del computing.
Spesso avrai bisogno di ricevere una notifica via mail ogni volta che si attiva il tuo sistema di irrigazione automatica fai da te, oppure vorrai salvare su un database esterno consultabile via web i dati di monitoring ambientale (temperatura, inquinamento atmosferico) oppure le posizioni gps del tuo percorso preferito. Implementare queste funzionalità con Arduino ti permetterà di conoscere i protocolli di posta elettronica e di comunicazione http.
La sintassi del suo linguaggio, inoltre, di tipo c-like, ti familiarizzerà con linguaggi più diffusi anche a livello lavorativo, come c# o java, ma anche javascript.
Potresti anche scoprire che ti piace scrivere firmware per microcontrollori e che questa potrebbe diventare il campo lavorativo in cui vuoi specializzarti. Da Arduino infatti potrai fare il passo successivo di muoverti verso la programmazione di chip micropic o avr.
Se vuoi sapere di più su Arduino, ho creato un sito web per principianti che aggiorno nel tempo libero.
Conclusione
Prova questi consigli per iniziare a programmare partendo da zero. Ho raccolto quelli che ho ritenuto più utili per risparmiare tempo e per un approccio il più possibile soft a una materia vasta come quella della programmazione informatica. Se vuoi darmi dei feedback, torna a commentare questo articolo tra qualche giorno dopo aver fatto i tuoi esperimenti.