La motivazione nei progetti Open Source

Posted on Feb 19, 2021

Resting è il primo progetto Open Source che ho creato nel mio tempo libero.

Porto avanti questo progetto, tra alti e bassi, da ormai 3 anni: il primo rilascio su Github, e sul marketplace di Firefox, è datato 26 dicembre 2017. Portare avanti un progetto così a lungo non è facilisissimo, tenendo conto che gli si può dedicare pochi scampoli di tempo in coda a tutti gli impegni della vita lavorativa e famigliare.

Se dovessi identificare l’ostacolo più grande che ho affrontato in tutto questo tempo, probabilmente lo identificherei nella perdita della motivazione.

Ecco 4 consigli per tenere la motivazione alta.

Avere una finestra di tempo dedicata

In breve: trova un piccola finestra di tempo giornaliera che puoi dedicare al tuo progetto e difendila a denti stretti.

All’inizio dedicavo a Resting il tempo che potevo senza una precisa pianificazione: poteva essere la mattina prima di lavoro, la sera dopo cena, un momento in pausa pranzo oppure dei momenti il sabato o la domenica. Ci dedicavo quanto riuscivo: una volta mezz’ora, un’altra un paio d’ore. Poteva accadere di lavorarci per tre giorni di fila e poi accantonarlo per settimane. Con questa dedizione altalenante i progressi sono lentissimi e anche la loro percezione é quasi nulla: ti sembra di essere sempre fermo al palo.

Poi ho deciso di provare con un’altra strada: costruire un’abitudine nel lavorare a Resting. Per farlo mi sono ritagliato un piccolo momento giornaliero dedicato. Personalmente lavoro al meglio al mattino, per cui ho puntato la sveglia un po' prima del solito, e mi sono ritagliato 20/30 minuti di tempo dal lunedì al sabato prima dell’inizio degli impegni quotidiani. L’importante é spezzare le proprie attività in pezzi adatti ad essere completati durante una singola finestra di attività (o al più in un paio).

Una ventina o poco più di minuti al giorno possono sembrare pochissimi, ma se investiti con costanza giorno dopo giorno e con la giusta concentrazione (anche per questo motivo è meglio se la finestra di tempo è piccola) danno la percezione di avanzamento, fondamentale per tenere l’entusiasmo alto e  quindi trovando la forza dell’euforia.

Come molte cose nella vita ho scoperto l’importanza di questo momento quando per cause di forza maggiore ho dovuto metterlo da parte per diverso tempo. A quel punto ho provato a portare avanti Resting nei momenti liberi casuali, ma il risultato non é stato per niente lo stesso: il progetto in pratica si é arenato. La conferma definitiva é arrivata quando riorganizzando la mia giornata sono riuscito a trovare un altro momento, anche questo molto piccolo di 20 minuti, ogni giorno. Grazie alla ritrovata abitudine le attività su Resting sono riprese a gonfie vele.  

Confrontarsi con qualcuno

In breve: confrontati con qualcuno e se non puoi, partecipa a una comunità online

Avere una persona con cui confrontarsi, discutere e anche sfogarsi è un altro fattore fondamentale. Il massimo è avere una persona che conosciamo: io sono fortunato e ho un confronto continuo con un mio amico ed ex collega. Giusto per portare un esempio é stato proprio grazie al confronto con lui se sono riuscito a trovare un nuovo spazio fisso da dedicare a Resting.

Per chi non ha la fortuna di avere una persona con cui confrontarsi consiglio di provare ad entrare in qualche community online, lascio qui sotto alcuni riferimenti:

Parlare del progetto

In breve: parla del tuo progetto più che puoi, anche prima di scrivere una sola riga di codice

Probabilmente per come sono fatto questo é stato il passo più difficile, decisamente “fuori dalla mia zona di comfort” e su cui devo ancora migliorare tanto.

Parlare del progetto pubblicamente, facendolo uscire dalla mia testa e dalle quattro mura di casa mi ha aiutato parecchio a mantenere la motivazione alta e devo dire che è anche una buona fonte di ispirazione.  Il solo parlare del progetto ne decreta l’esistenza e lo fa uscire dalla sfera del pensiero. Ne ho parlato con qualche conoscente, mi sono confrontato con il gruppo di Software CraftmanShip della mia città (SocraTeN - grazie ragazzi del supporto continuo!!!), ne ho scritto in qualche comunità online (vedi il punto sopra per alcuni suggerimenti), uso Twitter per dare aggiornamenti su rilasci e aggiornamenti e ovviamente anche questo articolo fa parte di questo processo :).

Rilasci piccoli e costanti

In breve: lavora a togliere il più possibile per rilasciare in modo costante e con un ciclo corto

La regola è semplice: quando si vede il progetto avanzare ed evolvere, l’entusiasmo aumenta.

Per fare questo ho scelto di gestire i rilasci con un chiara strategia:

  • un rilascio che contiene la massimo 1 o 2 nuove funzionalità (a seconda della complessità) da implementare nel modo più veloce possibile accumulando senza remore del “debito tecnico”,
  • un rilascio successivo dedicato ai fix e al refactor delle brutture scritte al primo rilascio.

Mantenere un ciclo di rilascio molto corto permette di:

  • percepire in modo tangibile l’avanzamento del progetto,
  • dimostrare ai propri utenti che il progetto é vivo e in continua evoluzione.

Se la funzionalità è articolata, preferisco lavorare per semplificarla al massimo arrivandone all’essenza e svilupparla così in modo veloce anche se il risultato non sarà completo e ottimale. La mia paura, visto che il tempo dedicato a Resting è una risorsa molto rara, è perdermi nei dettagli, l’attendere che la funzionalità sia completa e perfetta per come la vorrei. Questo atteggiamento però  provoca inevitabilmente una stagnazione nell’avanzamento del progetto che come si è capito è il mio nemico numero uno.