Perché la gestione dei programmi è importante nell'open source
Man mano che la tua comunità open source cresce o la tua tecnologia diventa più complessa, un program manager esperto coordinerà team e persone con intenzione.
Tutti si occupano della gestione dei programmi. Alcuni semplicemente lo fanno male.
Ho usato quella battuta per ridere all'inizio dei discorsi, ma è la verità. La gestione del programma è, fondamentalmente, l'atto di coordinare le interfacce tra i team per produrre qualcosa di valore. Nei progetti open source, il "qualcosa di valore" è generalmente il software prodotto dalla comunità. La maggior parte delle comunità open source crea software e quasi nessuna di esse ha un program manager formale. Allora perché avere un program manager?
La differenza sta nel gestire lo sviluppo del software intenzionalmente invece che per sbaglio. Più piccola è la comunità, più facile è autocoordinarsi. La necessità di un coordinamento intenzionale aumenta man mano che la comunità cresce o il software diventa più complesso.
In The Mythical Man Month, Fred Brooks ha osservato che il numero di canali di comunicazione aumenta notevolmente più velocemente del numero di persone che lavorano su un progetto. Un program manager può contribuire a semplificare il sovraccarico della comunicazione fungendo da canale centralizzato per le informazioni. Aggrappandosi alle mailing list e ai canali di chat, il program manager vede cosa sta succedendo nel progetto e lo comunica ampiamente alla comunità e al pubblico. In questo modo, chiunque abbia bisogno di conoscere i dettagli di alto livello può guardare il riepilogo del direttore del programma invece di prestare attenzione a ogni singolo canale.
Un buon program manager funge anche da guida nello sviluppo e nel miglioramento dei processi. Pensa ai processi come a dei sentieri. Si sviluppano organicamente nel tempo man mano che le persone trovano il percorso migliore da un luogo all'altro. Un sentiero ben battuto rende il viaggio più veloce e più prevedibile. Ma se ognuno ha le proprie varianti sul percorso, il sentiero non sarà ben battuto. Il compito del program manager non è quello di tracciare una strada e dire: "Questa è la strada che tutti devono seguire!" Il program manager, invece, cerca i luoghi in cui i percorsi individuali sono simili e aiuta la comunità a trovare un percorso ottimale da condividere. Quindi un program manager non dice: "Questo è il processo che dobbiamo seguire per sviluppare il nostro software". Ciò non funzionerebbe bene in un progetto open source. Invece, il program manager aiuta a definire un processo ripetibile e prevedibile basato su ciò che la comunità sta già facendo.
Molte attività toccano la gestione del programma, anche se sono gestite principalmente da altre funzioni della comunità. Gli esempi includono lo sviluppo della pianificazione, la pianificazione delle funzionalità, la valutazione dei bug, le decisioni sul rilascio e altro ancora. Con una gamma così ampia di competenze, potrebbe essere difficile trovare una persona che possa essere brava in tutte queste. E anche se trovassi una persona simile, potrebbe non avere abbastanza tempo da dedicare a fare tutto. Va bene dividere il lavoro tra diversi contributori purché ognuno comprenda chiaramente le proprie responsabilità.
In definitiva, il compito del program manager è quello di aiutare la comunità a evitare sorprese. Lo fanno comunicando lo stato tra i team e assicurandosi che tutti sappiano cosa è necessario, e quando, per produrre un'altra grande release. Per necessità, lo stai già facendo, quindi potresti anche farlo apposta.
Questo articolo è basato sul libro dell'autore, Program Management for Open Source Projects.