Nel corso di Future Decoded 2015 , evento organizzato da Microsoft a Roma che ha visto la partecipazione del CEO della Corporation Satya Nadella , sul palco dell’Auditorium della Capitale sono state messe in mostra tutte le tecnologie che costituiscono il fiore all’occhiello dell’azienda di Redmond. Tutte, quasi nessuna esclusa, hanno un fattore comune che fino a pochi anni fa sarebbe stato impossibile da prevedere: devono qualcosa all’opensource, e dimostrano nei fatti qual è il nuovo approccio che l’azienda sta seguendo nel suo nuovo corso.
Il merito di questa spinta rinnovata all’innovazione e della ritrovata popolarità tra gli addetti ai lavori è senza dubbio di Nadella: ma sarebbe ingenuo ignorare che nel corso degli ultimi anni, prima che Ballmer cedesse lo scettro al suo successore, Microsoft ha condotto una campagna di reclutamento che ha portato tra le sue fila alcuni nomi importanti che hanno contribuito a cambiare la sua mentalità. Tra questi c’è Erich Gamma , noto a molti come uno dei componenti della celebre gang of four : assieme a Helm, Johnson e Vlissides è stato autore del libro Design Patterns – Elementi per il riuso di software ad oggetti che ha reso tanto popolare il nuovo approccio alla programmazione affermatosi a partire dalla seconda metà degli anni ’90 del secolo scorso.
Strappato a IBM, dove aveva contribuito in modo decisivo allo sviluppo di Eclipse, oggi Gamma continua il suo lavoro assieme al suo team a Zurigo per creare uno strumento per gli sviluppatori anch’esso inedito nella storia di Microsoft: Visual Studio Code è un editor cross-piattaforma compatibile con Git e con un supporto esteso a oltre una trentina di linguaggi, alcuni dei quali molto distanti dallo storico framework adottato a Redmond. Gamma ha accettato di raccontare a Punto Informatico questa trasformazione di Microsoft che sta vivendo in prima persona, egli stesso contribuendo al cambio di mentalità e approccio che l’azienda di Windows e Office sta affrontando in questi mesi.
La prima domanda ovviamente ruota attorno alla partenza da IBM, al saluto al progetto Eclipse cui tanto ha contribuito e l’avvicinamento ai nuovi strumenti legati al Web: “È la nuova sfida – racconta – Quello che abbiamo fatto negli anni con Java è stato molto bello, ma se si guarda al JavaScript oggi si vede una possibilità di far girare il proprio codice su ogni browser di qualunque computer: un’opportunità incredibile”. Per questo, dopo qualche iniziale titubanza ci confessa, ha deciso di accettare l’offerta di Microsoft: “Ci ho messo un paio di mesi a decidermi, ma alla fine mi sono convinto a salire a bordo: innovare la tecnologia Web è la via migliore per proseguire nella tradizione di innovazione di Java. In passato se pensavi alla portabilità pensavi a Java, oggi pensi a JavaScript”.
L’obiezione che muoviamo è ovviamente che in realtà le promesse e le premesse di Java non sono mai state realmente mantenute : la portabilità senza necessità di rivedere il codice si è rivelata una chimera. “Sì, ma ci siamo andati vicini – ribatte Gamma – e con Eclipse abbiamo messo a disposizione strumenti molto utili in questo senso. Con Javascript però puoi arrivare facilmente a device come gli smartphone, ai browser, e sfruttare davvero questa tecnologia per far eseguire applicazioni di livello desktop”. Restano da convincere solo gli scettici che dubitano della effettiva portata di JavaScript: “Inizialmente non era stato concepito per questo scopo, ma oggi è stato fatto un grande progresso: ci sono voluti più di 5 anni di lavoro, con tutte le standardizzazioni, ma oggi abbiamo anche strumenti più potenti come TypeScript che consentono di lavorare allo sviluppo di applicazioni di ampio respiro”.
È il caso del già citato Visual Studio Code : l’editor è stato scritto in TypeScript , linguaggio opensource creato da Microsoft che il team di Gamma ha adottato sin dagli albori. TypeScript, al contrario di quanto accaduto in altre occasioni, non è un dialetto costruito ad hoc da Redmond per i suoi scopi: è un linguaggio con caratteristiche superiori a quelle dell’originale, ma che una volta compilato genera un codice JavaScript compatibile al 100 per cento con lo standard. “Programmare in JavaScript, dice uno dei miei colleghi, è come scolpire codice nella roccia: non puoi cambiare quanto hai realizzato ed è facile commettere errori. TypeScript offre una soluzione al problema di scalabilità di JavaScript, offre maggiore struttura e strumenti per modificare rapidamente il codice o effettuare dei test”. Senza problemi di tecnologia proprietaria o lock-in , aggiunge, visto che è opensource.
La questione successiva che scegliamo di trattare nel corso della nostra conversazione è il nuovo slogan con cui Nadella motiva le sue truppe: mobile first, cloud first . Chiediamo a Gamma come vede questo cambiamento nelle priorità di Microsoft: “C’è una differenza tra quello che sta avvenendo lato server e lato client sul fronte dello sviluppo, ma ci sono dei fattori comuni che stanno arricchendo entrambe le esperienze: penso a l’esperienza node.js , a quella ASP, che hanno fornito molti spunti per quello che deve accadere oggi e nel futuro prossimo. E poi questa evoluzione dei linguaggi e di alcuni strumenti fa sì che quello che sviluppi per i client possa girare anche sui server, ed è una prospettiva esaltante per uno sviluppatore”.
Gamma spiega a Punto Informatico come stia cambiando il modo stesso di concepire la scritture del codice da parte degli sviluppatori : non è necessario sempre imparare un linguaggio nuovo per affrontare un nuovo tipo di applicazioni, a volte si può puntare su tecnologie ed esperienza che si hanno già nel proprio portfolio e riproporre gli stessi approcci e le stesse soluzioni in diversi ambiti. “Conosci già certi strumenti, ti sono familiari, sei in grado di essere produttivo. Quello che c’è di molto buono è la possibilità di scelta: ci sono più opzioni aperte oggi per uno sviluppatore, e a seconda del tipo di compito che mi aspetta posso scegliere lo strumento migliore”.
Bisogna anche tenere conto dell’esperienza e delle competenze delle nuove generazioni, dice Gamma: “Pensiamo ai cosiddetti millennial : sono sviluppatori che hanno iniziato proprio con JavaScript, e possono puntare su questi strumenti per lavorare sia lato client che lato server. Altri sviluppatori con più esperienza possono preferire c#, asp.net: noi dobbiamo offrire agli sviluppatori su tutte le piattaforme un’esperienza comune, e JavaScript ad esempio ha dei vantaggi come la mancanza di compilazione e la possibilità di eseguire codice direttamente nel browser. Inoltre – aggiunge – dobbiamo puntare a offrire un’esperienza simile anche ad altri linguaggi ed è in questa direzione che ci stiamo muovendo”. Tutto questo parlare di JavaScript lascia intendere anche un altro pensiero che resta sottinteso: Windows non è più necessariamente il centro dell’esperienza d’uso . Gamma da parte sua risponde mettendo in chiaro qual è il suo lavoro: “A me quello che importa sono gli sviluppatori, e gli sviluppatori lavorano su molte piattaforme: nel corso della mia carriera mi sono sempre occupato degli sviluppatori, e mi piacciono i tool di sviluppo perché posso usarli io stesso, posso crescere con loro, mi permettono di contribuire alla crescita di un progetto”. Nel corso della sua presentazione, gli facciamo presente, è passato nel corso di una demo da Windows a OSX: “Quello che ho dimenticato di fare – aggiunge – è stato passare a un’altra virtual machine che avevo pronta con a bordo Linux: non stiamo lavorando solo per gli sviluppatori Windows che usano Windows, ci sono molti sviluppatori che usano Mac, e possiamo offrigli strumenti personalizzati e utili per supportarli anche su quelle piattaforme”.
Nel corso della conversazione ricorre spesso una parola: cross-platform . Gli chiediamo di spiegarcene la sua definizione: “Da utente, devi sentirti soddisfatto e a tuo agio usando il software: devi sentire che è stato scritto per quella piattaforma, che è un prodotto nativo. Un esempio: Office su iPad deve funzionare come un’app iPad, Visual Studio su Mac deve essere un software per Mac: con tutte le caratteristiche tipiche che ci si potrebbe attendere, dall’icona nel dock ai menù nella barra”. È per questo che si è avvicinato al Web, gli chiediamo: “La tecnologia del Web di fatto è nativa su tutte le piattaforme: Monaco ( uno dei primi progetti a cui Gamma ha lavorato in Microsoft, ndr ) era un editor Web, basato su una tecnologia Web come Electron. Tutto materiale che gira in un browser, che grazie alla tecnologia e agli strumenti Electron gira di fatto su un desktop Windows, Linux o Mac. Questo è un modo per essere realmente nativi e cross-platform, ma non c’è solo questo: pensate all’accessibilità, da garantire su tutte le piattaforme”.
Avvertiamo che Gamma fa una distinzione tra portable e cross-platform e gli chiediamo di esplicitarla: “La mia aspettativa per un’applicazione cross-platform è che sfrutti ogni piattaforma la meglio: se uso uno screen reader su Windows, su Mac dovrò usare lo strumento apposito offerto da quel sistema operativo, lo stesso su Linux e così via. Il punto è sfruttare e far leva sulle capacità delle singole piattaforme per offrire un prodotto all’altezza, offrendo strumenti che siano utili ed efficaci per l’utente. Questo – conclude – è davvero cross-platform”.
L’argomento successivo che tocchiamo è legato strettamente al precedente: l’approccio opensource consente di reimpiegare codice e funzioni sviluppati da altri per migliorare il risultato complessivo . “È questo l’opensource! – esclama Gamma – Noi lavoriamo agli strumenti di sviluppo come Visual Studio Code, ma contribuiamo anche al progetto JavaScript e a TypeScript. Quello che non risulta evidente è che, per esempio, Code si basa in parte anche su Chromium ovvero la tecnologia Google alla base di Chrome: è un fatto che potrebbe sorprendere qualcuno, ma Code si basa su GitHub e Chrome, due concorrenti di Microsoft a ben pensarci, ma l’obiettivo è quello di costruire qualcosa di buono e se è possibile anche restituire qualcosa in termini di contributi ai progetti da cui attingi”.
Dalle parole di Gamma permea lo spirito che abbiamo visto filtrare in questi mesi dalle presentazioni e dalle parole dette in pubblico da tutti i portavoce di Microsoft: non ci sono più strumenti, linguaggi e software accettati e altri da scartare a priori , esiste volta per volta la soluzione giusta al problema che si sta affrontando e non c’è problema se è opensource o l’ha sviluppata già qualcun altro. “È stata una vera evoluzione – conferma Erich Gamma a Punto Informatico – Sono entrato in Microsoft 4 anni fa ed è stato emozionante guardare questo cambiamento: oggi è facile proporre e usare opensource, contribuire all’opensource, e Visual Studio Code è un esempio di questo tipo di mentalità di lavoro”. Di fondo l’approccio seguito per lo sviluppo di un software non cambia, ci spiega, ma tramite GitHub si instaurano attive forme di collaborazione che risultano molto utili, con un utente sconosciuto in Cina che può segnalarti dopo appena 1 ora la soluzione a un bug che hai appena scovato.
A Gamma giriamo una domanda che abbiamo già fatto in passato parlando di questi temi : come si gestisce il controllo qualità in un contesto come questo dove chiunque può proporre del codice? “È qui che entra in gioco il nostro lavoro come team: se scoviamo un bug in un componente è nostra responsabilità risolverlo, e la nostra responsabilità non cambia rispetto alla qualità finale del nostro software”. A volte però, gli diciamo, bisogna fare delle scelte: “È una vera collaborazione – ribatte – devi avere fiducia nel prossimo. Un esempio: sviluppando è importante avere uno strumento affidabile per richiamare ed evidenziare il codice che stai editando, e per questo Visual Studio Code una un componente opensource: ci siamo accorti che soffriva di qualche problema di performance, per questo abbiamo investito tempo e risorse su questo componente e abbiamo garantito un miglioramento delle performance del 20 per cento. E abbiamo restituito questo miglioramento alla community, che ha visto un contributo positivo e l’ha accolto permettendoci di guadagnare la loro fiducia”.
Gli chiediamo se lo stesso approccio lo sta seguendo anche Microsoft al suo interno: “Il mio team è un po’ particolare, è formato da poche persone e funziona come una startup. Il resto di Microsoft, però, sta attraversando un cambiamento costante, da quando sono arrivato forse sono stati tre i cambiamenti significativi dell’organizzazione: tutti volti ad affrontare questa apertura alla openess, e uno dei propositi di questo cambiamento è cercare di risultare attraenti e interessanti anche per chi non usi già gli strumenti e il software di Microsoft”. Gamma ci spiega che oggi le valutazioni sul rendimento interno sono legate anche alla capacità di collaborare con i colleghi , consentire a loro di svolgere al meglio il loro lavoro e sfruttare al massimo il prodotto degli sforzi altrui per fare bene il proprio: “C’è stata una profonda auto-analisi per cambiare i valori interni della società, per scardinare quei famosi cinque regni che si guardavano in modo ostile l’un con l’altro”.
Per concludere gli poniamo una domanda scherzosa per salutarci con un sorriso: tirando le somme, Visual Studio è un IDE migliore di Eclipse? Gamma ride, ma poi ci dà una risposta seria: “Eclipse fa molte cose molto bene, come con Java, ma Visual Studio è stato oggetto di maggiori investimenti. Se investi ottieni quello che per cui paghi: Eclipse nell’ultimo paio d’anni si è un po’ seduto sugli allori, e se stai lavorando uno strumento per lo sviluppo non è un atteggiamento molto salutare”. Che poi, a ben guardare, è un po’ quello che è successo a Microsoft : e che Nadella, con il suo arrivo, ha contribuito a cambiare.
a cura di Luca Annunziata