La giornata dello sviluppatore

Uno dei principi fondamentali sui quali abbiamo costruito CodicePlastico e’ la “developer happiness”, adottiamo parecchie pratiche che cercano di rendere migliore la vita e il lavoro delle persone in CodicePlastico.

​ Per questo abbiamo deciso che non e’ necessario venire in ufficio e anzi abbiamo deciso che se ti svegli al mattino e non hai voglia di alzarti, vestirti ed uscire (sono settimane che a Brescia piove!!) puoi tranquillamente stare a casa e lavorare in pantofole.

Flow1

Anche sugli orari siamo molto flessibili, sappiamo che ci sono persone alle quali piace alzarsi presto e altre alle quali non piace, sappiamo che le palestre e le piscine sono vuote al mattino e piene la sera. Quindi vieni in ufficio quando vuoi e se pensi che ti facciano bene un paio d’ore in palestra vacci quando vuoi, chiediamo solo di avvisare i colleghi con cui stai lavorando.

I punti fermi: il più importante è a fiducia (e il cabinato in ufficio)

Abbiamo però alcuni punti fermi: lo standup delle 930 è importante per sapere a che punto siamo sui vari progetti e per pianificare la giornata, la pausa pranzo per chi è in ufficio, i videogiochi e le freccette e la nostra retrospettiva che facciamo ogni 2 mesi.

Flow2

Il resto della giornata e’ libero. Abbiamo la fortuna di essere un team abbastanza piccolo, tutti ci conosciamo e ci fidiamo degli altri, questa fiducia si ricambia in un ambiente di lavoro sano e piacevole.

Flow3

La giornata di una card, nella giornata dello sviluppatore

Naturalmente la grossa percentuale di giornata e’ trascorsa a sviluppare, singolarmente o in coppia quello che la card scelta prevede ma sia da remoto che in ufficio c’e’ sempre qualcuno a cui chiedere aiuto in caso di necessità. ​ Le card sono stimate da tutto il team, appiccicate ad una kanban board virtuale aggiornata quotidianamente durante lo standup. Da dove si comincia? Quindi ognuno prende la sua card e procede con l’implementazione. Test Driven Development quando ha senso, push su gitlab e, se la build è, e’ verde Pull Request ad un collega.

Flow4

Il meccanismo delle PR ha un duplice vantaggio: fa in modo che ogni funzionalità consegnata sia vista da almeno due persone e permette di intercettare eventuali errori o non aderenze allo standard di programmazione con conseguente miglioramento continuo della codebase.

Flow5

Dopo un po’ di Test e qualche card si va a casa, non troppo tardi per avere tempo per altre attività…non si vive di solo codice!

​Raccontare il nostro lavoro

Questo e’ grosso modo il nostro workflow e l’ho raccontato la scorsa settimana al CSMT durante il primo incontro di una serie di eventi dedicati al mondo dello sviluppo software dal titolo NextCODE.

Flow1

Una platea di ragazzi, studenti, insegnanti, o semplicemente curiosi in cerca di qualche spunto per conoscere il mondo IT. !

Agile Day 2019

AgileDay2019 Quest’anno sono tornato all’Agile Day che si e’ tenuto a Modena il 9 Novembre scorso. Una conferenza che ormai e’ una certezza, sicuramente una delle piu’ importanti conf italiane dedicate al mondo dello sviluppo software, frequentata da tantissimi professionisti interessati a scambiarsi opinioni, punti di vista e consigli su come migliorare il prorio lavoro.
Ho sempre amato questa conferenza da quando nel 2005 da principiante sentii parlare per la prima volta di eXtreme Programming e test driven development e in cui assistetti alla famosa keynote “The race starts at 2 O’clock”. Ricordo ancora il livello amatoriale della conferenza che dava al tutto un’aria quasi clandestina con pochi partecipanti appassionati, desiderosi di condivedere e curiosi di parlare di barre rosse e verdi, di user story e discutere di software design.

L’agile day negli anni e’ cresciuto diventando una conferenza d’importanza nazionale, seguendo le mode dello sviluppo software nel mondo Agile e perdendo parte della sua vena tecnica diventanto piu’ orientata ai metodi e la gestione dei team che di fatto sono le cose piu’ importanti in un tipo di lavoro come il nostro in cui l’aspetto personale e’ fondamentale.

Anche il mio contributo era sul tema dell’organizzazione di un team. Ho fatto una sessione dal titolo “Una crescita armoniosa” in cui ho raccontato la storia degli ultimi 2-3 anni di codiceplastico, in particolare il passaggio da 10 a quasi 20 persone.
E’ uno di quei talk che finiscono nella track “real life experience”, non da soluzioni ma racconta cosa abbiamo fatto in codiceplastico per rimanere un’azienda che si occupa di software con uno spiccato carattere nerd.
Mi e’ piaciuto ricevere risposte alle mie affermazioni e incontrare persone che stanno vivendo il nostro stesso processo.

