Penso sia vero, in alcuni ambienti Agile è usato come una scusa per nessuna disciplina. Il vero problema è che abbiamo perso di vista il motivo per cui abbiamo una metodologia. Personalmente, ritengo che la metodologia sia una questione architettonica nel senso che l'architettura del sistema dovrebbe rispondere agli attributi di qualità non funzionali, la metodologia dovrebbe affrontare alcuni di quegli stessi attributi (manutenibilità, produttività di sviluppo, trasferimento di conoscenza, et al.)
La visualizzazione della metodologia come controllo per gli attributi del processo implica un paio di cose: 1) senza metrica non possiamo confrontare l'efficacia di una metodologia rispetto ad un'altra, 2) deve essere presa una decisione attiva su quali attributi sono importanti (consegna time vs code quality vs knowledge transfer).
Senza avere entrambe le metriche e un obiettivo tangibile, abbiamo semplicemente scelto una metodologia come nostra "piuma magica" che se teniamo duro, saremo in grado di fornire software.
Ora i nay-sayers di Agile, XP, Scrum, ecc. parlano della fragilità di quella particolare categoria di metodologie. L'argomento è: perché usare una metodologia che può essere sabotata da un individuo privo della disciplina per seguire tutte le regole? La domanda è valida; tuttavia, questo è il sintomo, non la causa. Se una serie precisa e significativa (che è la parte difficile) delle metriche di processo sono definite, testate e un feedback tempestivo, penso che scopriremo che la particolare metodologia ha poco a che fare con il successo. (Aneddoticamente ho visto progetti di successo che utilizzano una miriade di metodologie e il doppio di fallimenti nell'usare le stesse metodologie)
Quindi quali sono le metriche? Essi variano da progetto a progetto, da squadra a squadra e di volta in volta. Utile per quando il programma di consegna è importante, quello che ho usato personalmente è la capacità e la qualità di stima. La maggior parte degli sviluppatori può stimare con precisione compiti che durano una settimana o meno. Quindi un approccio è quello di dividere il progetto in compiti di uno sviluppatore lungo una settimana e tracciare chi ha fatto la stima. Mentre il progetto va avanti, possono cambiare le loro stime. Dopo che un'attività è stata completata, se è stata disattivata di oltre il 10% (1/2 al giorno), consideriamo questo come un errore: identifichiamo il motivo per cui la stima è stata disattivata (ovvero una tabella di database non è stata considerata), identifica il azione correttiva (cioè coinvolgere il DBA nella stima), e poi andare avanti. Usando queste informazioni possiamo creare metriche come # di bug di stima a settimana, # di bug per sviluppatore, # di bug per KLOC, # di bug per sviluppatore-KLOC, ecc. Pubblicare questi numeri sul wiki del team fornisce una seria pressione sociale e dal punto di vista gestionale, dopo un paio di settimane, è possibile generare un modello predittivo delle successive settimane di sviluppo.
Quindi cosa? Ecco quando arrivano le metodologie - se si dispone di un modello predittivo che non riesce a soddisfare le qualità del processo, è possibile scegliere di aggiungere o rimuovere alcuni aspetti della metodologia e vedere come influisce sul modello. Certo, nessuno vuole giocare con un processo di sviluppo per paura di fallire, ma stiamo già fallendo a un ritmo costantemente alto e prevedibile. Effettuando modifiche individuali e misurando il risultato, potresti scoprire che Agile è la metodologia perfetta per la tua squadra, ma potresti trovare facilmente RUP, cascata o solo un miscuglio di best practice per essere l'ideale.
Quindi il mio suggerimento è smettere di preoccuparsi di ciò che chiamiamo il processo, mettere in atto controlli rilevanti per i nostri obiettivi del processo di sviluppo e sperimentare diverse tecniche per migliorare tale processo.