Vai al contenuto principale

Ho riflettuto su cosa distingua i programmatori eccellenti da quelli semplicemente bravi. Ecco alcune riflessioni. Se avete altri spunti da aggiungere, effettuate l'accesso e lasciate un commento a questo post,

1. Non si tratta della fase di programmazione.

Certo, i grandi programmatori sono anche ottimi sviluppatori. Ma c’è di più. Penso che i grandi programmatori siano anche grandi ingegneri. Un ingegnere conosce i propri strumenti. Un ingegnere sa come scomporre un problema complesso in parti che può risolvere, e poi sa come ricomporre le parti per formare un tutto. Un ingegnere conosce a fondo l'ambito del problema. Nel contesto della programmazione, questo significa che comprendi il problema che stai cercando di risolvere; comprendi come si inserisce nel quadro più ampio; e comprendi i limiti della tecnologia.

2. Si tratta della fase di programmazione.

Leggere un codice ben scritto è come leggere un romanzo ben scritto. La storia scorre fluida dalle righe. Le strutture dati sono esattamente quelle necessarie per risolvere il problema. Il codice è suddiviso in procedure la cui funzione risulta chiara dal nome, dall’uso e dal codice stesso. I nomi sono descrittivi. Il codice è indentato in modo coerente. I commenti sono posizionati strategicamente, sono utili, pertinenti e non ridondanti rispetto al codice eseguibile. I commenti non mettono in discussione il comportamento del codice circostante (se mai foste tentati di farlo, fermatevi e prendetevi invece il tempo di capire cosa sta succedendo!). Il codice non è mai duplicato inutilmente; ogni azione è implementata una sola volta. Le funzioni eseguono un compito senza effetti collaterali gratuiti. Si è pensato a evidenti miglioramenti futuri e sono state prese misure ragionevoli per anticiparli nel progetto attuale.

3. Sono intrepidi.

Un programmatore che si rifiuta di lavorare su un pezzo di codice perché lo ritiene troppo complicato o troppo fragile probabilmente ha ragione. Ma non si riferisce al codice: si riferisce alle proprie capacità! I grandi programmatori, quando si trovano di fronte a un pasticcio, sanno quando e come convincere la direzione che è giunto il momento di riscrivere il codice in questione. I programmatori peggiori, invece, si buttano a capofitto nel lavoro e non fanno altro che peggiorare la situazione.

4. I grandi programmatori pensano sempre alle prestazioni.

Sanno bene che, scegliendo la struttura dati più adatta al compito da svolgere, hanno già scongiurato la maggior parte dei problemi di prestazioni. Ma non fanno alcuna ipotesi sulle prestazioni. Quando il loro codice è stato debuggato, si prendono il tempo di eseguire stress test e di metterlo alla prova al massimo della potenza. Capiscono che far funzionare il codice a 1 TPS non è la stessa cosa che farlo funzionare a 1000 TPS. Capiscono anche che farlo funzionare per 15 minuti non è la stessa cosa che farlo funzionare per giorni e settimane di fila.

5. I grandi programmatori non tirano a indovinare.

Quando si imbattono in qualcosa che devono sapere e che non conoscono, trovano il modo di acquisire le conoscenze necessarie, senza tirare a indovinare e senza perdere troppo tempo.

Spero che questa lista ti sembri interessante e ti sia d'aiuto.