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.
Test non convenzionale nello sviluppo di microservizi con CQRS ed Event-Sourcing
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.
Simple Design: the least understood XP Practice
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.
DDD loves Actor Model and Actor Model loves Elixir
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.
Integration tests: use the containers, Luke!
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.
Domain Specific Languages, in practice
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.
IOP vs OOP (if oriented programming vs object oriented programming)
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.
Functional Programming for a OO developer
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.
TypeScript come (forse) non lo avete mai visto
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.
Nella mente di un alchimista
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.