Ho visto molte aziende che una volta erano solite seguire il vecchio processo a cascata affermano di essere passate alla mischia e di fare ora uno sviluppo agile. Ma il loro processo di sviluppo del software non differisce molto da quello che era:
- Marketing / vendite creano un'idea per una nuova funzione
- Passano le loro idee e i loro requisiti a un analista di business che collabora con loro per creare un piano di implementazione dettagliato
- L'analista trasmette le specifiche completate al responsabile del team di sviluppo
- Il responsabile sviluppo collabora con l'analista e marketing / vendite per chiarire i requisiti e i dettagli di implementazione
- Il responsabile sviluppo suddivide l'attività in parti e pianifica che vengano eseguite in un determinato sprint di breve durata (di solito tra 1 settimana e 1 mese di lunghezza)
- Quando inizia lo sprint, agli sviluppatori vengono assegnate singole attività
- Se necessario, gli sviluppatori comunicano con analisti / marketing per chiarire i requisiti (se a questo punto i requisiti cambiano a tal punto che diventa impossibile completare la funzionalità all'interno dello sprint corrente, vengono rimossi dallo sprint e restituiti all'analista per chiarimento)
- Quando gli sviluppatori hanno terminato tutte le attività, un candidato alla release viene assemblato e passato al team QA
- I tester vengono assegnati per testare le singole attività
- Alla fine dello sprint, il candidato alla versione approvata dal QA viene pubblicato nell'ambiente di produzione
- Dopo la pubblicazione di marketing / vendite, dai un'occhiata a come sono state implementate le funzionalità richieste e, se necessario, hai presentato una richiesta di miglioramento che è passata di nuovo all'analista, quindi allo sviluppatore, ecc.
Formalmente, questo approccio non sembra contraddire nessun punto agile del manifesto: il team di sviluppo comunica costantemente con i clienti (marketing / vendite) per chiarire i loro bisogni, minimizzano i rischi di spedire il prodotto sbagliato rendendo le attività piccole e ottenere un feedback in anticipo (alla fine di ogni sprint), si concentrano sul fornire valore invece di seguire termini di contratto solidi.
Eppure, in qualche modo questo approccio sembra strano. Tutti i tutorial agile / scrum suggeriscono che devono essere apportate molte altre modifiche per essere "completamente agili": rendere i team interfunzionali, eliminare i severi ruoli tradizionali manager / dev / QA, unire fasi separate di analisi-sviluppo-test-implementazione un flusso di lavoro comune, ecc.
Le mie domande sono:
- L'approccio allo sviluppo descritto sopra non contraddice affatto i punti agili del manifesto? Le aziende lo utilizzano nel definirsi "agili"?
- Quali vantaggi offre "piena agilità / mischia" rispetto a questo approccio?