I due demoni del programmatore
Delirio di onnipotenza e pigrizia
Il programmatore è uno strano animale umano: è pilotato da due demoni (se cogliete il gioco di parole siete anche programmatori voi o veri nerd).
Il primo è un delirio di onnipotenza che nasce in loro la prima volta nella quale, probabilmente bambini o adolescenti, realizzano il primo programma funzionante e si rendono conto che possono dare ordini ad una macchina con la certezza che questa li eseguirà, anche se non sempre nel modo in cui si aspettano. Il secondo demone è quello che spinge l’evoluzione tecnologica umana dai suoi primordi fatti di lance e fionde: la pigrizia.
Dire che la pigrizia sia una spinta all’innovazione potrebbe sembrare un controsenso e richiede una spiegazione: lo è se ben guidata.
Facciamo un esempio con tre cavernicoli:
- il primo, che chiameremo Hug, è un campione di pigrizia; preferisce poltrire che andare a caccia
- il secondo, Ghag, è l’eroe del villaggio; affronta le fiere a pugni e morsi
- il terzo, Zak, preferisce riposare ma dato che a caccia deve andarci per forza si costruisce arco e frecce così farà meno fatica a procurarsi la cena
Cosa succede alla lunga? Hug patirà la fame e alla fine sarà riposato ma morto. Ghag finirà mangiato dall’animale a cui dava la caccia. Zak invece farà un po’ più di fatica di Hug ma molta meno di Ghag e porterà indietro pelle e cena.
Sembra una ricostruzione fantasiosa ma provate a chiedervi “perché sono nati i computer?” Perché qualcuno non voleva fare dei calcoli (pigrizia) e costruì qualcosa che li facesse al suo posto (delirio di onnipotenza). Questo vale sempre per quasi tutto quello che riguarda l’informatica moderna. Preferite usare fogli di calcolo o immensi registri con i numerini scritti a mano?
Per il programmatore la pigrizia focalizzata è essenziale: ottenere il maggior risultato possibile con la minor spesa energetica possibile. Questo non vuol dire produrre codice approssimativo o frettoloso (non sarebbe il miglior risultato possibile) ma significa che la ripetizione di codice, di operazioni, di processi sono quello che un programmatore cerca di evitare.
L’equilibrio degli impulsi di questi due demoni è quello che guida gran parte dei programmatori, almeno di quelli che possono definirsi programmatori e non semplici coder.
Ogni volta che un programmatore ha a che fare con un compito che sa che dovrà ripetere più volte si chiede inconsciamente “come posso far in modo di fare questo lavoro una sola volta?”.
La risposta di solito è: un po’ più di fatica adesso e molta meno fatica dopo. Il programmatore scrive un tool che faccia il lavoro al suo posto, una libreria che potrà riutilizzare, un sistema che cambia il suo comportamento in base ad una semplice configurazione. Solitamente richiede più energia che eseguire semplicemente il lavoro una o due volte, alla lunga però premia con una soddisfaciente dose di ozio.
Attenzione però! L’ autentica pigrizia del programmatore è sempre focalizzata sul risultato a lungo termine e mai fine a se stessa. C’è sempre un obiettivo nella pigrizia: uno speciale tipo di ozio che solo le menti creative conoscono. Il programmatore ha modi peculiari di oziare: studia, scrive programmi per se stesso, sperimenta algoritmi e framework. Perché il programmatore ama l’ozio ma rifugge la noia e per evitare la noia cosa c’è di meglio che imparare cose nuove?
Inoltre imparando cose nuove si alimenta il delirio di onnipotenza.
Tipico programmatore quando sperimenta un nuovo, interessante framework.