Home
Io e… lo sviluppo software

21 Settembre 2017

Io e… lo sviluppo software

di

È ancora tempo di #saldiAPOGEO e per l'occasione parliamo di programmazione ed ebook con un autore storico di Apogeonline.

Tra iniziative di coding, corsi di massa online, comunità come Stack Overflow o GitHub e app come Swift Playgrounds per iPad, senza contare hackathon ed eventi dedicati, è più difficile evitare la programmazione che avvicinarvisi. Al tempo stesso, sviluppare capacità degne di nota rimane l’inizio di un mestiere vero e impegnativo. Per questo qualsiasi programmatore serio tiene un libro sulla scrivania, o un ebook nel proprio reader; quando serve un riferimento da consultare con calma, una trattazione specifica supera sempre la ricerca via Google. Ecco perché gli ultimi dieci giorni dei #saldiAPOGEO sono dedicati espressamente alla programmazione e perché li iniziamo con un’intervista assolutamente rappresentativa del tema.

Io e… lo sviluppo software

Apogeonline: In una frase, il panorama attuale nel tuo settore. Andrea C. Granata: Il mestiere del programmatore è sempre in trasformazione, ma negli ultimi anni il cambiamento è stato davvero enorme. Quando ho iniziato a scrivere software si lavorava con la reference guide sulla scrivania, un compilatore e poco altro, e si riusciva a realizzare software di grande qualità. Adesso l’insieme delle competenze necessarie per fare la differenza è veramente ampio e la quantità di linguaggi e framework interessanti a disposizione è incredibile. Ci sono così tante opzioni che si rischia di dare quasi più importanza alla scelta della propria toolchain che al valore di quello che si sta implementando. Il cambiamento però non si limita agli aspetti meramente tecnologici: il manifesto Agile prima e la rivoluzione DevOps poi hanno totalmente stravolto il modo in cui i programmatori collaborano tra di loro e portano le proprie realizzazioni in produzione. In sintesi il settore vive una continua fase di transizione, il che lo rende molto stimolante.

Imparare a programmare in Java con Minecraft

Oggi un programmatore può iniziare molto presto.

Qual è stato il libro più interessante per la tua professione che hai letto ultimamente?
L’editoria informatica sforna una quantità incredibile di titoli, molti dei quali purtroppo sono solo libri scritti in fretta per poter arrivare con il giusto time to market e coprire uno specifico argomento diventato di tendenza. Orientarsi non è dunque facile e mi trovo spesso a iniziare libri che mollo dopo poche pagine. Per questo cerco di indirizzarmi verso la lettura di testi magari di non recente pubblicazione ma universalmente riconosciuti come classici, o quantomeno non sono legati a una specifica versione di un linguaggio e/o di un framework. Recentemente ho letto Linux Kernel Development di Robert Lowe. Uscito nel 2003, nel 2010 è arrivato alla terza edizione. Non certo un libro di attualità ma illuminante, in grado di farti entrare nei meandri del kernel Linux e capire i fondamenti di questo sistema operativo molto più dell’ultima guida su RedHat Linux o su Ubuntu. Un altro libro che ho letto è il DevOps Handbook di Gene Kim, Patrick Debois, John Willis e Jez Humble, un’efficace sintesi di DevOps oggi; contiene tutto quello che uno sviluppatore moderno deve sapere per potersi inserire in organizzazioni che hanno l’esigenza di accelerare il proprio ciclo di consegna del software senza comprometterne la qualità.

