Code, Deploy Value

Intré Camp 23 maggio 2023 – Castello Visconteo

1 Giugno 2023 - ~ 12 minuti di lettura

Rieccoci, cari lettori, con un nuovo resoconto relativo al secondo Intré Camp del 2023.

Per questo appuntamento abbiamo deciso di cambiare decisamente atmosfera. Siamo passati dalla campagna brianzola di Vimercate a un vero e proprio castello, precisamente il Castello Visconteo a Cassano d’Adda. Accolti in tre grandi saloni con affreschi medievali e ampie vetrate affacciate sul fiume equipaggiate di attrezzature moderne, oltre a quattro sale più piccole e una grande corte interna, abbiamo vissuto insieme questa intensa giornata.

Come tradizione vuole, l’agenda è stata ricca di appuntamenti tra i quali spiccano la gildonferenza e la unconference. In questo articolo vi fornirò i resoconti, corredati da qualche foto, dei momenti salienti dell’evento.

Buona lettura.

Introduzione

Fabio Ghislandi, Executive Agile Coach nonché partner di Intré, ha aperto la giornata fornendo alcune comunicazioni e presentando l’agenda ufficiale del camp.

Ne approfitto per dare ancora una volta il benvenuto a Tania Melnyk, sviluppatrice che è entrata a fare parte di uno dei nostri team. Buon lavoro Tania!

Prima della gildonferenza, il sottoscritto ha curato una breve presentazione sulla newsletter aziendale, mostrando i risultati sinora ottenuti dal suo esordio avvenuto il 30 gennaio di quest’anno. I numeri sono incoraggianti, segno evidente della bontà e della qualità dei contenuti proposti.

Gildonferenza

Uno dei due appuntamenti principali di ogni nostro camp è la gildonferenza, una combinazione delle parole “gilda”, ovvero un’associazione persone che hanno come scopo comune l’approfondimento di un argomento, e “conferenza”. Durante questa particolare conferenza, le persone di Intré condividono i risultati e le esperienze delle gilde che hanno animato l’ultimo quadrimestre.

Sul sito aziendale, nella sezione “Gilde“, è possibile trovare informazioni riassuntive sulle gilde attuali e quelle precedenti.

Gilda “Fotografi3”

Questa gilda si è concentrata sull’apprendimento e il rafforzamento dei concetti legati alla fotografia. Durante le sessioni teoriche e pratiche, i partecipanti hanno svolto una serie di attività:

  • acquisizione di familiarità con strumenti fotografici come ISO, apertura, tempi, luce ed esposizione;
  • approfondimento del tema della cultura visiva attraverso l’analisi di immagini fotografiche create da grandi fotografi. Tramite esercitazioni, casi studio e teoria hanno sviluppato una maggiore consapevolezza nell’utilizzo delle immagini.
  • Narrazione visiva ed editing fotografico, imparando a selezionare immagini che raccontino in modo più incisivo. È stato approfondito il concetto di “progetto fotografico” ed è stata sviluppata un’idea trasformandola in una serie di immagini coerenti tra loro.

Come risultato di gilda ogni persona ha realizzato fotografie su diversi soggetti applicando concetti e tecniche studiati durante il corso. Durante questo camp di maggio, ogni aspirante fotografo si è prodigato per immortalare i momenti più importanti della giornata.

Gilda “In Tréatro”

La gilda ideale per uscire dalla propria zona di confort e imparare a mettere in scena tecniche di improvvisazione teatrale.
Seguiti da Roberto Boer – formatore, improvvisatore teatrale, attore e presentatore – i membri di questo gruppo hanno seguito un corso sul “match di improvvisazione teatrale” imparando a costruire ambienti immaginari, installare performance, esercitare l’ascolto e reagire in modo adeguato e accettare il cambiamento.

Durante la unconference del camp, è stato organizzato uno spettacolo durante il quale tutti i partecipanti della gilda hanno messo in pratica quanto appreso durante il corso con Roberto.

Gilda “Visual note for piano”

