Recensione: The Pragmatic Programmer, di Andrew Hunt e David Thomas
Prima di mettersi in bocca paroloni come “cloud native”, “microservizi” o cose simili, è necessario rafforzare i principi di base che muovono uno sviluppatore attraverso delle precise scelte di design. Come mai un determinato pezzo di software è scritto in un modo piuttosto che in un altro? C’è sempre una risposta a interrogativi di questo tipo, e The Pragmatic Programmer parla proprio di questo: delle persone che stanno dietro gli automatismi e il codice di cui tutti i giorni fruiamo e che chiunque faccia il nostro stesso mestiere ha davanti per almeno una decina di ore al giorno.
Al posto di abbandonarsi ai design pattern e ai tecnicismi (per quanto legittimi) questo libro è completamente composto di principi che rendono davvero uno sviluppatore forte di quello che conosce, piccole pillole come “cosa fare quando qualcuno ti chiede qualcosa”, “come comportarsi di fronte alle stime”, oppure il rubber-duck-debugging che oggi ormai è dato per assodato e le cui radici invece risalgono proprio a questo stupendo testo.
Testo che come avrete avuto modo di notare è vecchiotto; la prima edizione è del 1999, e per quanto nel tempo siano uscite varie riedizioni principalmente volte a svecchiare alcuni concetti e gli esempi ormai datati, il grosso dell’opera non è mai stato modificato e col tempo non solo tutto questo gli è valso il titolo di “uno tra i libri più influenti di sempre sulla programmazione”, ma per me è il libro più influente di sempre sullo sviluppo software. Personalmente - e lo dico complice il fatto che di libri tecnici ne ho letti, sia per l’università che nella banale sezione della manualistica - non sarei lo stesso sviluppatore, oggi, se non avessi letto The Pragmatic Programmer da cima a fondo, ahimé anche troppo tardi, l’anno scorso.
È stata una lettura che mi ha preso tempo ma alla fine è valsa la pena di ogni secondo speso sulle pagine, alcune veramente scorse a fatica perché è un testo denso.
I concetti che mi sono rimasti maggiormente come più cari da The Pragmatic Programmer? Eccoli qua:
- Il principio di ortogonalità dello sviluppo software: a volte è necessario che due entità all’interno di un sistema evolvano in parallelo in maniera disaccoppiata. Nel 2021 può sembrare un concetto naìf, ma provate a rileggere il vostro codice alla luce di questa affermazione;
- La teoria delle finestre rotte: più un progetto è marcio più è facile che marcisca. Quando vedete qualcosa che non va, aggiustatelo subito. Se avete un progetto pieno di cose che funzionano a singhiozzo, fate una lista delle cose da aggiustare e cominciate. Vi sorprenderete di quanto possono migliorarvi la vita anche piccoli gesti, se applicati con costanza;
- Il portfolio delle conoscenze: come state evolvendo il vostro skill set, soprattutto parlando di hard skill? Quanti linguaggi conoscete? Avete voglia di espandere la vostra toolbelt periodicamente?
- Power Editing: l’editor di testo per uno sviluppatore è come la coperta di Linus, o più semplicemente il mezzo attraverso cui quello che sappiamo si traduce prima in qualcosa di fruibile e in un secondo momento in denaro (momento venale, scusate). Conoscere il proprio editor di testo, facilitandosi il lavoro con tutto quello che il software che usiamo mette a disposizione, è essenziale per uno sviluppatore efficace;
- Tracer Bullets: saper tracciare un percorso lungo tutta la filiera (il data path, se vogliamo usare un tecnicismo) che i nostri dati percorrono, mettendo a punto una funzionalità in modo grezzo e successivamente rifattorizzarla e aggiungere le parti mancanti. Saper individuare con esattezza quali parti compongono lo scheletro della funzionalità che stiamo implementando e quali invece possono essere tralasciate per essere aggiunte senza sforzo in un secondo momento è un’abilità secondo me chiave per ogni ingegnere del software di successo.
Volete comprarlo? In ebook lo trovate in un sacco di posti, in hardcover è più difficile trovarlo. In ogni caso il libro ha a corredo un sito ufficiale su cui non solo viene venduto, ma su cui è presente la “Pragmatic Bookshelf”, ovvero altri libri di autori fidati su tematiche belle da spolpare. ;-)