Posts

"Back to values" agile retrospective format

Image
A week ago i proposed to my team a new format for the weekly retrospective. I called it "Back to values" because the starting focus is on values and then on practices and actions to improve that practices. Step 1: the values I put on the wall seven big post-its with the values, on the pink post-its the eXtreme Programming values plus the team's values on the orange post-its. simplicity (XP) communication (XP) feedback (XP) courage (XP) respect (XP) trust (team) sharing (team) Each teammate has an up arrow and a down arrow and I asked them to vote the best performing value of the week and the worst performing one. At the end of the vote we chose the two most rated values (no matter if with down or up arrow). In our case the chose values was communication and sharing. Step 2: the practices For each of the two chose values (one at a time), I asked the team to write on post-its all practices that support this value, both if they had used them and if...

Java relative paths: trick or treat?

Image
We all had problems with relative paths in Java! Do not deny it! Every time I have to understand where the path is relative to is a puddle of blood, so how can we unveil this mystery? Will it be relative to the classpath? Will it be related to the project root? And in the tests? I usually use a little trick : in the point of the code where I want to use the relative path I write/log Java: new File(".").getAbsolutePath() Kotlin: File(".").AbsolutePath Simple and fast, at this point we know exactly where is the starting point for our relative path!

Contracts: diagonal saber vs. agile

Image
I have moved from a product company to a consulting firm and therefore I am dealing with issues that up to now I have not considered particularly interesting, but now they are. In particular, to make offers to customers I need to better understand what type of contract I can offer to support an agile development process . So what did I do? I studied! I picked up the book " Lean Software Development: An Agile Toolkit " and I tried to summarize what I studied and how much I shared with my colleagues in these slides. It's about how to move from diagonal saber contracts to agile contracts . How to go from arguing over contractual clauses to find a form of win-win cooperation. Do you know what a diagonal saber contract is? Do you know what are the main types of contract for software development? What can we learn from Toyota 's manufacturing experience? Is it all applicable to the world of software development? Find it out!! Contracts: diagonal ...

Holacracy joy and pain

Image
I want to share my 3-year experience with Holacracy . The implementation seen in my previous job with a detached point of view, an example of auto-organization at company level whit some joys and pains. It's not a judgment about Holacracy but only the story of my experience . Holacracy joy and pain from Marco Fracassi

Evoluzione del pair programming in un team (quasi) decennale

Image
I spoked ad Mini Agile Day in Trento , here you can find the slide of the talk. I present my experience with Team Nimbus at 7Pixel since 2009. From the "by the book" implementation to the "superpower" adaptation maked by the team. What is pair programming? How does it works?  How we have changed it? Errors and improvements of 9 years of pair programming. Evoluzione del pair programming in un team (quasi) decennale from Marco Fracassi

ScuolaXP 2017 - Com'è andata?

Image
Anche quest'anno ho avuto l'onore di poter fare il docente a ScuolaXP , insieme a me ci sono stati come l'anno scorso Alberto Brandolini , Antonio Carpentieri , Andrea Francia e quest'anno si è unito a noi anche Giuseppe Carnevali . Siamo ormai una bella squadra e ho percepito che il fatto di essere già rodati si sia visto durante la settimana. Erano presenti 25 ragazzi , 11 professionisti e 14 studenti (record di partecipanti) tutti molto attenti e interessanti. Abbiamo costituito 5 team eterogenei da 5 persone e poi abbiamo aperto le danze. Un susseguirsi di nuovi problemi  e scenari sempre in cambiamento. Ad ogni giornata ho visto un progresso dei partecipanti sempre più immersi nella filosofia e nelle pratiche di eXtreme Programming . Abbiamo messo in discussione molti concetti che ritenevano assodati e abbiamo aperto le porte per far entrare nuovi pensieri e nuovi approcci. E' sempre bello vedere come anche i professionisti riescano a mettersi in disc...

Workshop Sviluppo Applicazioni Web @upo 2017

Image
24 Marzo 2017 In collaborazione con l' Università d el Piemonte Orientale UPO  (grazie alla Professor Enea Parimbelli), ho tenuto un workshop sullo sviluppo di applicazioni web. Abbiamo visto come costruire una applicazione web in Java a partire da zero. Dopo il setup iniziale di IntelliJ IDEA, gli studenti hanno scaricato le librerie di Jetty ed abbiamo iniziato a scrivere un main con il minimo necessario per avviare un sito. Dopo un po' di teoria abbiamo messo in piedi l'html necessario per gestire una form per l'inserimento di indirizzi di una rubrica e per la visualizzazione della lista degli indirizzi salvati (su file, solo teoricamente abbiamo visto la persistenza su database).  Un po' di refactoring per organizzare meglio il routing e rimuovere la duplicazione nel mostrare le viste. Una giornata molto piacevole in cui spero di aver trasmesso, oltre a qualche conoscenza tecnica, anche un po' di entusiasmo per la professione dello sviluppat...

Test Driven Development @unibo 2016

Image
10 Ottobre e 11 Ottobre 2016 In collaborazione con l' Università di Bologna  (grazie al Professor Paolo Ciancarini), terrò in queste due giornate un seminario, insieme a Roberto Grandi, sullo sviluppo agile e in particolare sul Test Driven Development (aka TDD). Affronteremo prima la parte teorica dello sviluppo iterativo incrementale e del TDD e , nella seconda giornata, realizzeremo insieme agli studenti un'esercitazione pratica con un progetto reale nel quale potranno prendere confidenza con i rudimenti del TDD. Gli obiettivi delle due giornate sono: spiegare perchè vale la pena usare metodologie agili contestualizzare l'uso del TDD spiegare le regole del TDD introdurre al concetto di refactoring dare una breve infarinata di pair programming far provare il ritmo del TDD attraverso la pratica Alla fine del seminario gli studenti dovrebbero ottenere degli spunti e dei riferimenti per provare ad approfondire gli argomenti e le basi per poter applicare ...

PostgreSQL: come visualizzare i primi N record di ogni gruppo

Image
Di recente mi è capitato di dover produrre un report dove si volevano, per ogni venditore inserito nei database aziendali, le prime 5 categorie merceologiche in cui vende più offerte. Il problema di scrivere una query per selezionare i primi N elementi di un gruppo non è banale. Semplificando al massimo il caso reale, si può vedere come se in gioco ci fosse un'unica tabella offers , dove ogni record è composto da: id venditore ( seller ) categoria dell'offerta ( category ) La richiesta non è facilmente esprimibile con una query ma, ho scoperto che da PostgreSQL 9.1 viene offerta una sintassi molto naif per realizzarla.  Bisogna combinare due window function , ovvero due funzioni che permettono di fare calcoli su insiemi di righe: row_number() : fornisce il numero di riga in un certo insieme, partendo da 1 select over partition : permette di selezionare qualcosa in una partizione di dati La query che risponde all'esigenza di avere le prime 5 categorie ...

Guida: preparare un ambiente di sviluppo Ruby On Rails su Windows 10 tramite Docker

Image
Viste le non poche difficoltà che ho avuto nel preparare un ambiente di sviluppo per una applicazione scritta con Ruby On Rails da una macchina Windows 10 sfruttando Docker , ho deciso di preparare questa guida sperando di far risparmiare un po' di tempo a qualche interessato ;) L'idea è quella di sviluppare l'applicazione scrivendo il codice direttamente sul filesystem della macchina Windows 10 . Volevo però avere avere l 'application server in containe r in modo da poter sfruttare tutte le potenzialità di Ruby e sopratutto di Rails. Inoltre volevo che l'applicazione si appoggiasse su un database MySql anch'esso in un container Docker. Come prima cosa bisogna installare Docker per Windows, il software è reperibile nel sito ufficiale di Docker, in particolare bisogna installare " Docker for Windows versione Stable ". Una volta scaricato bisognerà installarlo, al termine dell'installazione verrà proposto questo messaggio: Hyper-V feature ...

Workshop Sviluppo Applicazioni Web @unipv