Qual è stato il cambiamento tecnologico fondamentale per il tuo lavoro negli ultimi cinque anni?
Negli ultimi cinque anni sono cambiate così tante cose che è molto difficile identificare il cambiamento più importante. Per dare un’idea, dal 2012 a oggi sono stati pubblicati circa tredicimila libri in lingua inglese con soggetto Computer Science, circa un quinto dei quali sulla programmazione. Tante novità quindi e un’impressionante quantità di piccoli e grandi cambiamenti. Il concetto stesso di programmatore si è allargato ed è mutato. Github e Stack Overflow hanno sicuramente cambiato il modo in cui i programmatori si scambiano codice e risolvono i problemi, così come il Behavior Driven Development e il Test-Driven Development hanno alzato l’asticella della qualità del software e modificato l’approccio dei programmatori alla scrittura del codice. Vagrant e Docker hanno quasi azzerato il tempo necessario al setup di un ambiente di sviluppo, così come gli strumenti di continuous integration e deployment, l’infrastructure as code e il cloud hanno reso possibile portare un progetto software in ambiente di test o di produzione entro pochi minuti. Qualche anno fa tutto questo non era nemmeno immaginabile. Un ultimo accenno va alle architetture serverless: progettare servizi potendo contare su una infrastruttura scalabile ed economica permetterà anche a team microscopici di inventarsi killer application.

Imparare a programmare con Python

Python è un linguaggio molto in voga nel 2017.

Tre cose che un programmatore deve fare ogni giorno.
Il lavoro del programmatore è un lavoro creativo: non puoi fare la differenza se ti limiti al taglia e incolla di snippet più o meno pronti trovati su internet. Come in tutti i lavori creativi, mantenere la qualità di quello che si fa è determinante ed è in gran parte questione di disciplina. Non si riesce certo a scrivere del codice pulito semplicemente trovando la giusta ispirazione. Chuck Close diceva:

L’ispirazione è per i dilettanti. Noialtri semplicemente arriviamo e ci mettiamo al lavoro.

una sintesi perfetta di quello che è anche il mio pensiero. La prima cosa che deve quindi fare un programmatore è sforzarsi di mantenere alta la qualità del software che scrive, senza farsi schiacciare della pressione delle scadenze. Scrivere ad esempio i propri unit test non ti farà rallentare il lavoro se ti abitui a farlo regolarmente, anzi, proprio sotto pressione ti aiuterà a non fare disastri. La seconda cosa è ritagliarsi del tempo per studiare cose nuove. Nuovi linguaggi, nuovi paradigmi e nuovi framework. Prima di dire che il linguaggio X è peggio del linguaggio Y, scrivici almeno qualche migliaio di righe di codice e prova a capire cosa ti offre quella tecnologia. La terza cosa è lavorare sui soft skill. Sempre più raramente si realizzano progetti importanti in solitudine. Puoi anche essere il nuovo Knuth, ma se hai un atteggiamento negativo verso i tuoi colleghi o se sei troppo introverso finirai per odiare il tuo lavoro o per sentirti emarginato.

Qual è l’aspetto del tuo lavoro che continua a piacerti nonostante l’abitudine?
È una continua sfida. Ricordo quando copiavo gli esempi di codice Basic sul mio Commodore 64 e aspettavo di vedere comparire una semplice stringa. È la stessa sensazione che provo oggi quando mi spacco la testa per capire il borrowing/ownership di Rust o quando devo implementare una infrastruttura complessa in cloud con poche righe di codice.

Io e… gli ebook

Che vantaggio fondamentale trovi nel leggere ebook?
Nei testi tecnici il poter ricercare comodamente parole chiave nel testo non ha eguali. Provate a farlo con un manuale di mille pagine.

Quale dote apprezzi di più in un ebook fatto come si deve? La corretta formattazione. Forse è una risposta un po’ banale, ma gli ebook devono offrire una esperienza di lettura confortevole. Se qualcosa si vede o si legge male – e purtroppo capita – la frustrazione è tanta. I formati degli ebook devono sicuramente fare ancora molta strada, siamo tuttora in una fase tecnicamente embrionale.

Sviluppare applicazioni con Angular

Se c’è una web app, c’è di mezzo quasi certamente Angular.

Qual è stato il tuo primo testo pubblicato in formato ebook?
Ancora nulla, ho una marea di buone intenzioni e appunti che potrebbero diventare un libro/ebook. Se solo mi decidessi…

