Una delle domande che mi sono sentito fare più spesso è:
“Ma gli algoritmi servono davvero nel lavoro di tutti i giorni?”
La risposta è una di quelle che potrebbe non piacere.
Sì.
Ma probabilmente non nel modo in cui immagini.
Molti sviluppatori pensano agli algoritmi immaginando grafi, alberi binari, algoritmi di ordinamento o problemi da colloquio tecnico. Nella realtà quotidiana, soprattutto in molti progetti aziendali, è raro dover implementare da zero un Merge Sort o un algoritmo di Dijkstra. Questo però non significa che gli algoritmi siano inutili. Significa semplicemente che il loro valore non è tanto nell’algoritmo stesso, quanto nel modo di ragionare che ti insegnano.
Un algoritmo è un modo di risolvere un problema
Quando si sente la parola “algoritmo” si pensa subito a qualcosa di complicato.
In realtà un algoritmo non è altro che una sequenza di passaggi che permette di raggiungere un obiettivo. Ogni volta che scriviamo una funzione, stiamo progettando un piccolo algoritmo.
Ogni volta che decidiamo l’ordine delle operazioni, scegliamo le condizioni da verificare o organizziamo un flusso di dati, stiamo applicando un ragionamento algoritmico.
Gli algoritmi non iniziano con gli alberi binari. Iniziano con il modo in cui affrontiamo un problema.
Nel lavoro usi più algoritmi di quanto pensi
Anche se non implementi strutture dati avanzate ogni giorno, probabilmente ti capita spesso di:
- Filtrare dati
- Ordinarli
- Cercare elementi
- Eliminare duplicati
- Confrontare collezioni
- Trasformare informazioni
- Costruire flussi di elaborazione
Sono tutte attività che richiedono un ragionamento algoritmico. La differenza è che spesso utilizzi strumenti già messi a disposizione dal linguaggio o dalle librerie. Il fatto di non scrivere l’algoritmo da zero non significa che tu non lo stia utilizzando.
Il vero valore degli algoritmi
Secondo me il beneficio più grande dello studio degli algoritmi non è impararne decine a memoria. È imparare a ragionare. Studiare un algoritmo significa allenarsi a:
- Scomporre un problema
- Individuare una strategia
- Confrontare più soluzioni
- Capire i compromessi
- Valutare efficienza e semplicità
Ed è esattamente quello che uno sviluppatore fa ogni giorno.
Non serve conoscere tutto
Quando ho iniziato a studiare programmazione pensavo che un bravo sviluppatore dovesse conoscere ogni algoritmo esistente, con il tempo ho capito che non è così.
Molti algoritmi li utilizzerai raramente. Altri forse mai.
Quello che rimane davvero è il metodo di ragionamento che hai sviluppato studiandoli.
Gli algoritmi ti insegnano a scegliere
Uno stesso problema può essere risolto in molti modi diversi. Studiare gli algoritmi significa anche imparare che non esiste sempre una soluzione perfetta. Esistono compromessi.
Una soluzione può essere:
- Più veloce
- Più leggibile
- Più semplice da mantenere
- Più adatta a un determinato contesto
Uno sviluppatore cresce quando impara a scegliere, non quando impara a memoria.
L’errore più comune
Uno degli errori più comune credo sia studiare gli algoritmi come se fossero formule da ricordare. Li si memorizza per superare un esame o un colloquio e poi, qualche mese dopo, gran parte dei dettagli viene dimenticata. Se invece si comprende il ragionamento che c’è dietro, quel modo di affrontare i problemi rimane e può essere applicato anche a situazioni completamente diverse.
La mia esperienza
All’università ho studiato molti algoritmi e li ho applicati in numerosi progetti, ma come molti studenti, mi sono chiesto più di una volta se li avrei mai utilizzati nel lavoro quotidiano. Con il trascorrere del tempo mi sono accorto che non era tanto l’algoritmo specifico ad essermi rimasto, ma il modo di affrontare un problema. Ancora oggi, quando mi trovo davanti a una funzionalità complessa, il primo passo non è scrivere codice. È cercare di capire quale strategia adottare. Ed è proprio questo il contributo più grande che lo studio degli algoritmi mi ha lasciato.
Conclusione
Gli algoritmi non servono soltanto a superare gli esami universitari o i colloqui tecnici. Servono ad allenare una competenza che utilizzerai per tutta la carriera: il ragionamento. Forse non implementerai ogni giorno algoritmi complessi, ma ogni giorno dovrai analizzare problemi, confrontare soluzioni e prendere decisioni.
Ed è esattamente ciò che gli algoritmi ti insegnano a fare.
Gli algoritmi non sono importanti perché li userai tutti. Sono importanti perché cambiano il modo in cui impari ad affrontare i problemi.