Questa gilda è nata con l’intento di realizzare un’applicazione che permetta a chiunque di imparare a suonare un pianoforte in modo più semplice.
Utilizzando varie tecnologie, tra cui Unity e il linguaggio di programmazione C#, il team ha sviluppato un prototipo di un’applicazione con Realtà Aumentata che può essere utilizzato con dispositivi hardware quali l'”Oculus Quest“.

Il progetto è disponibile su GitHub inoltre, durante la unconference di questo camp di maggio, è stata organizzata una sessione durante la quale le persone hanno avuto la possibilità di provare a suonare un pianoforte attraverso un visore.

Gilda “Intré BrAIn”

Questa gilda prosegue il percorso della precedente “Big Brain”, spostando il focus sullo sviluppo di applicazioni, inerenti ad ambiti specifici, allenando modelli di AI esistenti per adattarli alle proprie esigenze.
La gilda “Right Brain” si è dedicata ai settori della “Computer Vision“, “Explainable AI” e “Generative AI” realizzando due applicazioni:

  • banner/no banner“, uno strumento che rimuove il banner personalizzato di un videogiocatore durante certe situazioni di gioco;
  • un’applicazione che usufruisce di modelli di “Generative AI” per produrre un riassunto testuale a partire da un audio o un video ricevuto in ingresso.

La gilda “Left Brain” ha approfondito le conoscenze nei mondi della “OCR” e della “Computer Vision” per realizzare un’applicazione che, dato come input uno scontrino fiscale, sia in grado di estrarre le informazioni sulla data e sul totale.

Per questo Intré Camp di maggio i due gruppi hanno curato una sessione di approfondimento sulle tematiche durante la unconference.

Gilda “GNUcca 2”

La gilda ha proseguito il percorso di studio della gilda GNUcca per completare gli argomenti oggetto degli esami LPIC 101-500 e LPIC 102-500 da sostenere e superare per ottenere la certificazione LPIC-1.
Come per la precedente gilda, i partecipanti hanno studiato dai libri di riferimento “LPIC-1 Linux Professional Institute Certification Study Guide” e “Linux Professional Institute: LPIC-1 (101)” e si sono esercitati usando il libro “LPIC-1 Linux Professional Institute Certification Practice Tests“. Per l’esame, sono state svolte simulazioni sul sito “Wiley“.

Gilda “Intrétainment”

Questa gilda ha perseguito due scopi:

  • creare uno strumento che favorisca il team building al di fuori dell’ufficio;
  • imparare a gestire i dati geografici (lato back-end e front-end) sfruttando tecnologie open source.

Negli incontri a disposizione il gruppo ha realizzato una prima versione di un’applicazione funzionante che comprende una serie di funzionalità di base (creazione/modifica/cancellazione di un evento, iscrizione/disiscrizione a un evento, upload/download di file e foto ecc.). Sono state utilizzate le seguenti tecnologie:

  • back-end: Java, Spring Boot, Kong come gateway delle API della’applicazione, Keycloak per il Single Sign-On e integrazione con il protocollo LDAP;
  • per il front-end, React.

Per la unconference, il team ha preparato una sessione di approfondimento dedicata al codice scritto per l’applicazione e alla gestione delle mappe.

Gilda “Android”

L’obiettivo della gilda ha riguardato l’approfondimento delle conoscenze sullo sviluppo di applicazioni native Android utilizzando i componenti più diffusi e i sensori presenti negli smartphone.

Come caso di studio è stato deciso di realizzare un’applicazione chiamata “i3 Advisor” che permette agli utenti di creare eventi relativi alle pause pranzo con i colleghi. La prima versione dell’applicazione è stata sviluppata utilizzando Kotlin, ed è stata un’occasione per impararne le basi e l’uso di alcuni componenti. Per la gestione dei dati è stato utilizzato Firebase, è inoltre presente la logica per Push Notification e per l’utilizzo di alcuni sensori quali il giroscopio, il GPS e la fotocamera.

Gilda “Cose spaziali sulla scala”

Recentemente sono emersi vari pattern e strumenti che stanno cambiando il Web, o meglio il modo di sviluppare applicazioni per il Web. L’obiettivo di questa gilda è esplorare alcuni di questi pattern e strumenti, con focus su Scaleway, un framework europeo di cloud computing e web hosting, e Next.js, e parallelamente svolgere attività di analisi delle performance.

