Warning! This blog's new home now is here.
Di seguito riporto qualche appunto sull'articolo Why Agile Adoption Fails in Some Organizations apparso su InfoQ il 4 Novembre 2009.
L'agile presuppone che l'organizzazione finanzi il team e che lo sviluppo sia un'attività continuativa e considerata come un investimento. In questo contesto si riconosce l'inevitabile inaccuratezza delle stime iniziali e si procede in modo iterativo e incrementale, accumulando esperienza e imparando a prevedere le tempistiche mano a mano che si avanza con lo sviluppo. In un team agile le stime sulle tempistiche hanno scarsa importanza e il team procede a produrre valore in modo continuativo, ma non si sa con precisione a priori quanto tempo ci vorrà per completarlo.
In uno scenario diverso in cui l'organizzazione finanzia separatamente i singoli progetti, che sono visti come un costo, il management richiede delle stime sui tempi e non è disposto a finanziarlo oltre i tempi preventivati. In questo contesto, a differenza del caso precedente, si hanno dei problemi se la stima iniziale non si rivela corretta e il management è costretto a una scelta:
Le principali cause del fallimento nell'adozione di uno stile agile di sviluppo possono essere riassunte nei seguenti punti:
Date queste considerazioni, i progetti a costo fisso sono chiaramente un contesto inadatto nel quale collocare l'Agile. Spesso le aziende che ci provano finiscono per sovrapporre un façade agile su un progetto che in realtà è condotto in stile Waterfall.
In ultima analisi, se l'organizzazione è in grado di finanziare un team di sviluppo in modo continuativo, allora l'agile è un approccio vincente. Se invece i fondi sono allocati per progetto, un approccio più tradizionale è la scelta obbligata.
Di seguito riassumo i contributi espressi nei commenti all'articolo da alcuni lettori:
Perhaps we need to start asking, "how much can we get for $X" rather than stating, "I want all this for $Y. Make that happen." -- Robert Dempsey
Innanzitutto l'approccio agile (iterativo e incrementale) comporta importanti vantaggi per tutte le parti coinvolte (clienti, management, sviluppatori), ed è utile educarle tutte sui suoi vantaggi.
Inoltre, data la natura dell'agile (focus su efficienza e qualità) è applicabile anche in un contesto a costo fisso secondo me. Però qualsiasi progetto a costo fisso comporta un rischio sostenibile solo in questi casi:
La scelta della metodologia di sviluppo va fatta in modo pragmatico a seconda del contesto (progetto, dominio applicativo, cliente, team, ecc), non c'è un approccio universalmente migliore (Silver Bullet).
La scelta va fatta anche in base ai parametri che si vuole ottimizzare: costi, tempi, scope e qualità. E' evidente che il fissare tutti questi parametri a priori è praticamente impossibile, allora occorre trovare la combinazione più conveniente per le parti in causa. Fissando la qualità come un parametro imprescindibile e considerando che costi e tempi sono strettamente connessi, individuo i seguenti casi interessanti:
Tempo | Costo | Scope | Commento |
---|---|---|---|
fisso | fisso | fisso | Praticamente impossibile. |
fisso | fisso | variabile | Sicurezza sui costi ma scope variabile. |
variabile | fisso | fisso | Alto rischio di ROI negativo. |
variabile | variabile | fisso | Scenario ideale per l'applicazione dell'Agile. |
variabile | variabile | variabile | Efficiente con l'Agile. |
Forse dobbiamo cominciare a domandare "quanto posso avere per X$" invece che affermare "voglio tutto questo per X$. Fatelo." --Robert Dempsey
Alla luce di queste considerazioni, a meno che non si tratti di un progetto a requisiti completamente specificati e immutabili, e condotto da un team esperto nel dominio applicativo, conviene adottare un approccio agile negoziando la forma contrattuale più adatta.