I talk “real life” credo che siano i migliori, con gli anni ho imparato a diffidare dei Guru di professione che si limitano a dispensare soluzioni a problemi opportunamente semplificati e confezionati intorno alla loro soluzione. I talk di vita vissuta invece non danno soluzioni ma raccontano di esperimenti, successi e fallimenti sta a noi rivedere pattern vissuti nella propria azienda e valutare se e’ possibile replicare i successi raccontati e evitare gli errori commessi da altri.

AgileDay2019

CP10Y il nostro primo company meeting

Codiceplastico

CodicePlastico quest’anno compie 10 anni e ci sembrava giusto festeggiarli con un retreat di 3 giorni in Trentino. Sono stati 3 giorni davvero belli, una parola semplice ma non saprei come altro descriverli. E’ stata l’occasione per stare tutti insieme per 3 giorni lontano dai progetti, dai clienti e immersi in un ambiente amichevole. Abbiamo organizzato un paio di escursioni nella zona di Levico e alcune sessioni non prettamente tecniche per raccontarci “delle cose”. Abbiamo parlato di vino, di videogiochi, di nodi, di kung-fu, di prova del nove e di supereroi. Abbiamo cenato insieme, pranzato e bevuto fino a tarda notte. Abbiamo trovato il tempo per parlare del nostro lavoro, per cercare nuovi esperimenti da effettuare per provare a migliorare ancora il nostro modo di lavorare e di comunicare con i clienti. Insomma tre giorni che ci hanno permesso di rafforzare il rapporto tra le persone e migliorare l’affiatamento. Dopo questa prima esperienza positiva non possiamo far altro che riorganizzarla l’anno prossimo. Crediamo che sia un investimento davvero utile per aziende fatte di knowledge worker come la nostra in cui l’affiatamento di un team e’ uno dei fattori chiave per il successo di un progetto.

Socrates Italia

Ho sempre partecipato alle conferenze credendo molto nel valore raccolto durante le sessioni, e’ stato il modo per imparare nuove cose, conoscere persone che facevano il mio stesso lavoro e capire cosa stesse succedendo nel mondo dello sviluppo software. Ancora oggi partecipo volentieri alle conferenze ma più che altro per quello che succede durante i coffee break, il momento in cui partono discussioni, chiacchiere, confronti spontanei sul tema dello sviluppo software e della gestione dei team. Il problema e’ che il tempo dedicato ai coffee break e’ in genere solo una piccola percentuale dell’intera durata e infatti ultimamente sono sempre piu’ refrattario alle conferenze.

L’unica che non delude e’ la Socrates. Sara’ perche’ non e’ una vera conferenza, perche’ riesce a creare un clima di amicizia e di condivisione spontanea, perche’ si parla di cose concrete e si creano gruppi di persone che continuano una sessione fino a tarda notte.

Socrates e’ un’unconference, ossia una conferenza senza programma in cui lo schedule della giornata viene creato la mattina stessa dai partecipanti, che propongono i temi di cui vogliono parlare.

Quest’anno ho partecipato alla mia terza edizione. Il mio giudizio e’ anche quest’anno molto positivo, due giorni lunghissimi ricchi di spunti, conoscenze, idee e nuova energia da portare a casa.

Abbiamo parlato di Testing (tema intramontabile) con la nuova tecnica proposta da Kent Beck (test && commit or revert), di tastiere meccaniche, di come imparare nuove cose (scrivero’ un post ad-hoc su questo tema), di deployment automatici, di Emacs e Vim, di cultura aziendale e tanto altro.

Agenda del primo giorno

Agenda giorno 1

Agenda del secondo giorno

Agenda giorno 2

Credo che la passione sia stata la vera forza trainante perche’ in questa conferenza a differenza di molte altre non c’erano i riflettori e chi raccontava la sua esperienza lo faceva solo per il gusto di farlo e di condividere con gli altri il suo punto di vista senza altri tornaconti se non un feedback per migliorarsi.

Un altro fattore che ha fatto la differenza e’ stato essere tutti insieme nello stesso albergo e vivere a stretto contatto per 48 ore senza limiti di orari, impegni e schedule stringenti. Anche la sera le sessioni sono proseguite fino alle 2 di notte con i laptop accesi per scrivere kata o per mostrare progetti e idee.

Se siete programmatori con l’obbiettivo di diventare sempre piu’ bravi non potete perdere la prossima edizione.

Danzare sulla tastiera

