Ultimo aggiornamento
Mercoledì 3 luglio l’ Italian Agile Movement
ha proposto la prima edizione della Working Software Conference, la
conferenza italiana “about software”, come il gruppo decide di definire
la stessa proprio sul sito .
Per l’agenzia è stata l’occasione per
buttare un occhio su alcune tecnologie/strumenti interessanti,
incontrare amici con cui ci si vede solo alle conferenze, ma soprattutto
fare networking e portare a casa il maggior numero possibile di spunti.
Tra gli speaker dell’evento anche il nostro Head of Development, Alessandro Colla, con un intervento dal titolo “Test non convenzionale nello sviluppo di microservizi con CQRS ed Event-Sourcing”
nel quale, con l’aiuto di Alberto Acerbis, ha mostrato una tecnica
interessante per facilitare il testing del proprio software in un ambito
in cui risulta di solito complicato.
Ecco una panoramica dei talk che abbiamo avuto il piacere di seguire, con riferimenti a speaker e materiali disponibili.
Alessandro Colla e Alberto Acerbis
Il workshop si sviluppa realizzando un’applicazione composta da due microservizi che comunicano tramite eventi.
Usando CQRS ed Event Sourcing ci
viene mostrato come testare effettivamente gli eventi, che rappresentano
quanto di rilevante è successo nel sistema, tramite specification
testing invece del classico unit testing.
Si ottengono così test più
espressivi, riprendendo i termini emersi durante l’Event Storming e che
quindi utilizzano l’Ubiquitous Language concordato con i Business
Expert.
Ottimo keynote basato sull’idea che
dei 5 principi dell’XP (TDD, Pair Programming, Continuous Integration,
Refactoring and Simple Design) proprio l’ultimo sia il meno “definito”.
Cosa è “semplice”? Come si raggiunge
la semplicità? Le 4 regole del “simple design” ti lasciano un certo
vuoto? Matteo ha condiviso con noi i risultati dei sui esperimenti in
merito.
Gianluca ci ha illustrato come il DDD
(Domain Driven Design), un approccio di sviluppo software introdotto da
Eric Evans nel 2003, ben si sposa con il concetto di Actor Model , che serve per poter implementare complessi sistemi concorrenti e distribuiti in maniera facile.
Per mostrarci questi concetti
Gianluca ha usato il paradigma della programmazione funzionale
attraverso Elixir, naturale “conclusione” (secondo il suo talk) dei
concetti affrontati.
La “scoperta” è stata piacevole e sicuramente la nostra agenzia farà degli studi su questo tema.
Spendiamo alcune parole su questo
talk, durante il quale Roberto ci ha fatto riflettere sui test di
integrazione; grazie a questi è possibile vedere tutto attraverso uno
sguardo più ampio e riuscire a non testare solo il nostro “orticello”.
Spesso è infatti importante testare che due funzionalità che operano correttamente in maniera singola siano in perfetta sintonia durante l’esecuzione dell’intero software.
Perché usare un DSL? Secondo Federico
le risposte sono semplici: maggior comprensione da parte del product
owner, maggiore produttività da parte del team ed indipendenza dal
linguaggio che, a questo punto, sarà interamente basato sul domain
Specific Languange costruito dai membri del team.
Creare un proprio DSL non è
un’impresa semplice ma se si è lungimiranti e si vede il progetto nella
sua interezza può essere la chiave per assicurarsi interventi veloci e
un codice comprensibile da tutto il team.
Chi di noi non ha mai abusato di
qualche If-Else di troppo? Ma siamo sicuri che erano sempre tutti
necessari? La risposta è SI se ragioniamo in una logica “If Oriented
Programming”, ma NO se cerchiamo di vedere le cose in una logica
completamente “Object Oriented Programming”.
Claudio nel suo interessante talk ci
ha mostrato come dei buoni principi di programmazione OOP, uniti ad un’
ereditarietà e un polimorfismo correttamente utilizzati, possano
permetterci di eliminare parecchi if presenti all’interno del nostro
codice che, di conseguenza, potrebbe diventare anche molto più leggibile
e più vicino al nostro Ubiquitus Language.
Ottima introduzione ai principi base
della Programmazione Funzionale del buon Andrea che ci ha guidati fra le
“componenti” di questa “arte oscura”.
Il workshop si è sviluppato con
l’implementazione delle astrazioni base della FP: siamo partiti dalla
Option per poi crescere ed è stato veramente illuminante scoprire quanto
sia relativamente facile; bastano infatti poche righe di codice per
crearsi una libreria di utilità funzionali.
Risulta affascinante il fatto che
tramite la logica funzionale ci si concentra solo sulla strada felice
rimuovendo tutto il classico rumore introdotto dal controllo contro il
nemico giurato della FP, il null.
Dissacrante introduzione a TS (e alla
programmazione funzionale), senza mai pronunciare davvero la parola
“programmazione funzionale”. Gianluca ci ha mostrato perchè sia
veramente utile usare TypeScript e come questo strumento può aiutare per
la creazione di software funzionanti.
Nicola ci accompagna in un accorato
dipinto di come un “alchimista”, come si definisce chi lavora con
Elixir, sia portato a costruire ed architettare il proprio codice.
Processi, concorrenza e let it crash sono solo alcuni dei punti toccati
durante il talk.
Peccato solo per il proiettore che non funzionava…!
Vi rimandiamo al loro sito
dove verranno pubblicate e breve tutte le presentazioni della giornata.
Attendiamo la prossima edizione, alla quale di sicuro non mancheremo.