Ciao, e benvenuto nella quinta puntata della quarta stagione. Oggi affrontiamo il nucleo della preparazione per le grandi aziende tecnologiche, la parte su cui si gioca gran parte dell'esito: gli algoritmi e le strutture dati. È l'argomento che spaventa di più, quello che richiede più studio, e anche quello più discusso. Cerchiamo di capirlo per bene e, soprattutto, di prepararlo nel modo giusto.
Partiamo da una domanda legittima: perché queste aziende insistono così tanto su problemi che, spesso, con il lavoro quotidiano di uno sviluppatore hanno poco a che vedere? La risposta ufficiale è che questi problemi misurano la capacità grezza di risolvere problemi, il ragionamento, la conoscenza delle basi dell'informatica, in modo uguale per tutti e difficile da falsificare. È un metro standardizzabile su larga scala. La critica, diffusa e legittima, è che misurano soprattutto quanto ti sei allenato su quel tipo specifico di esercizi. Entrambe le cose sono vere; ma qualunque sia la tua opinione, se vuoi entrare devi giocare con queste regole.
Chiariamo di cosa parliamo, senza entrare nel tecnico profondo. Le strutture dati sono i modi di organizzare le informazioni: pensa a liste, insiemi, mappe, alberi, e così via. Gli algoritmi sono le procedure per manipolarle: cercare, ordinare, attraversare, trasformare. I problemi da colloquio chiedono, in sostanza, di combinare la struttura dati giusta con l'algoritmo giusto per risolvere un rompicapo in modo corretto ed efficiente. La buona notizia è che, sotto la varietà infinita dei problemi, si nascondono relativamente pochi schemi ricorrenti.
E qui c'è la chiave di tutta la preparazione, il concetto più importante della puntata: non si studia memorizzando soluzioni, si studia imparando a riconoscere gli schemi. Chi prova a mandare a memoria centinaia di soluzioni fallisce, perché al colloquio il problema sarà leggermente diverso e la memoria non basta. Chi invece impara a riconoscere che tipo di problema ha davanti, e quale famiglia di approcci si applica, sa muoversi anche su problemi mai visti. L'obiettivo non è aver visto tutto, è saper riconoscere di cosa si tratta.
Come si studia in pratica, allora? Con la pratica deliberata, non con la lettura passiva. Guardare qualcuno risolvere problemi, o leggere soluzioni, dà l'illusione di imparare ma lascia poco. Devi risolvere problemi con le tue mani, sbattere contro le difficoltà, e solo dopo esserti sforzato guardare la soluzione. Ripeto un principio della seconda stagione: il cervello trattiene ciò che usa per risolvere un problema vero, non ciò che guarda scorrere. La fatica di provarci da solo è proprio dove avviene l'apprendimento.
Un metodo che funziona bene è studiare per schemi, non a caso. Invece di risolvere problemi a caso, affronta un tipo di problema alla volta, capiscine la logica di fondo, poi risolvi diversi esercizi di quella stessa famiglia finché lo schema ti entra davvero. Poi passi al successivo. Esistono raccolte di problemi organizzate proprio così, e piattaforme dedicate, la più nota delle quali è LeetCode, dove puoi esercitarti. Ma lo strumento conta meno del metodo: procedere per schemi, capire prima di quantità.
Un errore comune è puntare tutto sulla quantità: "ho risolto cinquecento problemi". Il numero da solo dice poco. Meglio risolvere meno problemi ma capirli fino in fondo, essere in grado di rispiegarli, di risolverli di nuovo a distanza di tempo, di riconoscerne le varianti. Riprendo un tema della prima stagione: profondità, non ampiezza. Cento problemi capiti davvero valgono più di cinquecento risolti e dimenticati. La comprensione, non il conteggio, è ciò che ti salva al colloquio.
Non trascurare due cose che al colloquio contano quanto la soluzione. La prima: allenarti a spiegare mentre risolvi, perché dovrai ragionare a voce alta. Risolvere in silenzio nella tua cameretta non ti prepara a farlo commentando davanti a qualcuno. La seconda: allenarti a valutare l'efficienza delle tue soluzioni, cioè a ragionare su quanto una soluzione diventa lenta al crescere dei dati, di cui abbiamo parlato nella prima stagione. Al colloquio quasi sempre ti chiedono non solo di risolvere, ma di capire quanto è efficiente ciò che hai fatto e se si può migliorare.
Una parola onesta sul tempo e sulla fatica, perché questa preparazione è dura e lunga. Per molti richiede mesi di esercizio costante, ed è normale sentirsi frustrati, bloccati, inadeguati lungo il percorso. Riprendo la seconda stagione: separa "il problema è difficile" da "io sono stupido", e procedi con costanza sostenibile invece che con maratone che ti bruciano. Ed è normale anche non essere mai perfetti: nessuno risolve tutto. L'obiettivo non è la perfezione, è arrivare abbastanza preparato da affrontare con lucidità ciò che ti capiterà.
Per oggi ci fermiamo qui. Gli algoritmi e le strutture dati sono il nucleo della preparazione: studiali riconoscendo gli schemi invece di memorizzare, con pratica deliberata invece che passiva, puntando alla comprensione profonda invece che al conteggio dei problemi, e allenandoti a spiegare e a valutare l'efficienza. È faticoso, ma è la parte che, più di ogni altra, apre le porte. Nella prossima puntata affrontiamo la giornata di colloqui, il famoso loop. Nelle note trovi qualche spunto. Se ti è utile, condividila. Grazie per l'ascolto, e ci sentiamo alla prossima.