Di linguaggi di programmazione ce ne sono tantissimi: vecchi, nuovi, stabili, meno stabili, client side, server side, compilabili, script... ognuno con le sue caratteristiche, i suoi pregi e i suoi difetti. Quando occorre sviluppare un software per risolvere un problema, conta solo il risultato, non il mezzo con cui si vuole raggiungerlo.
Ogni programmatore ha il suo linguaggio preferito, ma secondo noi ciò che un programmatore dovrebbe conoscere/saper fare va oltre il linguaggio di programmazione che utilizza.
Ecco alcune buone pratiche/conoscenze che per me, Stefano, sono importanti.
- Pensa come l'utente: gli utenti che utilizzano il software non pensano come il programmatore che lo ha sviluppato, per cui cerca di immedesimarti nell'utente e di pensare a come potrebbe interagire con esso.
- KISS (Keep It Simple, Stupid): è un concetto a 360°. Vale sia per l'interfaccia utente, sia per gli algoritmi (e i processi) utilizzati per sviluppare un software. Spesso la soluzione migliore è anche la più semplice.
- Divide et impera: prima di risolvere un problema grande e complesso, dividilo in più sotto-problemi piccoli e semplici.
- Usa un framework: l'utilizzo di un framework diminuisce drasticamente il tempo (e gli errori) utilizzato per scrivere operazioni di basso livello, in modo da focalizzarti maggiormente sulle funzionalità.
- Commenta solamente quello che non è evidente: un codice ben scritto parla da solo. Scegli dei nomi utili per variabili e funzioni (in inglese!!), mantieni sempre lo stesso stile (indentazione del codice, uso delle parentesi...) e commenta solo gli algoritmi più complicati.
- Parti piccolo, diventa grande: parti da poche funzionalità fatte bene. Ottieni dei feedback e sistema ciò che è da sistemare. Aggiungi altre funzionalità un po' alla volta.
- Regola del tre: prima di astrarre una porzione di codice in una funzione/libreria riutilizzabile, assicurati di averla utilizzata tre volte, in modo da avere una visione più generale di come può essere utilizzata.
- Parti sempre dalla struttura dati: la struttura dati è la cosa più importante di un software. Quando tutti i dati che ti servono sono salvati nella giusta struttura dati, puoi fare quello che vuoi.
- Conosci il tuo IDE: l'IDE sarà il software che utilizzerai più spesso, per cui scegli quello migliore per te e impara a utilizzarlo al meglio.
- Usa un software per il controllo versione del software (GIT o Mercurial): è importantissimo, anche se sei l'unico a lavorare su un software. Ti permette di mantenere lo storico di tutte le modifiche che hai fatto, permettendoti di ripristinare vecchie porzioni di codice in caso di necessità. Se lavori in un team ti permette di lavorare su uno stesso progetto da computer diversi. Se utilizzi un repository in cloud (Github, Bitbucket, Gitlab...) hai anche una copia di backup sempre disponibile.
- Impara a debuggare: spesso e volentieri ti ritroverai a dover correggere un bug. Impara a utilizzare tutti i mezzi possibili per rintracciare la fonte dell'errore e porvi rimedio.
- Non vergognarti a cercare la soluzione su Google: è impossibile conoscere la giusta soluzione a tutti i problemi. Se non sai qual è il modo migliore per sviluppare un algoritmo, cercalo su Google. Ciò che è importante è imparare a trovare la soluzione più semplice/efficiente che fa al caso tuo.
- Impara a fare una stima del tempo necessario: è molto importante per fare un planning o anche solo un preventivo. Dividi mentalmente il software (o la funzionalità) che devi sviluppare in piccole parti (Divide et Impera) e per ognuna di queste parti pensa al tempo (ore o giorni) che pensi di metterci per completarle. Poi fai una semplice somma e in base alla difficoltà aggiungi un margine di sicurezza (10%, 20% o 30%). Quando sviluppi il software tieni conto del tempo che ci metti in modo da migliorare le stime in futuro!
Ci sono tanti altri aspetti che non abbiamo considerato in questa lista ma che sono comunque importanti (testing, devops, partecipazione alle community open source...), che si consolideranno con l'esperienza personale o che nasceranno grazie a nuove tecnologie.
Ci sarà sempre qualcuno che rivendicherà la superiorità di un altro linguaggio di programmazione rispetto a quello che usi (utilizzando argomentazioni più o meno valide): puoi usare il linguaggio che preferisci a cuor leggero.