Introduzione: tendenze, previsioni, oroscopi…
Come in altre occasioni [1], vogliamo raccogliere in una panoramica le tendenze tecnologiche più promettenti e importanti per il 2016, e in particolare quelle legate al mondo dello sviluppo software e delle metodologie per farlo, senza tralasciare altri importanti argomenti. Di queste previsioni si occupano alcuni tra i più importanti attori del mondo della consulenza globale, come accade nel caso di Gartner [2] che ogni anno rilascia queste informazioni, rilanciate da siti specializzati [3] che fanno di questo momento un importante appuntamento all’inizio di ogni anno.
Vorremmo però fare alcune precisazioni in merito all’approccio che spesso viene seguito con questo tipo di informazioni. Anzitutto, c’è il rischio di “fare l’oroscopo” vale a dire di voler prevedere il futuro, anche se su basi — si spera — più affidabili di quelle legate al movimento apparente nel cielo degli astri e dei pianeti, peraltro in un sistema geocentrico… Ma non è questo l’approccio che ci interessa; ci interessa invece prendere alcuni temi come spunto per analizzarne lo stato attuale, i possibili sviluppi, le implicazioni in termini relativamente pratici. Diciamo che ci interessa, in questo articolo, avere uno sguardo piuttosto tattico e volutamente non strategico, fermo restando che cercare di comprendere le tendenze per molti anni a venire è attività assolutamente legittima e anche doverosa, ma che non ci riguarda direttamente.
Non parleremo pertanto di tutte quelle tendenze che al momento sono sicuramente importanti, ma che sono abbastanza lontane dalla concretizzazione, non solo per ragioni tecniche. Per fare un esempio, non parleremo di sicuro di tutto ciò che riguarda la robotica, i prototipi di automobili autoguidate, i droni: si tratta di realtà in veloce espansione, in certi casi ormai tecnologicamente affermate (i droni, ad esempio) ma che presentano una serie di problemi al momento irrisolvibili legati agli aspetti legali e assicurativi diversi a seconda delle varie legislazioni.
Se i droni “giocattolo”, infatti, sono stati uno dei regali natalizi più gettonati dell’anno appena concluso, un uso professionale di dispositivi più complessi e performanti deve conformarsi a una rigida normativa e al possesso di requisiti e competenze da parte dell’operatore tali da limitarne, per ora, l’adozione e la diffusione per quei servizi di cui si parla con entusiasmo da tempo, come la consegna di pacchi postali o il trasferimento veloce di materiali, parti di ricambio etc. ma che non vedremo in azione ancora per un po’.
Non parleremo neanche della ricarica energetica a distanza delle batterie dei dispositivi mobili, che sarà sicuramente uno delle tecnologie industriali di maggior sviluppo nei prossimi anni: per quanto cruciale per la sempre maggiore diffusione di dispositivi mobili, e per quanto si sia sempre più prossimi alla diffusione della ricarica wireless a distanza, è un tema che non è possibile legare direttamente allo sviluppo o alle architetture dei sistemi…
Glocal: tra globale e locale
Una precauzione necessaria quando si affrontino tematiche di questo tipo è di non cadere nella trappola della globalizzazione forzata. Se è vero che viviamo in un mondo globalizzato, è vero anche che certe differenziazioni di contesto — legate all’area geografica, alla cultura dominante nel proprio Paese e alle tradizioni diffuse — continuano a sussistere.
Spesso certe liste sulle innovazioni o sulle tendenze tecnologiche del futuro immediato sono troppo “americano-centriche”. Vero che è ancora dagli USA che arriva la spinta propulsiva per l’innovazione nel mondo digitale (e non solo), ma riproporre pedissequamente certi modelli in situazioni differenti è un errore metodologico e culturale. Il sistema di finanziamento delle imprese innovative, ad esempio, è completamente differente tra USA ed Europa, ad esempio; la diffusione e la pervasività di certi dispositivi e di certe infrastrutture tecnologiche è molto diverso tra USA ed Italia, ad esempio. Per non parlare dell’approccio culturale alla gestione del lavoro e alla diffusione delle competenze tecniche. E le previsioni di inizio anno vengono in genere da centri di documentazione statunitensi e guardano primariamente a quella società e a quel mercato; quindi vanno rivedute e adattate.
Occorre seguire un approccio che riconosca l’aspetto local di qualsiasi applicazione, anche laddove si tratti di una tecnologia global. Di fatto, nel nostro mondo digitale 2.0, basato sulle reti — intese sia come infrastrutture che come connessioni di persone e di informazioni — la centralità delle comunità non può essere sottovalutata. E le community tendono a organizzarsi su base locale, collegate a un territorio e a un’area [4].
Tra ingenuo ottimismo e visioni apocalittiche
Un’ulteriore precisazione: non faremo approfondite considerazioni sull’impatto antropologico e sociale delle tecnologie, ma non vogliamo avere un atteggiamento di ingenuo ottimismo verso l’innovazione: certi prodotti e certi processi influenzano anche pesantemente strutture profonde del pensiero e relazioni sociali, e occorre essere consci dei pericoli insiti in certe adozioni, insieme agli indubbi vantaggi pur senza lasciarsi andare a visioni “distopiche”.
Con queste premesse, vediamo un po’ quali sono le tendenze cui prestare maggiore attenzione. Divideremo gli argomenti in quelli legati al contesto digitale in generale, quelli inerenti allo sviluppo software e ai linguaggi di programmazione, le tendenze relative allo UX design, senza dimenticare ciò ricade nel variegato mondo delle metodologie e della gestione di progetto.
Il contesto digitale
Chiaramente certe tecnologie si sviluppano per risolvere problemi o soddisfare esigenze che si manifestano in un ambito più ampio, in un contesto più generale. Ma è anche vero che la disponibilità di determinati prodotti e di determinate applicazioni può contribuire a creare scenari inizialmente non previsti e che si sviluppano per aggregazione.
IoT, device mesh, ambient user experience… insomma: quella roba lì…
Un tempo c’era un computer sopra una scrivania, in ufficio e/o a casa. Adesso siamo in presenza di una moltiplicazione di dispositivi che molti di noi si trovano a utilizzare in maniera più o meno coordinata, come punti di accesso a un mondo sempre più interconnesso. Un primo aspetto da tenere presente è che alcune operazioni le svolgiamo indistintamente con tutte le tipologie di device (per esempio controllare la posta elettronica), mentre altre preferiamo o siamo costretti a farle solo su un certo tipo di device: poco comodo utilizzare un notebook per consultare le mappe stradali in movimento, altrettanto improbabile realizzare un progetto CAD esclusivamente sul tablet…
Questo reticolo di dispositivi (device mesh) presenta delle interessanti potenzialità già oggi. Attraverso il collegamento a internet, infatti, è possibile, come tutti sappiamo, far dialogare tra loro i vari smartphone, tablet, notebook, orologi e occhiali (i wearables), smart TV e così via. Il passo successivo potrebbe essere quello di mettere in comunicazione diretta i diversi device, anche in assenza di rete, cosa già possibile con protocolli quali il bluetooth, ad esempio. Fatto salvo l’interesse dei vari produttori a impedire una interconnessione semplice tra oggetti di marche diverse e a favorire invece quello tra oggetti con lo stesso marchio, più che di una tendenza siamo in presenza di una solida realtà.
Il passo successivo, e qui sta l’aspetto innovativo, è nelle occasioni che si potranno cogliere dall’aggregazione dei dati prodotti da questo reticolo di dispositivi: con il diffondersi di modelli di smartphone o tablet sempre più sofisticati, senza pensare alle potenzialità dei wearables, si è in presenza di un numero sempre più elevato di sensori di tipo diverso distribuiti sul pianeta, o perlomeno nelle aree più ricche o popolate. E, solo per limitarci a un esempio semplice, le “centraline meteo” mobili presenti sui modelli più avanzati di tablet e smartphone dotati — spesso all’insaputa dei possessori — di decenti sensori di umidità, temperatura e pressione atmosferica, rappresentano un’espansione senza precedenti delle possibilità di raccogliere dati di un certo tipo.
Organizzare per l’elaborazione questa messe di dati, integrandoli e combinandoli con tutti gli altri provenienti da altri sensori — quelli nelle automobili, solo per fare un esempio — rappresenta una sfida e un’opportunità per i prossimi anni che in molti già stanno percorrendo. Occorre, chiaramente, una maturazione delle piattaforme IoT (Internet of Things) per vedere in questo e nei prossimi anni sicuri sviluppi, sia da parte dei grandi gruppi IT che possono infrastrutturalmente raccogliere e gestire tali dati, sia da parte degli sviluppatori “finali” che potranno sempre più creare applicazioni per erogare servizi appoggiandosi a tale infrastruttura. Ma siamo in presenza di una tendenza ormai consolidata.
Chiaramente, tutto questo si porta dietro un’infinita serie di interrogativi e dubbi concernenti il tanto sbandierato diritto alla riservatezza, il possibile controllo occulto (e anche non occulto…) che è possibilie operare sulla libertà dell’utente e così via. Non sono questioni da trascurare.
Realtà virtuale e aumentata
Altra tendenza generale, legata anche al mondo dello sviluppo software, è quello della realtà virtuale e della realtà aumentata. Sappiamo bene che i due termini non sono sinonimi, ma possiamo tenerle benissimo insieme aspettndo di vedere se e come, nei prossimi anni, le due cose convergeranno come è probabile. Siamo lontani da una maturità dei prodotti, con numerose soluzioni di tipo diverso, dai famosi occhiali Oculus Rift [5], sogno ormai possibile di ogni videogiocatore — e non dimentichiamo che il propietario dell’azienda… è Facebook — ai numerosi altri dispositivi annunciati per l’anno in corso da parte di colossi come Sony, HTC o Samsung.
Per quanto attiene alla realtà aumentata — ricomprendendo in questa definizione tutte le innumerevoli declinazioni dei termini — accanto ai dispositivi mobile, anche qui si concretizzerà la tendenza all’uso di wearables in grado di aggiungere alla realtà fisica uno strato di significato e di informazioni. Tutto sta nel vedere quali reali applicazioni concrete tali soluzioni potranno avere: a tal riguardo, la storia dei Google Glass è esemplare…
Stampa 3D
Troppo importante per lasciarla fuori da questa rassegna. La stampa 3D non è una novità, è già affermata, ma molti indizi fanno pensare che il 2016 potrebbe veramente essere un anno decisivo per la diffusione delle varie tecnologie di stampa tridimensionale e delle diverse tipologie di stampanti — ne esistono di basate su funzionamenti tra loro assolutamente diversi — sia a livello amatoriale e consumer che a livello professionale e industriale. Con la possibilità di “stampare” usando materiali sempre più diversificati (da certe leghe metalliche al vetro, dalla fibra di carbonio a diversi tipi di resina e così via), la stampa 3D troverà sempre maggior spazio nelle tecniche produttive anche a livello industriale. Insomma… guai a chi ancora pensa si tratti solo di “giocattoli”.
Sviluppo sofware e linguaggi di programmazione
Se per le tendenze generali la “sfera di cristallo” restituisce immagini più sfocate, quando si passa all’ambito più concreto dei linguaggi di programmazione, delle architetture e delle infrastrutture per sostenere lo sviluppo software, diventa più chiaro ragionare sulle tendenze più importanti [6]. Se ci si districa un po’ nella selva di framework, linguaggi, tool di sviluppo e quant’altro, non è poi impossibile scorgere delle chiare tendenze generali.
Linguaggio che va, linguaggio che viene
I linguaggi object-oriented sono uno standard dell’industria del software e difficilmente saranno soppiantati da altro, non solo nel 2016, ma anche per diversi altri anni a venire. Ci siamo occupati recentemente degli ultimi sviluppi di Java [7] che ne rafforzano il ruolo di piattaforma principe per lo sviluppo, specie in ambito Enterprise. Ma già dalla versione 8 Java si è aperto allo stile funzionale [8] e il 2016 potrebbe essere l’anno giusto per molti sviluppatori imparare uno dei vari linguaggi funzionali perché Haskell, Clojure, Erlang e il più noto e diffuso Scala sono pensati per la programmazione parallela, e fin dal principio ben si prestano a supportare una concorrenza spinta.
Non bisogna però dimenticare l’importanza di JavaScript, che si è rinnovato con il rilascio della versione ES6 (ECMAScript 6) avvenuta nell’anno appena passato. JavaScript è ormai il linguaggio principale nello sviluppo web e non solo: le novità della versione 6 (blocchi di visibilità per variabili e costanti, dichiarazioni di costanti grazie alla parola chiave const, l’introduzione delle classi, il supporto ai moduli, e alcune “ripuliture” sintattiche) si faranno sentire sui browser solo nel 2016, quando le versioni successive dei browser Microsoft Edge, Google Chrome e Mozilla Firefox potranno supportare la gran parte di tali nuove funzionalità, con un netto incremento delle prestazioni e di quello che sarà possibile fare con i browser.
Per i programmatori JavaScript, comunque, può essere il caso di cominciare fin d’ora a usare la versione 6 senza preoccupazione grazie a tool come Babel [9] che “traduce” il codice ES6 in maniera che diventi ES5 compatibile con i browser attuali.
Il trionfo del BaaS…
Il Backend as a Service (BaaS) prenderà ancor più piede. Sia gli sviluppatori più piccole che le grandi aziende trarranno grossi vantaggi dalla disponibilità di una infrastruttura già pronta all’uso, scalabile e acquistabile sotto forma di servizio, in grado di fornire immagazzinamento dei dati in cloud, gestione delle notifiche, gestione degli accessi utenti e così. Sono finiti i tempi del “sempre tutto in casa” e, sebbene questo possa creare dei legittimi dubbi riguardo al “possesso” dei propri dati, il BaaS è una tendenza in crescita.
…e la rivincita dei container
La diffusione del BaaS non implica la scomparsa totale di ambienti di sviluppo (e produzione) localizzati su server propri. Ma in questo caso si impongono soluzioni come quelle basate su container o su Docker, che consente di generare immagini di macchine virtuali con precise configurazioni di sistema operativo, librerie, framework. Senza tediare ulteriormente, se volete approfondire l’argomento potete leggere gli articoli della serie sui Container che abbiamo pubblicato recentemente [10].
UI e (web) design
Anche per quello che riguarda il design delle interfacce e l’aspetto grafico del web le tendenze sono piuttosto chiare [11]. Le tendenze per il 2016 sono molte e ne vedremo solo alcune: se volete dare un’occhiata a un quadro più generale, potete prendere come spunto qualche infografica [12] sul tema.
Minimalismo grafico: flat design, material design, interfacce “a carte”
Quasi a controbilanciare la sempre maggiore complessità delle applicazioni, almeno in termini di quello che possono fare e della logica applicativa che contengono, le interfacce hanno subito in questi ultimi anni un processo di riduzione, semplificazione, appiattimento. All’insegna dell’assunto “less is more”, si sono affermate interfacce caratterizzate da una tendenza verso la semplificazione, da un “appiattimento” in senso grafico delle interfacce, dalla prevalenza di elementi geometrici semplici, da un approccio “costruttivista” — va be’, questa è per gli specialisti, ma passatemela —, dalla cura estrema per gli elementi grafici che devono essere pochi ma buoni.
Queste tendenze si consolideranno ancor più nel 2016 e probabilmente anche dopo: e poi? Non lo sappiamo ma, come accade sempre in tutto ciò che è visuale, prima o poi qualche designer influente si stuferà e allora… sarà di nuovo un fiorire di ombre, effetti 3D e texture realistiche…
Lo stile flat si è affermato negli anni scorsi, con l’abbandono della tridimensionalità e del “realismo” degli effetti visuali. Una leggere mitigazione a questa tendenza è stata apportata da Google con il suo Material Design [13] che reintroduce alcune minime concessioni alla tridimensionalità, seppur sempre in un’ottica minimalista, e che da tutti è visto come la tendenza del 2016.
Due cose però vanno notate: la prima è che si tratta di tendenze nate sul mobile ma poi diventate universali: un tempo si progettava per il desktop e poi si adattava al mobile, ma è ormai il mondo mobile a imporre i suoi canoni a tutto il resto. O forse sarebbe ancora più giusto dire che c’è un approccio globale al design.
La seconda nota è che questo stile si sposa perfettamente al design “a carte” o “a schede” che è stato inventato da Microsoft che l’ha inizialmente utilizzato nel suo lettore audio (lo Zune… qualcuno se lo ricorda?), e l’ha portato poi su Windows Mobile e su Windows desktop. Ebbene, questo stile detto card interface design si sta diffondendo sempre di più, passando dal mobile al desktop e al web, anche per l’influenza di siti come Pinterest.
Semplificazione
Comunque la si voglia vedere, una generale semplificazione delle interfacce e delle presentazioni è in atto e si consoliderà almeno per tutto l’anno a venire. Alcuni elementi di questo processo sono:
- siti web a pagina singola, da scorrere con lo scroll verticale e magari dotate di effetto “parallasse”;
- riduzione delle sezioni nella gabbia grafica dei siti, con pochi grandi spazi e magari l’uso dei video come sfondi al posto delle immagini; per farsene un’idea, basta dare un’occhiata a un sito di template come Squarespace [14];
- responsive design per ottenere quanto più possibile un effetto di “coerenza” tra le esperienze utente sulle diverse categorie di dispositivi.
A fronte di questa generale semplificazione, va però notato come il peso in KB delle pagine stia gradualmente aumentando: nel momento in cui metto “tutto” su una sola pagina e aumento la dimensione e la qualità delle immagini, anche in considerazione di schermi a risoluzione sempre maggiore, devo pagare un qualche prezzo, e lo pago in termini di byte da scaricare. Un utile contatore [15] consente di controllare la dimensione media in KB delle pagine Internet e fornisce, per gli ultimi sei anni i seguenti risultati (dati relativi al mese di dicembre di ciascun anno):
- 2010 = 705 KB
- 2011 = 960 KB
- 2012 = 1285 KB
- 2013 = 1701 KB
- 2014 = 1953 KB
- 2015 = 2219 KB
Finché la rete (fissa o mobile) funziona bene, nessun problema…
La resurrezione della tipografia
Dopo lustri in cui il potere estetico e comunicativo dei caratteri tipografici e del loro corretto uso è rimasto confinato ai prodotti destinati alla stampa, da alcuni anni è possibile impiegare tale risorsa anche nel web design, grazie alle tecnologie dei web font e alla flessibilità dei CSS. La tendenza prenderà definitivamente piede negli anni a venire.
Metodologie e management
Come ultimo argomento abbiamo lasciato quello relativo alle metodologie, alla gestione dei progetti e all’aspetto più generalmente “business” dello sviluppo software.
Lean/Agile: vero il mainstream?
Anche se passano sempre sotto l’etichetta di “nuovo”, metodologie come Scrum o Kanban sono in giro ormai da anni, al punto che hanno subito aggiustamenti, evoluzioni e sviluppi. Ma non sono mainstream almeno nel senso che non sono il tipo di metodologia di gestione dello sviluppo software generalmente utilizzato nelle aziende — e non si sta parlando solo dell’Italia — e non sono insegnate nei corsi di MBA…
Di fatto, sempre più realtà stanno mettendo in atto processi di adozione di tali metodologie, magari con assoluta determinazione, magari come “esperimento” da fare limitatamente a certi dipartimenti o a certi uffici, specie nelle grandi organizzazioni. Non basta questo per dire che siamo in presenza dell’affermazione definitiva dell’Agile, ma di certo sono segnali importanti.
E però questi ultimi due anni hanno segnato una progressiva emersione di tali metodologie che cominciano ad affacciarsi sui media, negli ambiti in cui si discute di organizzazione aziendale, e così via; magari sono trattate in modo approssimativo e incompleto, ma questa “emersione”, questa attenzione più generalista dà la chiara impressione che in quest’anno e nei prossimi la progressiva diffusione delle metodologie agili potrebbe segnare un ulteriore passo avanti. Visto che oltetutto funzionano…
DevOps, DevOps, DevOps
DevOps non è un semplice insieme di buone pratiche supportato da apposita tecnologia: DevOps è una “filosofia operativa” per allineare il ramo sviluppo e il ramo operations. L’affermazione di DevOps negli ultimissimi anni è legata ai suoi risultati, e questa tendenza continuerà anche nel 2016.
L’importanza del crowdfunding
Probabilmente non si affermerà definitivamente nel 2016, ma il modello di finanziamento basato sul crowdfunding è una delle più grosse “rivoluzioni” degli ultimi anni che continuerà a crescere anche in questo. L’aspetto particolare è che, con ogni probabilità, cominceremo a vedere sempre più progetti e sempre più grandi ricorrere a questa forma di raccolta delle risorse necessarie, magari solo per parte del progetto. Si tratta di un modello che si affermerà con ogni probabilità prima negli USA che nel resto del mondo ma che potrebbe costituire, almeno parzialmente, una valida alternativa seppure solo parziale.
Conclusioni
Con questo articolo abbiamo voluto solo dare degli spunti di riflessione su alcune tematiche che saranno centrali nel 2016. Dovendo scegliere solo alcuni tra questi temi caldi, diremmo le potenzialità dei browser compatibili con JavaScript 6, lo stile minimalista del Material Design e la ulteriore penetrazione delle metodologie agili all’interno delle realtà produttive.