In quale momento della giornata ti trovi più spesso a leggere un ebook?
Soprattutto nel weekend, mentre durante la settimana mi capita le rare volte che prendo i mezzi pubblici o in pausa pranzo.

Io e… il futuro prossimo

Qual è la prossima sfida professionale che ti attende?
Per percorso professionale e per anzianità ho un ruolo sempre più manageriale e sempre meno operativo. Questa crescita mi ha portato ad allontanarmi dai temi più tecnici per dedicarmi ad altro, facendomi scoprire ad esempio come finanza, organizzazione, pianificazione e controllo siano terreni che, approfonditi, rivelano anch’essi un certo fascino. Diventare un manager che scrive all’occorrenza del buon codice e che è in grado di capire perché un server sta performando male è una sfida non banale. In Italia, se sei arrivato in certe posizioni di responsabilità, è quasi impossibile che tu abbia ancora la possibilità di guidare un team nelle scelte tecniche, magari contribuendo in prima persona a parte delle implementazioni.

Come vedi i prossimi tre anni di evoluzione del tuo settore?
L’asticella della qualità del software e delle architetture in generale è stata alzata incredibilmente dai grossi player tecnologici come Google, Facebook, Microsoft, Amazon e Apple e gli utenti che usano i loro servizi online – i loro prodotti in generale – si aspettano la stessa qualità ovunque. Hai mai visto una pagina di cortesia su Facebook durante uno dei loro aggiornamenti software? Io no, eppure fanno evoluzioni continue. Nel 2013 Amazon faceva un rilascio in produzione ogni 11,3 secondi; oggi c’è ancora chi fa fatica a portare in produzione correzioni di bug una volta alla settimana.

Sviluppare applicazioni Facebook

Fior di programmatori si muovono nell’universo di Facebook.

La nuova sfida è dunque sulla resilienza delle architetture, sulla possibilità di fare continuous testing e delivery, sull’avere software con pochissimi bug e disegnato a stretto contatto con il business e pensando all’esperienza d’utilizzo degli utenti.

Qual è il libro che ancora non sei riuscito a scrivere?
Ho lavorato in realtà minuscole così come in grandi organizzazioni. Queste ultime hanno problemi, e modi di gestirli, che molto spesso sono ingoti a chi lavora nelle startup o nelle microaziende. È facile fare DevOps in una azienda di cinquanta persone che offre un servizio online, ma farlo in una Banca con migliaia di dipendenti è tutt’altra sfida. Raccontare come si possono armonizzare le migliori pratiche IT anche in aziende superstrutturate e un po’ burocratiche credo possa rivelarsi interessante.

Qual è il prossimo ebook che intendi leggere?
Pensieri lenti e veloci di Daniel Kahneman e Spark in Action di Petar Zečević e Marko Bonaći.

…e tu?

È tempo di #saldiAPOGEO! Impara qualcosa di nuovo, aggiornati, approfondisci. Da oggi al 30 settembre tutti i nostri ebook di programmazione costano la metà. Li trovi su LaFeltrinelli, Kobo, Google Play Book, BookRepublic, IBS, Amazon. Le offerte non finiscono qui: scopri di più.

L'autore

  • Andrea C. Granata
    Andrea C. Granata vanta oltre 25 anni di esperienza nel mondo dello sviluppo software. Ha fondato la sua prima startup nel 1996 e nel corso degli anni si è specializzato in soluzioni per l'editoria e il settore bancario. Nel 2015 è entrato a far parte di Banca Mediolanum come Head of DevOps, ruolo che oggi ricopre per LuminorGroup.

Iscriviti alla newsletter

Novità, promozioni e approfondimenti per imparare sempre qualcosa di nuovo

Gli argomenti che mi interessano:
Iscrivendomi dichiaro di aver preso visione dell’Informativa fornita ai sensi dell'art. 13 e 14 del Regolamento Europeo EU 679/2016.