- ° quarter

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 3Quarter

Open Source

Questa gilda si è messa in gioco collaborando a un progetto open source.
Come primo, importante passo il gruppo ha scelto il progetto a cui contribuire, optando per Kibana, dopodiché ha selezionato un argomento su cui lavorare partendo dai problemi già noti.
Implementare la modifica richiesta è stato più facile del previsto, questo grazie alla buona organizzazione dello progetto e alla conoscenza delle tecnologie usate.
Nell’arco della durata della gilda sono state risolte due segnalazioni e questo è sicuramente un ottimo risultato, oltre che l’avere acquisito una maggiore consapevolezza di cosa voglia dire confrontarsi con il mondo dell’open source.

2019 2Quarter

Lambda: introduzione al Functional Programming

Questa gilda dedicata al Functional Programming è stata suddivisa in due macro momenti:

  • lettura del libro “Domain Modeling Made Functional” di Scott Wlaschin;
  • esercitazioni sulla programmazione funzionale, magari facendo refactoring di codice già scritto.

La lettura del libro è stata sia utile per capire in quali contesti applicare il Functional Programming, sia sorprendente, dato che viene trattato in più punti il tema del Domain Driven Design. Per quanto riguarda il lato pratico, il gruppo ha svolto esercizi utilizzando il linguaggio C# (nonostante nel libro gli esempi siano scritti in F#).

Alexa Skill

Una skill Alexa è un’applicazione che permette di estendere le funzionalità base di ciascun dispositivo della serie “Amazon Echo” e trarre il massimo dall’assistente digitale Alexa, incorporato in questi dispositivi.
L’obiettivo della nostra gilda è stato, quindi, l’implementazione di una nuova skill per la gestione della lista della spesa, con le seguenti funzionalità:
  • aggiunta di un prodotto;
  • eliminazione di un prodotto;
  • lettura della lista;
  • eliminazione di tutti i prodotti presenti;
  • invio della lista della spesa via e-mail;
  • gestione della lista tramite un bot di Telegram.

User Research Tools

L’obiettivo della gilda ha riguardato un lavoro di ricerca di nuovi strumenti da utilizzare in fase di ricerca utente per:
  • raccogliere gli insight da user testing in maniera efficiente;
  • fare convergere e organizzare i feedback raccolti attraverso i diversi strumenti (interviste, user testing, questionari ecc.);
  • definire uno standard a livello di report di usabilità.
Di seguito l’elenco degli strumenti analizzati e studiati:
  • hotjar: consente di rilevare il comportamento degli utenti di siti/Web app unendo le funzionalità di un’analisi quantitativa (per esempio Google Analytics) a un’analisi qualitativa;
  • UsabilityHub: una piattaforma che consente al designer di effettuare user testing da remoto attraverso una suite di strumenti volti a far emergere problematiche legate all’usabilità e a facilitare il processo progettuale;
  • User Testing: simile a UsabilityHub;
  • Airtable: piattaforma accessibile online che permette di creare e gestire spreadsheet contenenti sia testo che non, nonché la possibilità di creare report stampabili.

Reactive Canvas

L’obiettivo della gilda è stato la realizzazione del gioco della battaglia navale, con grafiche relative a cielo, mare e navi sviluppate utilizzando elementi canvas.
Aggiunto con HTML5 Canvas, o meglio HTML canvas è un elemento che può essere usato per disegnare elementi grafici tramite script (di solito JavaScript).
La comunicazione client-server è stata gestita tramite WebSocket mentre per gestire le animazioni 3d all’interno della pagina del browser è stata utilizzata three.js, una libreria JavaScript cross-browser che fornisce anche un API.

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 1Quarter

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.