Vai al contenuto principale

Gilde: accrescere e condividere le conoscenze

Ogni settimana dedichiamo parte del nostro tempo per lavorare all'interno delle Gilde. La Gilda è gruppo spontaneo di 4-8 persone che nasce con lo scopo di apprendere e condividere le conoscenze. Ogni quattro mesi si formano nuove Gilde sulla base degli argomenti proposti liberamente da ogni persona.

2019 - Quarter 2

Transazioni distribuite: Saghe

Una gilda nata con lo scopo di approfondire il tema delle transazioni distribuite, riassumibile con il termine saga. Non solo saghe, anche event sourcing, CQRS e DDD.
Il punto di partenza delle saghe è un’analisi dettagliata, comprensiva di definizione dei domini e delle competenze. In altre parole, la base è il Domain Driven Design.
I partecipanti hanno seguito un corso sulle tematiche, in cui è stato appreso molto sulle saghe.
Una saga è un meccanismo che garantisce la consistenza dei dati tra i servizi. In caso di errore la saga riporta i dati a uno stato equivalente (quindi, non identico) a quello di partenza. Si definiscono una serie di transazioni ognuna delle quali implementa una parte della logica di business (T). Per ogni transazione bisogna prevedere una transazione di compensazione (C) che riporti i dati elaborati da T a uno stato equivalente a quello di partenza.
Una saga quindi risulta semplice da sviluppare se e solo se supportata da un’analisi architetturale dettagliata del sistema.

2019 - Quarter 1

Free gilda

Il nome free sta a indicare appunto la libertà di poter approfondire più argomenti per i quali i quattro mesi canonici di una gilda risulterebbero un tempo eccessivo.
Di seguito la lista degli argomenti e trattati e delle attività svolte, non in solitaria bensì in mini gruppi di almeno due persone:
  • corso su CSS, tenuto dal collega Andrea Sironi e svoltosi con incontri settimanali;
  • realizzazione di un backend in linguaggio Golang, applicando TDD;
  • sessioni di “TDD competition” durante le quali le persone si sono sfidate a colpi di codice prendendo alcuni tra i kata più conosciuti, disponibili in rete.

Design for emotions

Progettare la user experience di un prodotto significa occuparsi di tre principali sfere di valore da offrire agli utenti finali: utilità, usabilità e piacevolezza.
L’obiettivo di questa gilda è stato quello di approfondire il tema della piacevolezza legato all’esperienza di un prodotto o servizio.
Attraverso attività di ricerca, esperimenti e la lettura di alcuni libri sull’argomento.
Queste le tematiche trattate:
  • Piacevolezza superficiale e profonda
  • Design del coinvolgimento
  • Emotional design
  • Bias cognitivi

Games

Obiettivo della gilda è stata la realizzazione di un videogame, precisamente un gioco a turni, dove ogni giocatore sfida altri facendo combattere i propri personaggi.
Menzione speciale per “CryptoZombies”, un tutorial tanto simpatico quanto esaustivo per imparare a programmare in Solidity, il linguaggio di programmazione ufficiale di Ethereum per lo sviluppo di Smart Contract.
Tornando all’output di questa gilda:
  • per il backend del videogioco è stata implementata la logica che gestisce: creazione e salvataggio di un personaggio, lettura dei personaggi e compilazione e deploy della applicazione su una blockchain locale di sviluppo;
  • Per la parte di frontend è stato realizzato un “avatar creator” (un grazie ai colleghi designer) con il quale personalizzare il personaggio (scelta del vestiario, capelli, colori ecc.).
La comunicazione frontend-applicazione è stata gestita attraverso l’utilizzo della libreria Web3.js.

Progressive Web App

Obiettivo di questa gilda è stato la realizzazione di una Progressive Web App, cercando di coglierne pro e contro, per tenere traccia degli elementi di una collezione.
Da un punto di vista tecnologico, si è deciso di realizzare il backend in Node.Js e il frontend con ReactJs. Per il database è stato utilizzato MongoDB.
Degno di nota l’utilizzo di Lighthouse, un tool open-source, disponibile anche tra i “developer tool” di Google, che fornisce statistiche della Web app anche durante la fase di sviluppo.

2018 - Quarter 3

Free Gilda

Una gilda particolare, nata con lo scopo di colmare lacune su argomenti troppo piccoli per essere oggetto di uno studio di quattro mesi, e quindi di un’unica gilda.
Utilizzando una semplice board su Trello e un journal nella wiki interna le persone hanno tenuto traccia delle attività.
Gli output prodotti sono di diversa natura, dalla pubblicazione di un articolo alla presentazione di un talk o la gestione di un workshop a una conferenza.
Di seguito, alcuni:
  • studio su Reactive Programming;
  • studio di alcuni design pattern per Java;
  • workshop “Object Calisthenics” tenuto da Ferdinando Santacroce alla conferenza “Agile Venture” a Prato;
  • presentazione del talk “E se provassi Kotlin?” da parte di Damiano Salvi agli “Italian Agile Days” a Brescia.

Blockchain 2

Obiettivo di questa gilda ha riguardato l’applicazione della tecnologia blockchain di Ethereum in un caso reale.
Il progetto preso in considerazione è “I3-WAY” (Where Are You), una applicazione in AngularJs sviluppata durante la gilda “Update and Commit 2”. Attraverso “I3-WAY” ogni collaboratore ha la possibilità di segnalare la sua presenza utilizzando un calendario visibile a tutti.
Sfruttando una blockchain Ethereum sviluppata nel corso della precedente gilda “Blockchain” i partecipanti di questa gilda hanno realizzato l’integrazione con “I3-WAY” creando un database contenente i riferimenti alle transazioni.

Design workflow and tools

Obiettivo di questa gilda dei colleghi di Thanks Design è stato lo studio di strumenti in grado di migliorare le performance dei flussi di lavoro del team.
La gilda ha previsto una fase esplorativa in cui sono stati analizzati una serie di applicativi emergenti.
Dalla fase esplorativa sono emersi alcuni nuovi strumenti, che sono stati integrati nel nuovo workflow di gestione dei progetti.
Questa integrazione ha permesso di creare un unico ambiente di progettazione delle interfacce costantemente aggiornato e capace di mettere il relazione la parte di design con quella di sviluppo.

Software Architectures

Obiettivi di questa gilda sono stati lo studio e l’applicazione di alcuni pattern architetturali per lo sviluppo software.
Durante gli incontri i partecipanti si sono organizzati come segue:
  • scelta delle architetture da studiare;
  • ricerca della documentazione per ognuna delle architetture scelte;
  • creazione delle sezioni su Draw.io;
  • esercitazione con schemi basati su Kata architetturali;
  • sviluppo del gioco “tic-tac-toe”, nome anglosassone del gioco del tris.
Sono state approfondite diverse architetture:
  • Domain Driven
  • Hexagonal
  • Layered
  • Event-driven
  • Microservices
  • Onion

Kubernetes

Kubernetes, o K8s, è un sistema open-source di orchestrazione e gestione di container, compresi quelli creati con Docker. La gilda è nata per studiare lo strumento e coglierne le potenzialità, e considerarlo come valida alternativa per semplificare i rilasci e la loro successiva manutenzione.
 
Durante gli incontri sono state svolte varie attività:
  • studio dello strumento seguendo il tutorial;
  • esercitazioni svolte su un cluster;
  • creazione del cluster su Amazon Web Services;
  • deploy di una applicazione di chat in autoscale: in base al carico, l’applicazione scala le risorse.