Functional Programming, Docker, Evoluzione
Le parole chiave al Codemotion Roma 2016
Sesta edizione del Codemotion Roma, appuntamento oramai fisso per MV Labs, che anche quest’anno si presenta in veste di speaker, con un talk su ELM presentato da Marco.
Il Codemotion è una conferenza tra le più importanti nel panorama informatico europeo, con speaker provenienti da diverse parti del mondo e talk adatti a tutti i palati, spaziando da Javascript (Node, React, Angular) a Big Data e Cloud (NoSql, ElasticSearch, Spark), passando per argomenti quali DevOps (Docker, Kubernetes, Vagrant) e ancora MicroServices, Security, Game Dev, Mobile, IoT, Java, PHP, TDD, …
Non mancano mai anche i talk meno tecnici ma più motivazionali, come – in questo caso – l’ottimo intervento di Linda Rising sui cambiamenti organizzativi all’interno dell’azienda e i due talk di Rebecca Parsons sull’Evolutionary Architecture.
La maggior parte dei talk durava all’incirca 40 minuti, intervallati da 20 minuti di pausa, durante la quale ci si poteva aggirare tra i vari stand delle circa 50 aziende e startup presenti, in un ambiente – al solito – molto rilassato ed informale.
Il primo giorno si è aperto con il keynote di IBM, nel quale Elisabetta Rinaldi e Rossella De Gaetano hanno parlato di BlueMix, una piattaforma cloud con ottime funzioni di machine learning e con supporto per diversi linguaggi di programmazione, che comprende anche tools da DevOps per il build, l’esecuzione e il deploy delle applicazioni. Sicuramente una tecnologia da tenere a mente se si stanno valutando PaaS.
Abbiamo poi seguito i seguenti talk:
David Clements di nearForm ha parlato dei motivi che lo hanno spinto a riscrivere completamente in React un progetto ormai giunto a buon punto in un framework simile, Riot.
Dopo aver iniziato il progetto da solo in Riot, David è stato affiancato da un piccolo team di sviluppo. Purtroppo, con il passare dei giorni, Riot si è rivelato sempre meno adatto per il team e, dopo aver assistito ad un blocco quasi totale dello sviluppo per 2 settimane, David si è visto costretto a valutare alternative.
La sua scelta di React, effettuata non tanto per le sue caratteristiche tecniche, quanto per la facilità di utilizzo dello strumento da parte del team, si è rivelata vincente.
Welcome to Mordor! Hunting Performance Issues in Node.js.
Daniel Khan di Dynatrace Austria, ha dato alcuni utili consigli per aiutare a scovare i problemi di performance in un’applicazione Node.js.
Questi problemi di performance sono notoriamente difficili da tracciare in Node, Chrome Dev Tools ci può venire in aiuto; in particolare Daniel ha parlato dei profiler, che permettono di prendere degli snapshot della memoria in determinati momenti e confrontarli.
Ha ricordato inoltre di settare l’environment di sviluppo a “production” quando si fa il deploy dell’applicazione, visto che questa semplice accortezza può rendere l’applicazione fino a 3 volte più veloce.
Dockerize it: stop living in the past and embrace the future.
Il pomeriggio è iniziato con un interessante talk di Alessandro Nadalin, di Namshi. Alessandro ci ha raccontato come Docker sia una tecnologia in rapida evoluzione che sta cambiando il modo di sviluppare software. I punti principali del talk sono stati la sottile differenza di casi d’uso tra containers e macchine virtuali e la necessità di utilizzare un servizio, Kubernetes in questo caso, per orchestrare, distribuire e replicare i containers.
We are not Object-Oriented anymore
Matteo Collina di nearForm, ha apparentemente tentato di convincere la platea che il paradigma Object-Oriented è morto, almeno per quanto riguarda Javascript. In realtà il messaggio del talk è che se si vuole usare il paradigma object-oriented, è necessario farlo bene, prestando attenzione a non incapsulare comportamenti nel posto sbagliato e utilizzando correttamente i ben noti design patterns. Lunga vita a Object-oriented!
Il secondo giorno invece si è aperto con il keynote di Microsoft, con Lorenzo Barbieri che ci ha raccontato come Microsoft sia cambiata negli ultimi anni. Un tempo nessuno si sarebbe aspettato che l’azienda di Redmond potesse rilasciare progetti Open Source su GitHub, lavorare con community open source, aprirsi al supporto per Linux, iOS e Android. Questa invece è la Microsoft di oggi che grazie a questo cambiamento di rotta (e ad alcune ottime tecnologie) sta venendo rivalutata da diversi sviluppatori.
Abbiamo quindi seguito:
Myths and Patterns of Organizational Change
Talk motivazionale da parte di Linda Rising, esperta speaker in argomenti di agile development, patterns, retrospettive e cambiamenti organizzativi.
Linda ha iniziato parlando dei miti che esistono all’interno delle organizzazioni. Per esempio quando cerchiamo di convincere i nostri colleghi riguardo all’utilizzo di una nuova tecnologia, cerchiamo di presentare le nostre ragioni in modo razionale e logico. Ma le persone non prendono le decisioni solo seguendo la logica e la razionalità, quindi questo non sempre è l’approccio migliore. Dobbiamo quindi trovare delle ragioni pratiche per cui vediamo il cambiamento proposto come positivo.
Linda ha proposto inoltre un importantissimo consiglio, spesso sottovalutato, per convincere le persone della bontà di un’idea: offrire loro da mangiare. Se portate una torta o dei pasticcini quando proponete la vostra idea di cambiamento, partirete sicuramente da un punto di vantaggio!
Lorna Mitchell una “veterana” nell’ecosistema del PHP ha parlato della sua esperienza nella gestione della review del codice all’interno di un team, che sia questo proprietario o Open Source, al fine di ottenere un’alta qualità del codice e il rispetto degli standard comuni. I tre ingredienti principali per questo obiettivo sono codice, parole e prospettiva; troppo spesso ci concentriamo solo sul primo, dimenticando l’importanza di giustificare e documentare le nostre modifiche e soprattutto trascuriamo di considerare che il nostro codice è scritto per essere letto e compreso da altri sviluppatori, non solo per produrre un output.
From Object Oriented to functional modeling
Un altro talk, dopo quello di Matteo Collina del giorno precedente, che si poneva l’obiettivo, quanto meno nel titolo, di demistificare il paradigma Object-Oriented. Mario Fusco di Red Hat ha illustrato le funzionalità di programmazione funzionale presenti all’interno di Java8, rifattorizzando un’applicazione fino ad ottenere una struttura del codice puramente funzionale. Sviluppare in maniera funzionale non è più complicato rispetto ad un approccio object-oriented, è solo una questione di abitudine e di eredità storica. Comunque, altra cosa imparata da questo talk é: non usare Java8 per fare programmazione funzionale!
Elm or how I learned to love front-end development
Rimanendo sul tema della programmazione funzionale, è giunto il momento del nostro Marco Perone, che ci ha parlato di ELM, un linguaggio funzionale e reattivo per lo sviluppo front-end.
Il fatto di essere un linguaggio puramente funzionale comporta una gestione dello stato dell’applicazione molto esplicita. La reattività, data dalla presenza dei cosiddetti Signals, consente uno stile di scrittura del codice puramente dichiarativo e fa decadere l’esigenza della mutabilità delle variabili. La presenza di un compilatore molto efficiente in grado di fornire dei messaggi di errore molto espliciti e costruttivi, e la conseguente assenza di errori al runtime, contribuisce a garantire allo sviluppatore un’esperienza di sviluppo molto soddisfacente.
Il talk di Marco è anche stato per noi l’ultimo della conferenza, dato che il treno verso casa ci aspettava poco dopo. Sicuramente il Codemotion è stata un’esperienza (la prima per me) molto positiva con molti talk di ottimo livello (…altri un po’ meno, a dirla tutta). La presenza di molte track porta inevitabilmente a perdere alcuni talk interessanti, ma è ovviamente il prezzo da pagare se si vuole disporre di una cosi vasta scelta di argomenti in soli 2 giorni. Adesso dobbiamo mettere in pratica quanto appreso in questi due giorni. Sono contento di poter apprendere e sperimentare cose nuove ogni giorno in MV Labs – se anche a te piacerebbe fare un’esperienza simile, è sicuramente una buona idea dare un’occhiata qui. Alla prossima!
Un ringraziamento per le foto della pagina al Codemotion ed a @realfuzzy