Un codice cattivo può funzionare ma alla lunga può mettere in ginocchio intere organizzazioni. Ogni anno un numero incalcolabile di ore e risorse va sprecato a causa di codice scritto male. Ma non bisogna rassegnarsi: ce lo dice un guru.
Apogeonline: Proviamo a calcolarlo, invece. Quanto tempo, o denaro, sprechiamo a causa del cattivo codice?
Robert Uncle Bob Martin: Non sono certo che un dato del genere si possa misurare con precisione. La mia stima è che le cattive pratiche software raddoppino o triplichino il costo di produzione del software, comprese le perdite di tempo e denaro in debugging e riscritture.
Qual è la scusa peggiore per non adottare un metodo Agile di sviluppo software?
È solo una moda. Questa scusa è sempre pessima perché indica che la persona non si è realmente interessata ad Agile. Ed è specialmente pessima perché Agile cresce e si conferma da quasi vent’anni. Le mode tendono a non avere questa durata.
Come hai iniziato la tua carriera? E che cosa è rimasto esattamente uguale da allora?
La mamma mi comprò un piccolo computer di plastica per il mio dodicesimo compleanno. Era una macchinina che (mi) richiedeva la conoscenza dell’algebra di Boole. Mi conquistò. Da quel momento seppi che volevo programmare computer. Quello che non è cambiato è il mio desiderio di programmare computer e la vera natura dei programmi.
I linguaggi sono cambiati e anche l’hardware. I progressi sono straordinari. Ma il software di ieri e quello di oggi sono fatti degli stessi mattoni: sequenza, selezione, iterazione. Un programmatore degli anni sessanta strabuzzerebbe gli occhi davanti al nostro hardware, ai nostri IDE, ai nostri linguaggi; Ma gli basterebbe poco aggiornamento per scrivere codice identico a quello che scriviamo oggi. Perché le idee e le strutture di base sono rimaste quelle.
A che età è meglio cominciare a considerare il coding?
Beh, io ho iniziato a dodici anni…
Che cosa ti piace di più di Clean Code?
La mia regola preferita è Small Functions, funzioni piccole. La mia disciplina preferita è la Regola del boy scout: il codice che lasci deve essere più pulito di quello che hai trovato.
Era più semplice programmare nel secolo scorso, quando i sistemi erano più semplici, oppure oggi, grazie ai bravi programmatori che sviluppano framework e librerie?
Certe attività sono più facili oggi. Posso compilare un milione di righe in meno di un minuto. Posso mettere a punto un sistema da un volo a undicimila metri sopra l’Atlantico, mentre guardo la Groenlandia dal finestrino e sorseggio un Gin and Tonic.
D’altra parte, il lavoro della programmazione è facile o difficile come è sempre stato. Le questioni da risolvere sono sempre le stesse. Le agende sono compresse e non c’è mai tempo, ma è stato sempre vero. Le sessioni notturne di debugging, la corsa a risolvere i problemi in produzione, le chiamate frustranti dei clienti, il servizio sul campo… è sempre stato così.
Qual è il setup ideale per il tuo desktop?
Uso un Macbook Pro e ci faccio girare sopra IntelliJ.
Hai mai pensato di lavorare seriamente da apparecchi mobile?
No. Ho scritto codice Lua sul mio iPad, con una tastiera Bluetooth. Non è un’esperienza che intendo ripetere. Semplicemente, una tavoletta non ammette quel livello raffinato di editing che serve a un programmatore.
C’è ancora qualcosa che attende di essere scoperto o hai raggiunto la conoscenza definitiva di come si diventa buoni artigiani del software?
È una domanda insidiosa. Penso che il campo del software sia completo; abbiamo appreso almeno il 95 percento di quello che c’è da imparare sulla scrittura di software. Ritengo che i linguaggi di tendenza non siano realmente migliori di quelli che vedevamo qualche anno fa. Anche i nuovi framework che vediamo migliorano la situazione in senso molto relativo. In breve, ritengo che l’industria stia andando in vacca: si fanno cambiamenti per avere cambiamenti invece che per migliorare.
Peraltro, la maggior parte dei programmatori ha molto da imparare su come si scrive il software. Come gruppo, siamo relativamente ignoranti del nostro stesso campo. La gran parte dei programmatori di oggi non saprebbe disegnare un diagramma di flusso, o una rete di Petri. Molti non hanno mai scritto in assembler. I più non hanno idea di che cosa sia la programmazione strutturata né tanto meno quella a oggetti. Per la gran parte dei programmatori c’è ancora moltissimo da imparare.
Direi che ci stiamo aspettando troppo dal software. Crediamo che ci sia da imparare più di quanto rimanga in realtà. Molti pensano per esempio che siamo vicini alla creazione di intelligenze di livello umano. C’è gente con una fiducia quasi cieca che in poco tempo avremo sulle strade auto che guidano da sole. Lo ritengo selvaggiamente – e persino pericolosamente – ottimistico.
Cambiare architetto
Ma abbiamo imparato qualcosa. Ci sono sorprese in serbo per noi? Sicuramente ce ne sono; ma non con l’hardware di oggi. Sono pressoché certo che abbiamo esaurito le cose che si possono imparare dalla programmazione di architetture di von Neumann.
Programmare non basta più. Bisogna programmare bene.