Giovedì 18 maggio 2017 si è tenuto l’Intré Camp nella meravigliosa cornice dell’Oasi di Galbusera Bianca, sita nel bel mezzo del Parco Regionale di Montevecchia e della Valle del Curone.
Ice breaker
Sistemati gli zaini nella sala a noi dedicata per la giornata ci siamo diretti sul prato di fronte alla struttura dove Fabio, partner e Agile Coach di Intré, ci ha coinvolti in simpaticissime attività di team building.
Durante il primo gioco, dal titolo “piripicchio-piripacchio”, lo scopo è stato semplicemente ripetere le istruzioni di Fabio. Alla parola piripicchio, gli indici delle mani dovevano essere spostati verso l’alto, in orizzontale invece al grido piripacchio. Vi domanderete “e che ci vuole?, basta ascoltare”. Ecco, ascoltare. Se non fosse che Fabio di tanto in tanto ingannava i presenti muovendo le dita in senso opposto alla parola pronunciata…sì, sarebbe stato semplice 🙂
Ascoltare quindi, un buon team deve saper ascoltare.
Oltre che l’ascolto, anche la fiducia è importante in un team. Per cui, disposti in un due file uno di fronte all’altro, Fabio ci ha fatto correre passando sotto un tunnel di braccia.
Terzo ma non ultima come importanza, l’attività che personalmente è stata la più “sfidante”.
Dapprima disposti in cerchio, Fabio ha chiesto di avvicinarci l’un l’altro e poi di sederci sulle ginocchia della persona dietro…”do not try this at home!” Scherzi a parte, da questa comoda posizione dovevamo simulare il quotidiano gesto di bere il caffè allungando la mano verso il centro di un ipotetico tavolo, con tanto di difficoltà ulteriore dovuta al gesto di girare il cucchiaino nella fantomatica tazzina.
Bell’inizio insomma, divertente e allo stesso tempo tonificante.
Lo so, i lettori più attenti avranno notato dei volti nuovi. No, non sono attori, ma nuovi membri del team di Intré. Sì, siamo ulteriormente cresciuti, e la speranza è di continuare questo trend. Questo e altri argomenti (incremento di fatturato, nuovi clienti acquisiti, ampliamento dell’ufficio della sede di Seriate) sono stati oggetto della presentazione di Francesco tenutasi in sala.
Prima del coffee break tanto atteso, Market Place time!
Armati di idee e stick note, ognuno di noi ha proposto una track da approfondire in saletta o all’aperto, sotto il gazebo.
Coffe break ora! Caffè, crostate e biscotti per tutti.
It’s time to track
Come si può vedere dalla foto precedente, le proposte sono state tante e variegate, ed è stato un peccato non aver potuto partecipare a tutte. Con il contributo di Ferdinando, Marco (ultimo arrivato in squadra), Claudio Fabio e Gianni, di seguito riporto quanto accaduto nell’arco di 2 ore, sperando di non risultare troppo noioso 🙂
Vivere l’Agilità
Fabio ci ha riproposto il suo intervento tenuto all’”Agile Open Day” di Napoli del 12 maggio scorso.
Ha trattato il tema di come Intré ha interpretato i valori dell’agilità in questi anni e come questi si sono trasformati in reali e vissute opportunità di miglioramento.
Tra i temi forti ha citato l’adozione di un approccio iterativo e incrementale, la gestione della complessità, la scelta di una leadership diffusa, l’auto-organizzazione dei team, il perseguimento dell’eccellenza tecnica.
É stata un’occasione per ripercorrere la storia aziendale da “come eravamo” a “come siamo”.
Quale linguaggio adottare per un nuovo progetto?
Marco e Alex hanno proposto una sessione incentrata sullo stesso tema “Come scegliere un LFTL nel caso di un nuovo progetto”.
LFTL = Linguaggio, Framework, Toolkit, Libreria.
Nel 2017 è impossibile trovare una soluzione definitiva tra le miriade a disposizione; alcune consolidate altre un po’ meno ma che vantano ottime prospettive per scalzare quelle che attualmente sono le soluzioni ottimali…Quindi che fare?
Discutendo tra gli sviluppatori presenti è emerso che sicuramente ogni volta emerge la voglia di voler considerare l’ultimo linguaggio rilasciato o comunque ciò che è all’ultimo grido, ma giustamente questa fiamma si affievolisce dato che puntualmente si deve far fronte con le esigenze del cliente e del team stesso.
Il cliente va spronato e accompagnato a utilizzare qualcosa di nuovo (anche un semplice aggiornamento di framework) magari facendogli notare pro e contro nell’utilizzo di un prodotto rispetto a un altro. Ma va anche ascoltato per comprendere le sue esigenze in maniera tale da renderlo entusiasta e sicuro di ottenere il risultato. Ciò renderebbe felice anche il team.
Decidere cosa utilizzare non deve essere una imposizione del responsabile bensì una scelta dal team che dovrà poi lavorare con lo strumento scelto. Sapere quale sono le problematiche comuni (poche conoscenze su un prodotto) permette di scegliere qualcosa che renda il team comunque produttivo e con una buona probabilità di apprendere nuove conoscenze.
Indicazione utile nella scelta risulta quella di utilizzare non l’ultima soluzione proposta perché “di moda, trendy” ma valutare l’insieme. Scegliere prodotti che hanno un buon supporto a livello di community on-line (documentazione su API, linguaggio) e la certezza che non venga abbandonata nel breve rischiando di pregiudicare l’investimento in termini economici e umani (dover riscrivere codice da zero e tempo utilizzato inutilmente nell’apprendimento).
Guacamole e OpenOffice
Daniele, IT manager di Intré, ha introdotto 2 nuovi servizi per l’azienda:
Apache Guacamole è un gateway clientless per l’accesso remote desktop a macchine virtuali residenti, nel nostro caso, nel data center dell’ufficio a Monza. Clientless perchè l’utente non ha bisogno d’installare alcun software o plugin, si accede da una tab del browser Web.
Daniele ha mostrato come accedere a una macchina virtuale in modalità view (solo lettura) o do (per modifiche), e la possibilità di condividere la sessione. Personalmente molto interessante, anche per la semplicità di utilizzo.
OnlyOffice è una suite di applicazioni office che permette agli utenti di organizzare e gestire documenti e che offre:
- possibilità di sharing in view/edit mode;
- incorporare documenti in siti web;
- integrazione, tra gli altri, con applicazioni di file storage come Owncloud, scelto da Intré;
- integrazione con CRM ed email aggregator.
Daniele ci ha mostrato come editare un documento e la possibilità d’inserire commenti.
Paint the story point
Mettetevi comodi e armatevi di pennarelli e fogli. No, non sono impazzito, ma è quanto serve per partecipare al mini workshop di Ferdinando il quale ha provato a ragionare sulla annosa questione della stima del lavoro di sviluppo del software e dell’unità di misura che in genere viene adottata, ovvero quella dello story point.
Obiettivo del gioco è stato quello di colorare delle figure disegnate su di un foglio, procedendo per piccole iterazioni.
Queste le regole:
- definizione di team da 4/6 persone, ognuno dei quali equipaggiato con un foglio con disegnate stesse immagini da colorare; nel nostro caso, 2 team da 5 elementi;
- un pennarello per coppia;
- pianificazioni degli sprint della durata di 3 minuti;
- sprint da 1 minuto per colorare il più possibile;
- le figure devono essere tutte ben colorate (senza sbavature e spazi bianchi) affinché possano essere accettate dal Product Owner, rappresentato in questo caso dallo stesso facilitatore del workshop.
Prima dell’inizio del primo sprint Ferdinando, nel ruolo di facilitatore, ha chiesto di stimare la complessità delle figure adottando la serie di Fibonacci; una volta fatta la somma degli Story Point equivalenti, è stato chiesto inoltre di dare una stima del tempo necessario a colorare tutte le figure.
Qui è emersa subito una prima differenza tra i due team; il 1° team ha stimato 140 punti, e un tempo di 10 minuti per completare l’intero lavoro, mentre il 2° ha calcolato 98 punti e un tempo totale di 20 minuti.
Team | Stima punti iniziale | Stima tempo iniziale |
1° Team | 140 | 10’ |
2° Team | 98 | 20’ |
Al termine della prima iterazione il 1° team non è riuscito a colorare nemmeno una figura, ignorando le più piccole in favore quelle più grandi, mentre il 2° team ha colorato le più piccole e iniziato una più grande, collezionando 3 Story Point.
Team | Stima punti iniziale | Stima tempo iniziale | Velocità 1a interazione |
1° Team | 140 | 10’ | 0 |
2° Team | 98 | 20’ | 3 |
Il facilitatore ha quindi offerto la possibilità ai team di suddividere le figure in forme più piccole, chiedendo poi una ristima in termini di Story Point e tempi. Interessante notare come la stima iniziale del 1° team sia aumentata da 140 a 183 punti, mantenendo però sempre 10 minuti come tempo previsto, mentre il 2° team ha mantenuto gli stessi Story Point e diminuito la stima in tempo da 20 minuti a 7.
Team | Stima punti iniziale | Stima tempo iniziale | Velocità 1a interazione | 2a stima in punti | 2a stima in tempo |
1° Team | 140 | 10’ | 0 | 183 | 10’ |
2° Team | 98 | 20’ | 3 | 98 | 7’ |
La seconda iterazione ha visto il 1° team completare 18 Story Point, mentre il 2° team ne ha consegnati 11; a questo aumento di velocità è però corrisposto un decremento nell’iterazione successiva: 1 punto per il team 1 ed 8 per il 2°, più costante ma comunque sotto le aspettative.
Team | Stima iniziale | tempo iniziale | Velocità 1a iter. | 2a stima in punti | 2a stima in tempo | Velocità 2° iter. | Velocità 3° iter. |
1° Team | 140 | 10’ | 0 | 183 | 10’ | 18 | 1 |
2° Team | 98 | 20’ | 3 | 98 | 7’ | 11 | 8 |
Al termine della terza iterazione si è cercato di stimare la velocità dei team, verificando poi nel quarto mini-sprint la validità della previsione: seppur con le dovute differenze, la velocità dei team è stata confermata. Da notare come il 1° team, al completamento di una grossa figura, abbia consegnato una grossa mole di lavoro dopo uno sprint piuttosto deludente.
Team | Stima iniziale | Stima iniz. | Velocità 1a ite. | 2a stima in punti | 2a stima in tempo | Velocità 2° iter. | Velocità 3° iter. | Velocità 4° iter. |
1° Team | 140 | 10’ | 0 | 183 | 10’ | 18 | 1 | 57 (stimati 55) |
2° Team | 98 | 20’ | 3 | 98 | 7’ | 11 | 8 | 8 (stimati 8) |
Dato il poco tempo a disposizione (solo 30 minuti), è stato notato da tutti con un certo stupore come le dinamiche tipiche di queste situazioni (planning, stima, tempi) siano emerse con facilità nonostante il lavoro da compiere fosse ben più semplice di quello che quotidianamente svolge uno sviluppatore software.
Alla prossima occasione, e con un maggior lasso di tempo a disposizione, si proverà a far emergere altre aspetti, introducendo piccole modifiche a un template comunque già molto valido.
Qui potete trovare l’esempio di workshop al quale Ferdinando si è ispirato, grande!
Thanks Design
Emanuele ci ha parlato di Thanks Design, venture di Intré composta, oltre che dal già citato Emanuele, dal restante team dei designer:
Thanks Design è uno studio di design quindi che si propone di affiancare il cliente nella progettazione di esperienze digitali, basandosi su una parola: COMPRENSIONE…dell’utente finale, del cliente e del team con il quale lavorano.
Emanuele ci ha quindi spiegato il metodo adottato, chiamato Design Eye, incentrato sull’utente e composto da 4 fasi:
- Ricerca
- Ipotesi
- Sviluppo
- Test
E della concretizzazione di tale metodo in un kit, composto da un mazzo di carte suddivise nelle categorie elencate sopra più la categoria obbiettivi, con il quale giocare e progettare al meglio il prodotto con il cliente.
Fidatevi cari lettori se vi dico che alla fine di questo track in sala si percepiva emozione (compreso Emanuele)…sapete perché? Perché personalmente non capita tutti i giorni di ascoltare qualcuno che crede veramente in quello che fa, che non svolge il suo lavoro prendendolo in quanto tale…sinceramente, ciò che sono i propositi di Emanuele è qualcosa che va oltre il business. Lui ci crede. E noi anche.
Chatbot
Eccoci arrivati al talk proposto dal sottoscritto.
I chatbot…ma cosa sono? Cosa ne pensa la gente?
Per chatbot si intende una categoria di software che ha lo scopo di simulare la conversazione con un utente, o in forma puramente testuale, o tramite classici elementi di UI. Esistono infatti diverse tipologie di chatbot, più o meno complessi a seconda della loro logica implementata per rispondere alle richieste dell’utente:
- estrapolare alcune parole considerate chiave per dare la risposta più sensata;
- analizzare l’intera frase scritta dall’utente;
- rispondoer mostrando elementi di UI in base all’input dell’utente.
A ora esistono chatbot per le esigenze più disparate:
- integrati nei più diffusi software di istant messaging quali Telegram, Messenger;
- integrati in siti Web, per velocizzare l’erogazione di un certo servizio al cliente (ad esempio, il sito della compagnia aerea olandese KLM per prenotare un volo);
- integrati in piattaforme aziendali, sempre per velocizzare alcuni processi interni, quali ad esempio il reset della password.
La discussione ha infatti toccato questi aspetti, e cioè come un chatbot potrebbe tornare utile per Intré (operazioni interne quali cambio password) o per gestire richieste di assistenza dei clienti (ad esempio per accogliere richieste d’intervento lato IT più velocemente rispetto alla tradizionale telefonata e conseguente apertura del ticket per l’intervento).
Personalmente ho molto apprezzato l’interesse dei designer che hanno partecipato attivamente alla discussione.
Promises in Node.js
Claudio, developer Intré sempre attento alla scrittura di un codice “pulito” e alla voglia di allinearsi alle nuove evoluzioni di ECMAScript ha presentato l’utilizzo delle Promises in Node.js.
Le promises, che sono sostanzialmente “promesse” di restituzione di un valore nel futuro, hanno un ruolo molto importante nel linguaggio JavaScript, in particolare nel supporto alla programmazione asincrona.
La soluzione alternativa più diffusa è l’utilizzo delle callback, che sono spesso nidificate l’una dentro l’altra e questo rende difficile la leggibilità e la manutenibilità del codice. Con le Promise questo risulta essere molto più semplice facendo diventare il codice molto più pulito e leggibile.
Promise? Il futuro…
Segue un piccolo esempio base di come la Promise può semplificare il codice eliminando una serie di operazioni nidificate:
Grazie Claudio, peccato non aver potuto partecipare ma il tuo talk era in contemporanea con il mio 🙂
Giochi & Team Building
Damiano, developer Intré, ha proposto 2 attività ludiche inerenti al team building.
La prima ha visto come protagonista un uovo…e il suo salvataggio! Ebbene sì, SALVA L’UOVO.
Dopo averci diviso in 2 squadre, Damiano ha spiegato le regole e dato il via alla partita.
Obiettivo: con il materiale messoci a disposizione (fogli di carta, graffette, scotch), ognuna delle 2 squadre doveva realizzare, entro un tempo limite, un involucro nel quale posizionare l’uovo per appunto salvaguardarlo al meglio dal “crash test” al quale sarebbe stato sottoposto dal buon Damiano.
Chi vince? Chi costruisce l’involucro più resistente che quindi permette all’uovo di rimanere intatto.
Gioco davvero divertente, perché con il poco tempo a disposizione il team ha dovuto organizzarsi al meglio e cooperare per arrivare alla soluzione migliore! Dopotutto, avevamo 1 solo sprint 🙂
Dato il poco tempo rimasto a causa test delle uova prolungatisi (un primo lancio non aveva convinto il giudice Damiano), il secondo gioco proposto non ha riguardato uova, penne, fogli…ma le persone.
Riprendendo la terza attività proposta da Fabio a inizio mattinata, Damiano ci ha lasciato divisi in 2 team e chiesto di metterci in cerchio. Dopodiché ha chiesto a ognuno di tendere un braccio verso il centro del cerchio prendendo la mano di chi avessimo di fronte, e successivamente di fare la stessa cosa con l’altra mano, incrociandoci…un vero delirio!
Obiettivo del gioco: disincastrarsi senza mai lasciare la mano dell’altro…una sorta di Twister ma giocato in piedi!
Davvero divertente e allo stesso tempo complicato, il team deve essere coordinato e affiatato per raggiungere l’obiettivo.
RxJS
Gianni ha condotto un talk tecnico, come quello di Claudio, per parlare di Reactive programming.
Reactive programming è un paradigma di programmazione orientato alla propagazione dei cambiamenti e agli stream di dati.
Lo scopo fondamentale è quello di gestire con facilità flussi di dati (stream), siano essi statici (array, matrici, ecc.), oppure dinamici (eventi), creando una dipendenza fra il modello dei dati e la loro elaborazione al fine di facilitare la propagazione automatica dei cambiamenti attraverso appunto il flusso dei dati.
L’obiettivo di Gianni è stato non solo di spiegare qualcosa di nuovo, ma anche di trasmetterci il suo entusiasmo nel lavorare con la libreria ReactiveX e la sua versione per JavaScript (RxJS), presentandoci i principali contesti in cui può essere utilizzata e riassumibili in gestione ed elaborazione di:
- callback
- eventi
- chiamate remote (ad esempio HTTP/AJAX, database)
- stream di dati.
Tra una chiacchiera tecnologica e l’altra, uova salvate e mani intrecciate, è arrivata l’ora della pappa, consumata nelle sale dell’agriturismo mangiando dell’ottimo cibo bio (personale menzione per il flan di zucchine, durato troppo poco nel mio piatto 🙂 ).
Notate quella persona immortalata con il pollice in su? É Marco Calzolari, Agile coach e co-founder di Agile Reloaded, che ha organizzato un interessantissimo e “talentuoso” pomeriggio.
Workshop Intré talents
Marco Calzolari ci ha parlato di talento.
Ma che cos’è per noi il talento? Cosa intendiamo con questa parola?
Per qualcuno talento vuol dire riuscire in qualcosa bene e velocemente, per altri avere una capacità innata nel riuscire in qualcosa.
Ma come si rapporta questa parola in un contesto aziendale?
Può l’ambiente lavorativo nel quale siamo quotidianamente calati, essere di aiuto per far emergere il/i nostro/i talento/i? Oppure l’ufficio, i colleghi, il progetto per il quale lavoriamo, ci soffoca, demotiva e quindi ci impedisce di tirar fuori il meglio di noi?
É importante quindi ricevere dei feedback continui di ciò di cui ci occupiamo, perché parlarsi è importante, ci aiuta a capire se ciò che stiamo facendo lo stiamo facendo nel modo giusto, e in caso contrario, capirne i motivi e magari adottare delle contromisure.
Qui le slide che contengono diversi concetti dell’intervento di Marco.
E cosa ci potrebbe aiutare a prendere coscienza/sviluppare il nostro talento in maniera agile?
Marco ha brevettato un framework “Adaptive Career Design” chiamato Agile Talent Canvas che ha come scopo quello di aiutare la persona a tirare fuori il proprio talento rispondendo a delle domande attinenti a una tematica lavorativa ben precisa.
Per l’occasione, Marco ha voluto focalizzare l’attenzione solo su alcune aree del canvas, precisamente quelle evidenziate di giallo.
E qui il workshop.
Dopo averci suddiviso in coppie, abbiamo ognuno replicato tale canvas su di un enorme foglio e ci siamo diretti dove meglio ci piaceva per dare inizio a un’intervista reciproca.
Mi spiego meglio.
In slot temporali di 50 minuti, i primi 25 una persona assumeva il ruolo d’intervistatore e l’altro dell’intervistato, riportando ciò che gli veniva in mente relativamente a una certa area tematica. Per aiutarci a scrivere i nostri pensieri, l’intervistatore aveva a disposizione un set di domande per ogni area tematica. Non era obbligatorio attenersi rigidamente all’elenco di domande, sia chiaro, in quanto sono degli spunti. L’importante era “tirar fuori e scrivere sul foglio”.
Al termine dei 25 minuti, ci si poteva invertire oppure continuare con gli stessi ruoli.
Al termine della prima sessione, ci siamo ritrovati in sala per scambiarci opinioni e feedback sull’esperienza. Ammetto di aver percepito entusiasmo e contentezza nei volti di tutti, perché in quel breve lasso di tempo è come se si fosse davvero entrati in confidenza con il collega di turno. Io ero in coppia con Francesco, e non so come, nonostante non abbia molto modo di parlarci per via di progetti diversi sul quale lavoriamo e quindi scarsa confidenza, dopo questi 50 minuti sembrava di conoscerlo da una vita…sorprendente.
Al secondo turno d’intervista, eravamo infatti più rilassati e curiosi di farci domande e darci delle risposte, quasi come 2 amici che da tempo non si parlano.
Al termine della seconda sessione, Marco ci ha chiesto di appoggiare sul pavimento i nostri canvas, uno di fianco all’altro, per permetterci di prendere visione di quanto TUTTI avessimo da dire. Davvero un bel momento, forse il modo migliore per concludere la giornata di camp aziendale.
Grazie Marco, fantastica esperienza, peccato per il poco tempo a disposizione!
Conclusioni
Dove iniziare, non lo so.
Location favolosa, immersi nel verde, lontano dal caos cittadino e dalla rete…ah no, quella no, “hands up” per Daniele che ha organizzato il tutto.
Il market place a tema libero, che mi ha divertito (ora so come proteggere un uovo e come giocare a Twister in maniera alternativa 🙂 ), che mi ha permesso di conoscere Guacamole non solo come salsa da accompagnare con le patatine, e che mi ha emozionato (Emanuele quella presentazione non si dimentica facilmente, thanks!!).
La consapevolezza infine che ognuno di noi è speciale, abbiamo ognuno dei talenti e delle debolezze, ed è giusto tirarli fuori e parlarne con persone che non andrebbero considerate come semplici colleghi…
Al prossimo Intré Camp!