La motivazione nei progetti Open Source
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:
- Indie Hackers,
- gruppo Side-projects in LinkedIn,
- subreddit SideProject,
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.