Nel progetto che guido, ho suddiviso i compiti e ho utilizzato un ciclo di sviluppo a spirale.
Le attività erano piccole in modo che ogni sviluppatore potesse avere un senso di realizzazione.
Le attività sono state ordinate in pietre miliari. Ogni pietra miliare per mostrare qualcosa di tangibile, ad esempio, ottenere una stampa "Hello World" su un dispositivo incorporato (questo è stato utilizzato per far funzionare l'ambiente di sviluppo). Il prossimo traguardo sarebbe un sistema di comando tramite una porta di debug. Il terzo traguardo potrebbe essere una funzionalità minima (o un test del dispositivo hardware).
Le pietre miliari sarebbero i punti di controllo del progetto. Potremmo utilizzare le pietre miliari per mostrare alle parti interessate i progressi che stavamo facendo. Il modello di sviluppo a spirale ci ha permesso di adattarci ai requisiti di cambiamento o sviluppo (in pratica, l'unica garanzia è che i requisiti cambierebbero).
Questo ha dato agli sviluppatori un senso di responsabilizzazione e responsabilità. Se il compito era troppo per loro da gestire, erano o allenati da un mentore o il compito era diviso in più parti (potevano anche scegliere un compito diverso, forse più semplice).
Quindi, per una data pietra miliare, gli sviluppatori hanno scelto i compiti che volevano.
Dopo che il prodotto è maturato, si è sviluppato un database di difetti. I difetti sono stati assegnati agli sviluppatori in base alla priorità del difetto, all'area di competenza o per fornire allo sviluppatore la conoscenza in un'area diversa del codice.
Abbiamo molti progetti, quindi alcuni sviluppatori sono passati a compiti diversi dopo circa 2 anni, per fare qualcosa di diverso.
Organizza un incontro con ogni sviluppatore. Scopri quali sono i loro interessi.
Suddividi i progetti in piccole attività.
Consenti agli sviluppatori di scegliere le attività, in base ai loro interessi (non necessariamente alla loro esperienza).
Preparati a perdere sviluppatori a causa dell'attrito, poiché questo è normale.