A tale scopo è stata realizzata “Marv Films”, un’applicazione serverless in cloud – gestita con Kubernetes – che crea un catalogo di film recensiti grazie all’utilizzo dell’Intelligenza Artificiale, mostrata durante la gildonferenza del camp e disponibile a questo link.

Unconference

Alessandro Giardina, Agile Delivery Manager e responsabile della formazione in Intré, e Fabio Ghislandi hanno facilitato questo evento.

Alessandro e Fabio hanno spiegato le regole di una unconference, una conferenza in cui l’agenda viene creata al momento dai partecipanti stessi. Successivamente, hanno moderato il marketplace, la fase in cui i partecipanti presentano le loro sessioni e posizionano il relativo post-it negli slot orari disponibili. Terminate le presentazioni è stato concesso del tempo, ai soli titolari dei talk proposti, per confermare o apportare modifiche al programma, con l’obiettivo di arrivare ad avere un’agenda che potesse accontentare le richieste di tutti.

I prossimi paragrafi sono dedicati ai riassunti delle quattro sessioni che ho avuto il piacere di seguire.

Dipende tutto dal caso?

Pierpaolo Muzzolon, nostro gradito ospite e coach per attività di formazione interna legate alla “Comunicazione Efficace” e al “Public Speaking“, ha portato una tematica molto delicata. Riprendendo il titolo del suo speech, “Dipende tutto dal caso?” oppure siamo noi stessi con le nostre emozioni a preconfigurare quanto ci accadrà?
Attingendo a piene mani da tre campi, o meglio ancora mondi, lontani tra loro:

  • Comunicazione nonviolenta
  • Buddhismo
  • Neuroscienze

Pierpaolo ha trasmesso ai presenti la sua personale risposta alla domanda.

Comunicazione nonviolenta

La comunicazione nonviolenta (CNV), chiamata anche comunicazione empatica, è un modello comunicativo basato sull’empatia e si basa sull’idea che tutti gli esseri umani siano capaci di compassione. Riprendendo una citazione del suo inventore Marshall Rosenberg

È quello che pensiamo noi che dà origine alle nostre emozioni. Le nostre emozioni e i nostri sentimenti sono il risultato del nostro modo di interpretare ciò che gli altri dicono e fanno, nonché dei nostri bisogni peculiari e delle nostre aspettative in quel momento.

Buddhismo

Il Sutra del Loto, o meglio Sutra del Loto della Buona Dottrina, è uno dei testi più importanti della letteratura del Buddhismo. Al suo interno sono presentati i Dieci fattori per definire la realtà fondamentale della vita. Citando una parte del testo:

«La vera entità di tutti i fenomeni può essere compresa e condivisa solo tra Budda. Questa realtà consiste di: aspetto, natura, entità, potere, azione, causa (interna), relazione, effetto (latente), retribuzione e della loro coerenza dall’inizio alla fine»

Come influirebbero questi dieci fattori nel nostro modo di compiere scelte? Riprendendo una parte dell’articolo “I DIECI FATTORI” pubblicato dall’Istituto Buddista Italiano “Soka Gakkai”:

I Dieci fattori possono essere usati come uno schema per analizzare una data situazione. Osservandola attraverso questa prospettiva può risultare più facile individuare la radice di una sofferenza e innescare – attraverso la pratica buddista – un processo di trasformazione positiva.

Neuroscienze

Dal vasto mondo delle neuroscienze Pierpaolo riprende la “teoria del cervello trino” elaborata da Paul Donald MacLean anni or sono, secondo la quale il cervello umano è costituito da tre “strati“:

  • il primo, il complesso R, ovvero lo strato inferiore che avremmo ereditato dai rettili. Esso sarebbe la parte più antica del cervello che serve per svolgere attività primarie come mangiare, corteggiare e così via.
  • A un livello superiore si trova il cervello paleo-mammifero. Questa parte del cervello – e il sistema limbico in particolare – sarebbe responsabile di alcune emozioni (ad esempio rabbia, disgusto), gioco, assistenza materna e comunicazione vocale tra madre e neonato.
  • Infine, il terzo e più evoluto strato è il cervello neo-mammifero. È lo strato più recente che troveremmo solo nei primati.

