La formula ignorata

Ripensando all’incontro che ho avuto con il responsabile tecnico dell’azienda di software con cui collaboro che mi ha detto la ormai famosa frase: “la direzione è scontenta perchè la pianificazione temporale dei progetti non viene mai rispettata”. Frase già sentita decine se non centinaia di volte, mi sono venute in mente automaticamente le seguenti considerazioni:

 

punto 1:

 

Per la sua natura un nuovo progetto software è rappresentato da queste due condizioni:

  • la conoscenza del problema da risolvere
  • la conoscenza degli strumenti di sviluppo

 

Nei nuovi progetti capita sempre che una di queste due condizioni sia ignota, o parzialmente ignota. Quando lo sono entrambi sono guai.

Nel caso siano entrambi conosciuti allora siamo nel campo della manutenzione e non di un nuovo progetto.

 

La pianificazione di un progetto software, sia nuovo che di manutenzione, è regolata dalla seguente formula:

 

punto 2:

 

     F * Q                                                      F * Q

T = ------  che può essere scritta anche così  R = ------

         R                                                           T

 

T = tempo

F = funzionalità implementate

Q = qualità del software

R = risorse

 

In parole povere significa che se vuoi dimezzare il tempo devi raddoppiare le risorse o dimezzare le funzionalità.

 

Nel caso di un progetto di software puro, dove non ci sono parti hardware, le risorse sono corrispondenti al costo. Infatti conoscendo il costo orario delle risorse e conoscendo il tempo si può avere direttamente il costo del progetto.

 

C = T * R

 

Da questo si deduce che dimezzando il tempo e raddoppiando le risorse il costo del progetto rimane lo stesso. L’unico modo per modificare il costo del progetto è agire sulle funzionalità o sulla qualità.

 

Adesso veniamo al problema. La pianificazione.

Quando si pensa ad un nuovo progetto viene immediatamente chiesto quali sono i “tempi e costi”, dai quali si protrebbe rilevare direttamente le risorse. Dalla formula (punto 2) si deduce che se conoscessimo F (dato che Q lo determiniamo noi) potremmo rispondere esattamente alla domanda.

Come facciamo a conoscere F? Con una analisi di dettaglio rispondereste voi.

Purtroppo come abbiamo ampiamente visto nel corso di questi anni la metologia, che fornirebbe un’analisi di dettaglio preventiva (e di conseguenza F) detta waterfall (a cascata), non funziona. Perchè non funziona? Per l’esistenza delle condizioni del punto1.

Le uniche metodologie che hanno una possibilità di successo sono quelle dette agili o a spirale o in decine di altri modi (http://www.agilemovement.it). Queste metodologie non permettono di rispondere alla domanda famosa, “tempi e costi”, semplicemente perchè non è possibile rispondere.

Permettono però di tenere sotto controllo il processo di sviluppo, evidenziando eventuali problemi in una fase in cui è relativamente semplice porvi rimedio.

Permettono di migliorare la stima dei tempi (e di conseguenza dei costi) via via che il progetto procede.

Ma soprattutto permettono di tenere sotto controllo l’avanzamento del progetto anche da parte del management dell’azienda eliminando (o almento riducendo drasticamente) la sensazione che “tutti i progetti non rispettano i tempi previsti”.

 

Non entro nel dettaglio del perchè con l’adozione di queste metodologie si raggiunge questo risultato, il discorso sarebbe troppo lungo.

Chi fosse interessato può consultare i moltissimi libri sull’argomento, fra tutti segnalo:

 

  • Agile Project Management with Scrum di Ken Schwaber
  • Agile Software Development di Alistair Cockburn
  • Agile Estimating and Planning di Mike Cohn

 

Ho scritto queste considerazioni abbastanza di getto, probabilmente non sono molto chiare, gradirei comunque avere i vostri commenti.

posted @ giovedì 2 marzo 2006 15:37

Print

Comments on this entry:

# re: La formula ignorata

Left by Lorenzo Barbieri at 02/03/2006 16:11
Gravatar
Concordo su tutta la linea...

# re: La formula ignorata

Left by Lorenzo Barbieri at 02/03/2006 16:12
Gravatar
X Omar...
assolutamente no... anzi... ne è quasi la nemesi... :-)

# re: La formula ignorata

Left by Alessandro at 02/03/2006 16:50
Gravatar
Michele:
Ovviamente non si parla di iniziare un lavoro senza sapere cosa e come fare. Le metodologie agili, e in particolare SCRUM che seguo, prevedono una prima fase di stima. Anzi per le criticità che possono venir individuate consiglia la preparazione di un prototipo (non stiamo parlando di progetti che durano un mese ma di roba molto più consistente).
Quello che volevo dire è che non è possibile, con nessuna metodologia, stimare esattamente i tempi e i costi di un progetto senza neanche aver scritto una riga di codice. E qui sorge il problema rilevato giustamente da Roberto. Ben difficilmente un cliente che non ci conosce benissimo ci affiderà un progetto senza sapere il costo (e possibilmente anche il tempo) a cui andrà in contro.
Sono consapevole di questo problema (non lavoro mica sullla luna), però non ho una soluzione. Almeno non i generale.

Grazie a tutti del feedback.

# re: La formula ignorata

Left by Davide Cuppone at 02/03/2006 17:02
Gravatar
bella la formula, ma non sono del tutto d'accordo con la "R" a denominatore, nel senso che bisognerebbe introdurre un fattore di "saturazione", faccio un esempio: passando da 1 a 2 risorse sicuramente dimezzo i tempi, ma quando passo da 4 ad 8 risorse non dimezzo il tempo perchè le necessarie e più che utili interazioni tra gli sviluppatori portano via del tempo allo sviluppo vero e proprio...

# re: La formula ignorata

Left by Stefano Ottaviani at 02/03/2006 17:02
Gravatar
Sinceramente concordo molto più con la conclusione dell'articolo sulle metodologie agili (considerando tutte le giuste precisazioni fatte da Roberto Messora che ne limitano l'adozione finchè non ci sarà un cambio di mentalità, o di formazione, da parte sia del cliente, sia, spesso, degli stessi capi-commessa e commerciali della software-house), che non con la prima parte, riguardante la formula che semplifica, IMHO, un po' troppo il tutto, tralasciando una marea di variabili sulle quali si potrebbe discutere per ore, e che credo pesino molto sui tempi dello sviluppo.

Per fare un esempio, dalla formula, se ho ben capito, basterebbe aumentare il numero di sviluppatori (o cmq di altre figure che seguono il progetto) per terminare entro i tempi necessari...mentre credo che una componente fondamentale sia la qualità delle risorse (cioè il livello di formazione / esperienza / volontà che hanno)...il discorso così deterministico della formula può andar bene al più per degli operai che metti in una macchina, sai che fanno tot pezzi all'ora...e alla fine della giornata sai quanti pezzi hanno fatto.
E' vero che hai introdotto anche una variabile riguardo la qualità del software, ma sicuramente degli sviluppatori esperti sapranno dare una maggiore qualità al software in tutte le varie forme (sicurezza, performance, ...) in meno tempo rispetto ad altri meno esperti (che magari, per mancanza di conoscenze e volontà di apprendimento, certe cose non riuscirebbero mai a farle).

Di altre variabili ce ne sarebbero tantissime, ognuno ne potrebbe individuare basandosi sulle proprie esperienze (a volte anche la fortuna di aver letto un qualcosa da qualche parte che ci aiuti a risolvere il problema potrebbe farci risparmiare molto tempo o di chiedere aiuto a consulenti esterni)...
Comments have been closed on this topic.