Ultimamente ho riflettuto molto su come costruire un team di sviluppo snello. In definitiva, mi piacerebbe aprire la mia piccola software house con un piccolo numero di persone che la pensano allo stesso modo. L'obiettivo non sarà quello di diventare ricchi, ma piuttosto di avere un ambiente di lavoro salutare.
Finora, sto definendo una squadra snella come la seguente:
- Piccolo;
- Auto-organizzazione;
- Tutti i membri devono avere in mente il QA;
- I membri devono essere in grado di eseguire più ruoli
L'ultimo punto è dove sono un po 'preoccupato perché, come dice il mantra ...
Developers make bad testers.
Anche se capisco che, spesso, gli sviluppatori sono "troppo vicini" al loro codice o al codice del loro collega per effettuare valutazioni di qualità di alto livello, non sono convinto che siano di fatto cattivi tester. Al contrario, sono dell'opinione che le qualità di un buon sviluppatore si sovrappongono notevolmente alle qualità di un buon tester.
Supponendo che sia corretto, ho pensato a diversi modi per aggirare il problema del dev / tester e credo di aver trovato un modello praticabile.
Il mio modello richiede:
- Una piccola software house con 2+ progetti
- Un approccio Agile (iterativo) allo sviluppo e alla consegna
- 1 team per progetto
- Tutti i membri del team saranno sviluppatori software
- La descrizione del tuo lavoro indicherà chiaramente Sviluppo , Garanzia della qualità , Test e Consegna come responsabilità
Se tutte queste precondizioni sono state soddisfatte, i progetti possono essere organizzati nel modo seguente (questo esempio si riferirà a due progetti, A e B ):
- Ogni membro del team si alternerà tra il ruolo di sviluppatore e il ruolo di testatore
- Se un membro del team è uno sviluppatore sul progetto A , sarà un tester sul progetto B
- I membri lavoreranno su un solo progetto alla volta, e quindi dovrebbero agire come o un Dev o un tester.
- Un Ciclo di ruolo consiste di 3 iterazioni come Dev e 2 iterazione come Tester (ancora, su due progetti diversi)
- I team di progetto avrebbero sempre 3 sviluppatori e 2 tester.
- I cicli dei ruoli dei membri dovrebbero essere sfasati di 1 iterazione.
- Questo riduce al minimo la brusca variazione delle squadre. Per ogni iterazione, 2 Devs e 1 Tester rimarranno gli stessi della precedente iterazione.
Considerato quanto sopra, vedo i seguenti pro e contro:
Pro
- Distribuisce la conoscenza del progetto in tutta l'azienda.
- Assicura che i membri del team non testino il codice che hanno aiutato a scrivere.
- I cicli di ruolo fuori fase indicano che nessun progetto ha mai un interruttore membro al 100%.
- I ruoli alternativi interrompono la monotonia di progetti noiosi.
Contro
- Le iterazioni di entrambi i progetti sono strettamente accoppiate. Se un progetto dovesse annullare un'iterazione a metà e ricominciare, allora i due progetti non sarebbero sincronizzati. Ciò renderebbe difficile la gestione del ciclo dei ruoli.
- Cerni sull'assunzione Gli sviluppatori aprono il lavoro anche come tester.
Ho ricevuto recensioni contrastanti quando discuto questo approccio con amici e colleghi. Alcuni credono che pochi sviluppatori vorranno mai alternare ruoli come questo, mentre altri mi dicono che personalmente mi piacerebbe provarlo.
Quindi la mia domanda è: Un modello del genere potrebbe funzionare nella pratica? In caso contrario, potrebbe essere modificato in un modello funzionante?
Nota: Per brevità mi sono concentrato solo sui ruoli Dev e Tester. Espanderò altri ruoli se necessario.