Il mio team di 4 sviluppatori esperti lavora su un'applicazione Windows modulare di grandi dimensioni (circa 200 KLoC). Mi sono concentrato sul codebase di base dall'inizio del progetto (3 anni fa) e sono gradualmente passato a una posizione di sviluppo semi-lead, anche se non sono il team manager.
La nostra attuale iterazione è un aggiornamento dell'interfaccia utente ad alta priorità richiesto dalla direzione superiore, che comporta circa 15 modifiche alla base di codice principale. Quando mi è stato chiesto dal direttore, ho stimato che per completare ciascuna delle 15 modifiche ci sarebbero volute meno di quattro ore, per un totale di meno di 7 giorni lavorativi. Mi sono quindi offerto volontario per eseguire il lavoro. Invece, il manager ha deciso di dividere equamente tutte e 15 le attività per tutti e quattro gli sviluppatori.
Nei tre giorni da quando abbiamo iniziato a lavorare, ho osservato due cose:
Gli altri membri del team inesperti hanno completato circa 1 o meno attività ciascuno.
Legge di Brook in azione: ho trascorso circa la metà del mio tempo a fornire assistenza (tentando di istruirli sull'uso dei componenti). Di conseguenza, ho terminato solo 2 compiti da solo, anziché i 5 o 6 previsti.
Mi sono avvicinato al mio manager con la preoccupazione che eravamo in ritardo e ho suggerito di nuovo di completare le attività rimanenti. La mia richiesta è stata gentilmente rifiutata e i motivi dichiarati per dividere il carico in modo uniforme erano duplici:
- Limita il fattore camion / autobus - intensificando gli altri sviluppatori su queste abilità ora, in modo che in futuro qualsiasi lavoro possa essere dato a chiunque, non solo a me.
- Per eliminare un "collo di bottiglia" (me) e svolgere il lavoro più velocemente.
Per essere chiari, non ho problemi con: a) investendo tempo nell'insegnamento, b) persone che toccano il mio codice, o c) sicurezza del lavoro. In effetti, suggerisco regolarmente al team leader di addestrare altri sviluppatori su alcuni aspetti della base di codice principale per ridurre il rischio.
In questa iterazione abbiamo anche una vasta raccolta di correzioni di bug ad alta priorità mirate, quindi sembrerebbe che si potrebbero fare ulteriori progressi se il carico di lavoro fosse ridistribuito.
In Mythical-Man-Month, Brooks 'suggerisce un " Team chirurgico " in cui ogni team è composto da un lead + sub-lead (il manager e io) e alcuni ruoli minori. Sento che stiamo naturalmente cadendo in questa organizzazione, ma il mio manager sta lavorando contro di essa. Sento che il fattore bus è già curato (il manager è ben versato nel codice di base) e che il collo di bottiglia in realtà non esiste (coinvolgere più sviluppatori non renderà il lavoro più veloce). Penso che a questo proposito, un team chirurgico sia una buona cosa.
Questi sono i miei sentimenti, ma non sono un manager esperto, né abbiamo dovuto fare i conti con il fattore bus (knock on wood). Brooks aveva ragione? Hai lavorato in un "team chirurgico" in cui è entrato in gioco il fattore bus? Esistono tecniche migliori per gestire le competenze distributive?
Domande simili: