Ultimamente ho pensato molto a come costruire un team di sviluppo snello. Alla fine, vorrei aprire la mia piccola software house con un piccolo numero di persone affini. L'obiettivo non sarà diventare ricchi, ma piuttosto avere un ambiente di lavoro sano.
Finora, sto definendo una squadra magra come la seguente:
- Piccolo;
- Auto-organizzazione;
- Tutti i membri devono avere in mente il QA;
- I membri devono essere in grado di svolgere più ruoli
L'ultimo punto è dove sono un po 'preoccupato perché, come dice il mantra ...
Gli sviluppatori fanno i tester male.
Anche se capisco che, spesso, gli sviluppatori sono "troppo vicini" al loro codice o al codice del loro collega per effettuare valutazioni di livello superiore della qualità, non sono convinto che siano di fatto dei tester difettosi. Al contrario, sono dell'opinione che le qualità di un buon sviluppatore si sovrappongano molto con le qualità di un buon tester.
Supponendo che questo sia corretto, ho pensato a diversi modi per aggirare il problema dev / tester e credo di aver escogitato un modello praticabile.
Il mio modello richiede:
- Una piccola software house con oltre 2 progetti
- Un approccio agile (iterativo) allo sviluppo e alla consegna
- 1 squadra per progetto
- Tutti i membri del team saranno sviluppatori di software
- La loro descrizione del lavoro indicherà chiaramente lo sviluppo , l' assicurazione della qualità , i test e la consegna come responsabilità
Se tutte queste condizioni sono state soddisfatte, i progetti possono essere organizzati nel modo seguente (questo esempio farà riferimento a due progetti, A e B ):
- Ogni membro del team si alternerà tra il ruolo di sviluppatore e il ruolo di tester
- Se un membro del team è uno sviluppatore nel progetto A , sarà un tester nel progetto B
- I membri lavoreranno solo 1 progetto alla volta, e quindi si prevede di agire come sia un Dev o di un tester.
- Un ciclo di ruoli è composto da 3 iterazioni come Dev e 2 iterazioni come Tester (di nuovo, su due diversi progetti)
- I team di progetto avrebbero sempre 3 sviluppatori e 2 tester.
- I cicli di ruolo dei membri devono essere sfasati di 1 iterazione.
- Ciò riduce al minimo la brusca variazione delle squadre. Per ogni iterazione, 2 Dev e 1 Tester rimarranno gli stessi dell'iterazione precedente.
Considerato quanto sopra, vedo i seguenti pro e contro:
Professionisti
- Distribuisce la conoscenza del progetto in tutta l'azienda.
- Assicura che i membri del team non stiano testando il codice che hanno aiutato a scrivere.
- Cicli di ruolo fuori fase indicano che nessun progetto ha mai uno switch membro al 100%.
- Ruoli alternati spezzano la monotonia di progetti noiosi.
Contro
- Le iterazioni di entrambi i progetti sono strettamente collegate. Se un progetto dovesse annullare una iterazione a metà strada e ricominciare, i due progetti sarebbero fuori sincrono. Ciò renderebbe difficile la gestione del ciclo di ruoli.
- Cerniere sull'assunzione Gli sviluppatori iniziano a lavorare anche come tester.
Ho ricevuto recensioni contrastanti quando ho discusso di questo approccio con amici e colleghi. Alcuni credono che pochi sviluppatori vorrebbero mai alternare ruoli come questo, mentre altri mi dicono che personalmente adorerebbero provarlo.
Quindi la mia domanda è: un tale modello 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ò su altri ruoli se necessario.