A oggi questa teoria ha solo un interesse storico, ma forse ci piace pensare che la nostra parte ancestrale mira solo a soddisfare i bisogni più basilari e che poi noi, grazie alle nostre capacità superiori, riusciamo a elevarci e a compiere anche azioni più nobili. Per ulteriori approfondimenti, vi invito a leggere l’articolo “La teoria del cervello trino: la grande trappola“.

In chiusura, Pierpaolo ci ha lasciato due interessanti libri da leggere: “Come sono fatte le emozioni – La vita segreta del cervello” e “7 lezioni e 1/2 sul cervello“.

Skill Matrix

Marco Loregian, Agile Delivery Manager in Intré, ha spiegato il lavoro svolto a oggi per realizzare la Skill Matrix ovvero uno strumento molto utile per le aziende dato che riassume, ad esempio in forma tabellare con una sorta matrice, le competenze dei collaboratori.

Perché è importante avere una Skill Matrix?

Sostanzialmente la Skill Matrix soddisfa 3 bisogni interni:

  • Staffing: identificare persone idonee a formare un nuovo team.
  • Teamwork: identificare margini di miglioramento, stimolare il confronto e il mentoring.
  • Formazione: la Skill Matrix come base per quantificare la qualità della formazione erogata.

Metodo adottato

Nel corso del 2022 tutti gli sviluppatori sono stati coinvolti, come membri di un team, in un processo che ha portato a raccogliere i dati per comporre un panorama delle competenze tecniche presenti in azienda. Sono state svolte sessioni da remoto, e nelle fasi preliminari sono stati presi in considerazione team diversi in una stessa sessione. La fase di compilazione è invece stata limitata ai membri dello stesso team.
In ogni sessione sono stati presentati i dati ed è stata fatta una riflessione sulla scala di autovalutazione, per poi revisionare il template, eventualmente modificarlo e infine fare un confronto e una normalizzazione dei dati.

Artefatti

È stata utilizzata una scala di autovalutazione, con livelli da 1 a 6 (l’assenza di 0 è voluta), dove 1 sta per “passante” (“nessuna competenza a riguardo, conosco solo per sentito dire“) a “guru” (“le persone mi cercano per supporto e spiegazioni, tengo corsi o ne parlo a conferenze“). Ogni persona quindi ha compilato un foglio Excel ad-hoc clonato per ogni sessione, e il foglio è stato organizzato in diverse sezioni per agevolare la parallelizzzione del raffinamento (lavorando in coppia).

Marco ha poi dedicato l’ultima parte dell’intervento a una breve analisi dei dati raccolti e quali potrebbero essere i punti di miglioramento dell’intero processo e quindi dello strumento.

Tecnologia e Community

Federica Leonino e Michel Murabito, rispettivamente Event Specialist e Developer Advocate per Mia-Platform e tra i nostri graditi ospiti del camp, hanno dedicato una sessione al possibile, anzi necessario connubio tra due entità: Tecnologia e Community, prendendo spunto dalla loro esperienza in azienda.

Tecnologia

Michel ha parlato di Platform Engineering, la disciplina della costruzione e gestione di Internal Developer Platform (IDP) self‑service per il rilascio e la gestione del ciclo di vita del software, e dei suoi benefici quali:

  • velocizzazione del ciclo di sviluppo;
  • rimozione di complessità operazionali;
  • miglioramento della riusabilità del software;
  • miglioramento della “developer experience”, ovvero l’esperienza dello sviluppatore nel suo lavoro in un progetto;

Michel ha mostrato l'”Internal Developer Platform” cioè il modello adottato in Mia-Platform che ha lo scopo di semplificare la User Experience sia degli sviluppatori che del team Operation (in breve, chi si occupa delle infrastrutture e architetture del software), perché è bene che i mondi “dev” e “operation” possano anzi debbano collaborare senza intoppi. In un progetto software, se da una parte abbiamo il Producer, ovvero chi crea gli item, e dall’altra il Consumer, chi crea le applicazioni, il Platform Engineering Team deve stare necessariamente nel mezzo per definire le linee guida e tutti gli automatismi necessari affinché il lavoro proceda al meglio.
In tutto ciò, che ruolo gioca la community?

Community

Federica ha illustrato tutte le iniziative che Mia-Platform ha messo in moto per fare sì che le persone nei team in azienda siano continuamente stimolate e spronate a lavorare in un ambiente vivo e in continuo aggiornamento. Come per Intré, anche Mia-Platform organizza meetup, eventi, e partecipa attivamente alle conferenze di settore (come sponsor, oppure proponendo relatori, o semplicemente attraverso persone che vanno come spettatori).

La materia di cui sono fatti…i programmi

Marco Testa, sviluppatore in Intré, ha dedicato il suo intervento tentanto di dare una risposta alla seguente domanda: “Come è fatto il cervello di un programmatore?“.

Lo sappiamo, esistono diversi testi (per esempio “Clean Code” e “Domain-Driven Design“) dedicati ai design pattern e alle buone pratiche di sviluppo software. Va bene, anzi è d’obbligo studiare e tenersi aggiornati, ma c’è un aspetto da non sottovalutare quando parliamo di sviluppo software, ovvero che il software con il tempo cambia, cambia sempre, per esigenze lato cliente, per aggiornamenti hardware o software.

Come modificare quindi il software?

Sicuramente dovremmo leggerlo per capirlo e apportare i giusti cambiamenti. Dopotutto, quanto più un codice è leggibile, quanto più sarà semplice modificarlo. Ma allora…non sarebbe più semplice per tutti scrivere il codice direttamente in linguaggio macchina? Risparmieremmo tutti del tempo…ma non è possibile, sappiamo benissimo che le lunghe sequenze di 0 e 1 sono non congeniali per essere comprese dal nostro cervello.
Da questo ragionamento, Marco ha parlato dei tre tipi di memoria che si attivano nel nostro cervello.

  • Memoria a breve termine: è la memoria limitata nel tempo e in capacità.
  • Memoria a lungo termine: ha un’elevata capacità e durata, è comunque soggetta all’oblio ha bisogno di lavoro mentale.
  • Memoria di lavoro: è la memoria temporanea utilizzata in attività cognitive.

Come possiamo rendere più efficace l’uso delle scarse risorse di memoria?

Potremmo, anzi magari spesso lo facciamo senza rendercene effettivamente conto, ricorrere al chunking, ovvero raggruppare in “chunk“, o unità, l’informazione che stiamo leggendo per aiutarci nella sua comprensione. Si sta parlando di software e programmazione, Marco ha quindi riportato semplici esempi di righe di codice in cui applicare chunking per ottenere un codice migliore e più comprensibile, e quindi alleggerire il carico cognitivo.

Carico cognitivo

Il carico cognitivo è un termine utilizzato in psicologia cognitiva per definire il carico di lavoro mentale necessario per l’esecuzione di un compito in termini di utilizzo di memoria di lavoro. Marco ha introdotto i tre tipi di carico cognitivo, mostrando per ognuno degli esempi, anche di codice scritto, per comprenderne meglio il significato.

  • Carico cognitivo intrinseco, ovvero relativo alla complessità del dominio.
  • Carico cognitivo pertinente, lo sforzo per apprendere.
  • Carico cognitivo estraneo, cioè come l’informazione è presentata.

Più è elevato il carico cognitivo estraneo meno ne resta per quello intrinseco e pertinente.

In conclusione, conoscere i nostri limiti cognitivi ci aiuta a scrivere codice comprensibile.

Conclusione

Al termine della unconference abbiamo chiuso la giornata ritrovandoci tutti nella sala principale.

Francesco RigilloFabio Ghislandi hanno animato un piccolo momento di retrospettiva, dando la parola a chiunque volesse lasciare un feedback sull’evento. Anche per questo secondo Intré Camp sono stati premiati i migliori interventi della unconference, come potete vedere nelle foto seguenti.

Ringrazio tutti gli ospiti che hanno partecipato, dando il loro contributo proponendo interessantissime sessioni alla unconference, e ovviamente Intré, che ogni volta si impegna per rendere un Intré Camp migliore di quello precedente.

Foto di gruppo di Intré al Castello Visconteo a Cassano d'Adda
Articolo scritto da