emanuele delbono
Concorso di idee per scuole superiori

Concorso

Lo scorso anno CodicePlastico ha organizzato un concorso di idee coinvolgendo alcuni istituti tecnici della Lombardia. In particolare abbiamo contatto il IIS Castelli Brescia, il Torriani di Cremona e il Paleocapa di Bergamo. L’obbiettivo del concorso era ideare e/o realizzare un’applicazione sul tema smartcity/servizi al cittadino o sul tema della salute delle persone.

Abbiamo presentato il concorso nelle scuole lo scorso inverno visitando le scuole ed incontrando direttamente i ragazzi. Abbiamo raccontato cosa facciamo in CodicePlastico e come lavoriamo e abbiamo ricevuto parecchie domande interessate.

La scorsa settimana abbiamo fatto la cerimonia di chiusura premiando i team vincitori. Non e’ stato facile selezionarli, tutti i progetti erano molto interessanti e innovativi, i gruppi si sono mostrati preparati e perfettamente in grado di ideare e realizzare le loro idee. Speriamo di aver lasciato qualcosa di buono ai ragazzi ma siamo certi che gli sia piaciuto, qualcuno ci ha già ricontattato per venire a trovarci durante le vacanze estive e vedere dal vivo il nostro team all’opera. Probabilmente rifaremo l’evento l’anno prossimo, credo sia un buon modo per fare cultura e mostrare che non solo i grandi nomi sono interessati ai talenti dei giovani informatici.

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.

Teams x Progetti

CodicePlastico è una software house nel classico senso del termine: il suo unico scopo di business è soddisfare i bisogni dei suoi clienti mediante programmi scritti ad-hoc. Non rivendiamo, customizziamo, modifichiamo software fatto da altri ma scriviamo sempre tutto da zero. Oggi siamo in 15 persone, 14 sviluppatori e una persona che si occupa della parte amministrativa/gestionale/organizzativa dell’azienda. Queste 15 persone seguono diversi progetti. I progetti arrivano, iniziano, qualche volta finiscono molte volte continuano per anni e la cosa più difficile per noi è ottimizzare lo scheduling delle persone sopratutto per progetti che sono nella fase di coda lunga (principali sviluppi terminati e attività manutenzione, correzione e piccole aggiunte in corso) Fino ad oggi abbiamo fatto in modo che ogni progetto sia assegnato ad un microteam di 2-4 persone e che queste persone seguissero più di un progetto per contemporaneamente, tipicamente un progetto principale e uno o due progetti secondari su cui fare piccole manutenzioni. Questo meccanismo crea incroci difficili da sbrogliare soprattutto quando i numeri crescono. Capita che i team si “rubino” le persone a vicenda per poter terminare il progetto o effettuare un veloce intervento.

Uno dei modelli ideali, raccontato anche da alcuni coach è quello in cui tutti possono lavorare su tutti i progetti cosi da poter modulare l’effort a seconda delle esigenze. Ma anche questo, con i nostri numeri, diventa molto difficile, soprattutto per progetti grossi con una lunga storia. Se poi aggiungiamo il fatto che abbiamo in produzione diversi stack tecnologici le cose sono ancora più complesse.

Un’idea ci è venuta ripercorrendo la storia di codiceplastico e ricordando quando questo per noi non era un problema. Era il periodo in cui eravamo 5-6 persone, tutte commitate su tutti i progetti (che al tempo non erano molti come oggi) e tutti in grado di intervenire in caso di necessita’.

Ci abbiamo pensato, abbiamo valutato varianti e il modello che si sta concretizzando è quello in cui tutti possono lavorare su tutto ma su una scala ridotta. Stiamo cioè provando a creare tante (tre?) piccole CodicePlastico che siano autonome, per buona parte isolate dalle altre e responsabili di un sottoinsieme (proprio) dei progetti di tutta l’azienda. In questo modo ogni unita’ potrà seguire un piccolo set di progetti e su quelli avrà tutta l’autonomia necessaria, tutti i membri dell’unita’ saranno in grado di metterci le mani sia come per lo sviluppo che per la manutenzione.

L’idea ci piace e sembra, in linea teorica, funzionare correttamente. L’unico drawback che stiamo vedendo e’ il fatto che con il tempo potrebbero crearsi dei silos isolati che non comunicano tra loro essendo di fatto piccole aziende separate. Per far fronte a questo ipotetico problema abbiamo pensato di predisporre un programma di rotazione delle persone: una volta ogni tanto (stiamo ancora cercando di capire qual e’ l’intervallo di tempo giusto) una persona si sposta da una unita’ ad un’altra in modo che nel giro di 12-18 mesi tutti siano in un nuovo team.

Questo e’ l’ennesimo esperimento che stiamo conducendo per provare a diventare ancora migliori di quanto siamo oggi.