Sono sorpreso che tutti pensino che questa sia una buona cosa. Gli autori di Peopleware (che, IMO, è ancora uno dei pochi preziosi software libri di project management in realtà vale la pena di leggere) non sono assolutamente d'accordo. Quasi l'intera parte IV del libro è dedicata proprio a questo problema.
Il team del software è un'unità funzionale incredibilmente importante. I team hanno bisogno di essere jell per diventare veramente produttivi. Ci vuole tempo (un lotto di tempo) per i membri del team per guadagnarsi il rispetto gli uni degli altri, per imparare le reciproche abitudini e peculiarità, punti di forza e punti deboli.
Certamente, per esperienza personale, posso dire che dopo un anno di lavoro con certe persone, ho imparato a ridere di certe cose che prima mi infastidivano, le mie stime come team leader sono molto migliori, e non è troppo difficile da distribuire il lavoro in modo da rendere tutti felici. All'inizio non era così.
Ora potresti dire "Oh, ma non stiamo rompendo l'intera squadra, spostando solo poche persone". Considerate (a) quanto i loro sostituzioni saranno ciecamente improduttivi all'inizio, e (b) quante volte vi troverete o altre squadre che dicono, senza nemmeno pensare, " Mi piaceva molto X " o " Sarebbe stato più facile con Y ancora in giro ", sottilmente e inconsciamente offendendo i nuovi membri e creando scismi all'interno della squadra esistente, seminando persino scontento tra i" vecchi "membri.
Le persone non fanno questo di proposito , ovviamente, ma succede quasi sempre. Le persone lo fanno senza pensare. E se si costringono a non farlo, finiscono per concentrarsi ulteriormente sulla questione, e sono frustrati dal silenzio forzato. Squadre e persino sottogruppi svilupperanno sinergie che si perderanno quando si scopre con la struttura. Gli autori Peopleware lo chiamano una forma di "teamicidio".
Detto questo, anche se la rotazione dei membri del team è una pratica orribile, la rotazione dei team stessi è perfetta. Sebbene le società di software ben gestite debbano avere un concetto di proprietà del prodotto, non è altrettanto fastidioso per un team spostare l'intero team in un progetto diverso, a condizione che il team finisca effettivamente per completare il vecchio progetto o almeno lo porti a un livello di cui sono felici.
Avendo std di team invece di stipendi developer , ottieni tutti gli stessi benefici che ti aspetteresti di ottenere con gli sviluppatori rotanti (documentazione, "impollinazione incrociata", ecc. .) senza nessuno dei brutti effetti collaterali su ogni squadra come unità. A chi non capisce veramente la gestione, può sembrare meno produttivo, ma è certo che la produttività persa dividendo la squadra è assolutamente nana della produttività persa spostando quella squadra in un progetto diverso.
P.S. Nella tua nota in calce dici che il lead tecnologico potrebbe essere la solo persona non da ruotare. Questo è praticamente garantito per rovinare i team entrambi . Il leader tecnologico è un leader, non un manager, deve guadagnarsi il rispetto della squadra e non è semplicemente autorizzato dall'autorità da parte di livelli superiori di gestione. Mettere un intero team sotto la direzione di un nuovo lead con il quale non hanno mai lavorato e che ha molte probabilità di avere idee diverse su architettura, usabilità, organizzazione del codice, stima ... beh, sarà stressante come l'inferno per il protagonista cerca di costruire credibilità e molto improduttivo per i membri del team che iniziano a perdere coesione in assenza del loro vecchio vantaggio. A volte le aziende hanno per farlo, cioè se il lead si licenzia o viene promosso, ma farlo con choice suona pazzo.