Image
31 Maggio e 7 Giugno 2016 In collaborazione con l' Università degli Studi di Pavia  (grazie alla Professor Claudio Cusano), terrò in queste due giornate un workshop, insieme a Roberto Grandi, sullo sviluppo di applicazioni web. Affronteremo una prima parte più teorica per vedere come una richiesta HTTP a partire da un browser arriva ad un application server e come questo seve le risorse richieste. Nella prima giornata proveremo ad usare Java e Tomcat per scrivere e servire una Sevlet e una JSP. Nella seconda giornata proveremo invece a vedere qualche pratica agile applicata allo sviluppo di applicazioni web. Scarica le slide

Ha senso avere due test identici con dati diversi?

Image
Al seminario sul TDD e il pair programming che ho tenuto all' Università dell'Insubria di Varese  uno studente mi ha domandato: "Ho fatto il test T1 del metodo X poi è saltato fuori che con dati di input diversi, nonostante il test fosse verde, il comportamento non era più coerente...Allora ho scritto il test T2 uguale al test T1 ma con dati diversi... Ha senso avere due test identici con dati diversi ?" Io ho provato a rispondere con un esempio banale in pseudolinguaggio: test sum result = sum 1, 6 assert result is 7 sum a, b return 7 ---------- test another sum result = sum 2, 6 assert result is 8 sum a, b return a + b La mie domande al ragazzo sono state: "Ho fatto TDD?" e "Il secondo test è stato utile anche se uguale al primo?"... risposta "Certo!" Bene: in una domanda tanto banale e nella mio esempio forse ancor più banale, si nascondono alcuni retroragionamenti: - il primo test testa la somma, i...

Test Driven Development @uninsubria

Image
6 Maggio 2016 In collaborazione con l' Università degli Studi dell'Insubria di Varese (grazie al Presidente del Corso di Laurea di Informatica Mauro Ferrari), terrò insieme a Roberto Grandi per 7Pixel , un seminario sullo sviluppo agile e in particolare sul Test Driven Development (aka TDD) del tutto analogo a quello tenuto presso l' Università degli Studi di Pavia . Presenteremo una sessione teorica dello sviluppo iterativo incrementale e sul TDD con nozioni generali di ingegneria del software, di fondamenti di informatica e con esempi concreti tratti delle nostre esperienze lavorative.

Scuola XP 2016

Image
04-08 Aprile 2016 Parteciperò come trainer alla seconda edizione della Scuola XP organizzata da  7Pixel  in collaborazione con  Avanscoperta . La Scuola XP è più di un corso di formazione, è un'esperienza di apprendimento per coloro che si affacciano al mondo dello sviluppo agile e in particolare ad eXtreme Programming. In queste giornate i partecipanti avranno la possibilità di mettersi alla prova e di apprendere facendo. Per avere tutte le informazioni potete sbirciare  ScuolaXP: 5 giorni di sviluppo software professionale Per saperne di più

Test Driven Development @unipv

Image
27 Novembre e 1 Dicembre 2015 In collaborazione con l' Università degli Studi di Pavia  (grazie alla Professoressa Cristiana Larizza), ho tenuto in queste due giornate un seminario, insieme a Roberto Grandi, sullo sviluppo agile e in particolare sul Test Driven Development (aka TDD). Abbiamo affrontato prima la parte teorica dello sviluppo iterativo incrementale e del TDD e , nella seconda giornata, abbiamo realizzato insieme agli studenti un'esercitazione pratica un progetto reale nel quale hanno potuto prendere confidenza con i rudimenti del TDD. Scarica le slide

Italian Agile Day 2014

Image
14 e 15 Novembre 2014 Insieme a Jacopo Franzoi ho presentato lo speak "Team non si nasce ma si diventa". La nostra sessione ha toccato i seguenti punti: Cosa vuol dire “Team non si nasce ma si diventa” come si capisce che un team va bene? come si capisce che bisogna cambiare qualcosa? La composizione del team dimensione (come siamo arrivati a 4 e perchè) sviluppatori il “bidello” (a cosa serve? perchè fa parte del team?) La base di partenza valori (partendo da quelli di XP, poi nuovi) pratiche motivazioni Come si evolve retrospettive nuove pratiche (laser game di fine rilascio, test di produzione, …) valori emergenti L’auto-organizzazione processo di sviluppo code conventions lo studio, le presentazioni a tutta l’azienda recruiting Guarda il video