Incontro di settembre 2017

Ancora un debutto al PUG Roma, questa è la volta di Roberto Umbertini, ternano trapiantato a Roma da un paio d’anni. Come ogni programmatore che si rispetti, Roberto ha curiosità e voglia di imparare, caratteristiche che lo portano spesso a studiare e sperimentare fuori dall’orario lavorativo.

È stato proprio seguendo un progetto personale che ha avuto modo di sperimentare con Docker, la Continuous Integration e le pipeline di GitLab: durante il talk, iniziato con una citazione di Martin Fowler, ci ha raccontato ciò che ha imparato, come configurare il proprio progetto per inserire un’immagine Docker da eseguire durante la CI, e cosa fare per eseguire automaticamente la suite di test ogni volta che viene fatto il push di un branch.

Alla fine del talk è seguito un vivace scambio con suggerimenti e opinioni di altri PUGgers che hanno riportato la loro esperienza in un campo, quello dei container e della continuous integration, sempre molto stimolante e discusso.

La serata è proseguita al classico RoadHouse di Termini.

Incontro di maggio 2015

Per l’incontro di maggio 2015 il PUG Roma ha organizzato un kata, ovvero un esercizio di programmazione volto a migliorare le proprie conoscenze oppure a trovare a nuovi modi di risolvere un problema noto: in entrambi i casi, se svolto in gruppo, è una grande occasione di confronto tra programmatori.
Nell’ormai consueta sede di Enlabs, una quindicina di membri del PUG sono stati ancora più del solito parte attiva dell’incontro, e si sono messi intorno al tavolo con i computer accesi, pronti a risolvere l’esercizio.
Il kata ha avuto un sapore internazionale, perché Leonardo da Londra ed Eugenio da Exeter si sono offerti di preparare l’esercizio e guidare il gruppo nella risoluzione del kata, supportati da Giulio che era invece presente in loco: dopo il collegamento via hangout con i due expat e la spiegazione dell’esercizio, Giulio ci ha fornito il codice dell’esercizio, ci siamo divisi a coppie e abbiamo iniziato a lavorare.
L’obiettivo dell’esercizio era rifattorizzare un codice scritto da un programmatore poco esperto, che aveva infilato tutta la logica di una certa funzionalità all’interno di un unico metodo di un’unica classe, e dopo aver rifattorizzato era necessario aggiungere una nuova funzionalità.
Il tutto naturalmente doveva essere guidato dai test: un paio di test funzionali erano già presenti nel codice fornito, mentre gli altri avrebbero dovuto essere sviluppati da noi. Chiaramente i test funzionali presenti consentivano di rifattorizzare il codice con la certezza che le funzionalità non venissero compromesse, mentre i test unitari introdotti successivamente aiutavano a scrivere del codice più disaccoppiato e facilmente manutenibile. Al termine dell’esercizio, durato poco più di un’ora, ogni coppia ha raccontato agli altri il proprio lavoro, mentre Eugenio e Leonardo commentavano le soluzioni adottate.
La soddisfazione generale era percepibile nell’aria, posso affermare che sia stato una dei kata più riusciti.
Dopo il lavoro, diversi membri del PUG si sono raccolti intorno a un’altra tavola, questa volta quella della RoadHouse Grill, per mangiare e concludere la serata.

Incontro di maggio 2014

Maggio è il mese del PHPDay e del JSDay, e quindi già solo le novità viste durante i quattro giorni delle due conferenze, a cui molti di noi hanno partecipato, sarebbero state un buon argomento di discussione, ma noi avevamo persino di più!
E quindi, riuniti ancora una volta nella “Sala legno” di Luiss Enlabs, Leonardo ci ha proposto di parlarci di come lui e Giorgio stanno mettendo in pratica ciò che hanno imparato del DDD: Leonardo ha tenuto un’interessantissima presentazione su come modellare gli oggetti di un dominio restando completamente agnostici rispetto alle altre componenti del sistema, framework in primis.

I motivi per farlo sono molteplici, ma possono essere riassunti sotto un cappello più importante di altri: disaccoppiamento (che di conseguenza porta indipendenza).

L’indipendenza consente di riusare o trasportare il codice di dominio, per esempio, da Symfony2 a Zend Framework senza toccare praticamente nulla, o anche di aggiornare il framework su cui gira l’applicazione con molti meno problemi: quanti di noi hanno dovuto tenere progetti in Symfony1 perché il passaggio a Symfony2 era troppo oneroso? Ma in realtà il dominio non era cambiato, era cambiato solo il framework, e se il dominio fosse stato slegato dal framework il passaggio sarebbe stato molto più semplice.

La presentazione ha quindi evidenziato i concetti di base del DDD e poi ha mostrato delle implementazioni pratiche con un piccolo caso di esempio, mostrando come il codice del dominio potesse essere scritto in maniera, appunto, agnostica, e come poi poteva essere utilizzato all’interno di un’applicazione Symfony2.

Leonardo ci ha promesso di fare un aggiornamento e farci vedere la stessa applicazione scritta in Symfony2 e in ZF con lo stesso codice di dominio: attendiamo il prossimo incontro per vedere i risultati!

Oltre all’implementazione pratica, di particolare interesse sono state le riflessioni sull’ubiquitous language, ovvero sull’importanza di dare, agli oggetti del dominio, un nome che sia condiviso e riconosciuto sia dagli sviluppatori che dagli esperti di dominio (che normalmente sono persone del cliente) e alcune osservazioni su come lo stesso oggetto può cambiare valenza se cambia il dominio di riferimento: una banconota da un dollaro vale come un’altra per una persona che la deve usare, ma nel dominio della Zecca che stampa i soldi, ogni singola banconota è diversa dalle altre, tant’è che ha un numero di serie.

Dopo la presentazione siamo andati a cena: per la prima volta la decisione sul posto in cui andare a mangiare è stata presa in anticipo, grazie a un sondaggio fatto nei giorni precedenti.
Niente stress per decidere all’ultimo e mettersi d’accordo, niente stress per prenotare, e soprattutto, per la gioia di molti e il dispiacere del nostro Presidente, niente “Nazzareno” 🙂
Siamo invece andati al ristorante pizzeria “I Fratelli“, a San Lorenzo: carino, con un buon servizio e dal prezzo accettabile.

Nota storica: per la prima volta il nostro Presidente non ha potuto partecipare all’incontro, per un imprevisto dell’ultimo minuto. C’è chi maligna che in realtà il motivo sia stato il basso risultato del “Nazzareno” nei sondaggi, ma lui nega!