Parecchi anni fa ero un fan di Resharper, ricordo ancora alcuni degli shortcut che usavo e penso agli incredibili livelli di produttività che ti permetteva di raggiungere con Visual Studio. E’ stato allora che ho iniziato ad amare l’uso della tastiera e ho capito che il mouse e’ uno strumento utile ma lento e scomodo. Da alcuni anni tutti in CodicePlastico si sono dotati di tastiere meccaniche, siamo partiti con le DAS e gli switch CherryMx Brown leggeri e silenziosi, poi alcuni di noi sono passati alle tastiere Filco e ai Blue switch molto più “clicky” e piacevoli. All’inizio non ci credevo ma l’uso di una tastiera meccanica, oltre che comoda facilita la scrittura veloce e l’uso della tastiera e gli switch meccanici hanno un feedback più preciso, una corsa della giusta lunghezza e una curva di risposta ideale per chi usa tanto la tastiera.

Qualche anno fa nelle community degli sviluppatori si e’ parlato parecchio di questo articolo in cui l’autore spiega come ricostruire (almeno virtualmente) la gloriosa Space cadet keyboard

Ma questo e’ stato solo l’inizio e un mondo si e’ aperto. Il layout delle tastiere qwerty non e’ l’ideale per scrivere, si sa ma siamo ormai abituati ad usarlo. Quello che pero’ stanca di piu’ e’ dover continuamente spostare le dita dalle lettere per arrivare ai tasti modificatori (CTRL-SHIFT-ALT-CMD). Alcuni amici mi hanno fatto conoscere l’esistenza di una famiglia di tastiere che hanno un firmware open source e quindi permettono una completa customizzazione dei tasti modificando il firmware e flashando il chip della tastiera. Il firmware in questione e’ il QMK

Cosi, incuriosito da questa novità (almeno per me), mi sono comprato una Whitefox, una piccola tastiera 65%, molto elegante e completamente Open source (per i maker: su Github si trovano gli schemi elettrici della board oltre ai disegni tecnici del case e le istruzioni di montaggio). La Whitefox inutile dirlo utilizza il firmware QMK.

Con questa tastiera abbinata al firmware e’ possibile rimappare i tasti ma soprattutto assegnare allo stesso tasto diverse funzioni a seconda di come viene premuto. Ad esempio nel mio caso specifico il tasto S emette una S se premuto normalmente ma diventa SHIFT se tenuto premuto. Quindi la combinazione S+P stampa una P maiuscola.

L’obbiettivo del remapping dei tasti e’ quello di spostare i tasti più utilizzati vicino alla home row. (La home row e’ la fila di tasti ASDF….) La prima modifica che ho fatto e’ stata di spostare i tasti freccia nei pressi della home row. I tasti freccia sono tra i più utilizzati, li usiamo per spostarci tra le linee di codice, per selezionare il testo, per navigare tra le cartelle e aprire i file, quindi averli addirittura fuori dalla tastiera e’ davvero scomodo e poco produttivo. Per cui ho modificato il firmware per avere i tasti I-J-K-L come tasti freccia uniti ad un modificatore che li attivava. Dove mettere il modificatore? Anch’esso l’ho voluto sulla home row per cui ho usato il tasto A. Come dicevo prima e’ possibile far si che il tasto A si comporti come A se premuto da solo, e si comporti da modificatore se premuto insieme ad un altro tasto. Quindi A+ J e’ la freccia sinistra, A + K e; la freccia in basso , ecc…

Questa e’ stata la prima modifica effettuata su consiglio dell’amico Arialdo. Devo ammettere che e’ stato illuminante, mai avrei pensato di poterli usare fin da subito. Ma abbiamo appena incominciato, appena ci si abitua viene a mancare un altro set di tasti modificatori: i classici SHIFT, ALT, CMD (o CTRL). Le frecce come detto prima spesso si usano insieme a SHIFT per poter selezionare del testo, ad ALT per avanzare di una parola alla volta o a CMD per andare ad inizio/fine riga e avere i tasti freccia a portata di mano ma i modificatori lontano e’ vantaggioso solo a meta’. Quindi il remapping successivo e’ stato di portare tutti i modificatori sulla home row. Per cui S = SHIFT, D = ALT, F = CMD e per simmetria J = CMD, K = ALT, L = SHIFT. Questo si puo’ fare grazie alla modifica del firmware QMK, usando i tasti sulla home row come modificatori temporanei. L’ultimo piccolo hack riguarda il dimenticato tasto Caps-lock (chi lo usa??). Anche lui e’ tornato doppiamente utile, premuto da solo e’ ESC, se tenuto premuto diventa CTRL. Questo e’ lo stato attuale della mia nuova piccola tastiera, sicuramente andrò avanti con altre modifiche volte a massimizzare l’efficenza riducendo gli spostamenti.

Un post molto nerd, per non dimenticarci che siamo nerd.