venerdì 11 maggio 2018

Java relative paths: trick or treat?


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!

venerdì 4 maggio 2018

Contracts: diagonal saber vs. agile


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!!


mercoledì 4 aprile 2018

Holacracy joy and pain


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.


Evoluzione del pair programming in un team (quasi) decennale


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.


lunedì 3 aprile 2017

ScuolaXP 2017 - Com'è andata?


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 discussione e come gli studenti siano spugne in grado di assorbire le novità con un entusiasmo e una passione notevoli.
In definitiva una grande edizione che personalmente mi ha regalato nuovo entusiasmo nel proseguire il mio lavoro quotidiano ed è stata una vera ricarica delle batterie.
Ogni persona, sia gli altri docenti che i partecipanti, ha saputo regalarmi qualcosa, uno spunto, una massima, una riflessione, una conoscenza.
ScuolaXP è anche un ottima occasione per fare network e spero di rimanere in contatto con i partecipanti anche in futuro.

Al prossimo anno!

PS: qui un link ad una sessione di domande e risposte in cui io ed Andrea ci confrontiamo sul tema "Pratiche agili: come cambia il modo di lavorare di un team"

sabato 25 marzo 2017

Workshop Sviluppo Applicazioni Web @upo 2017

In collaborazione con l'Università del 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 sviluppatore software.
La scaletta della lezione che ho proposta è stata:

  • Web lato client
    • Il Browser
    • Html
    • Css (Bootstrap, Foundation)
    • Javascript (JQuery)
  • Protocollo HTTP
  • Web lato server
    • Application VS Web Server
  • Esercitazione
    • Java
    • Application Server Jetty
    • Database SQLite

domenica 2 ottobre 2016

Test Driven Development @unibo 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 TDD nei loro progetti accademici.
Powered by Blogger.