Questa pagina è ricavata da una mail di Gabriele sulla mailing list. Mi pare così ben scritta che merita di essere messa in evidenza ed indicizzata da Google :)
-- Matteo
Il discorso e' molto semplice, chi vede/prova per la prima volta le pratiche di programmazione del mondo agile percepisce un senso di lentezza e tira subito le sue conclusioni: "Magari in un mondo perfetto, ma il mondo reale e' fatto di consegne, scadenze e contratti, non abbiamo il tempo per queste cose!"
Prima di tutto la sensazione di lentezza e' fisiologica, in quanto chi per la prima volta applica una tecnica, prova uno strumento, e' normale che si senta spaesato, goffo e di conseguenza percepisce un peggioramento rispetto all'utilizzo degli strumenti abituali
Consideriamo anche il fatto che le pratiche del mondo agile richiedono impegno, esercizio e disciplina, mentre l'approccio al codice del programmatore medio e' fondamentalmente istintivo (*); e questo accresce la sensazione di disagio iniziale.
Il punto centrale del discorso e' proprio questo: utilizzando le pratiche XP (nella fattispecie TDD, ma il discorso vale in generale) la velocita' dipende dalle capacita' degli sviluppatori.
Le tecniche di programmazione istintiva (cut&paste, code&fix, ecc...) danno all'inizio del progetto una falsa sensazione di velocità. Perché falsa? Perché:
Cosa succede invece con le pratiche agili?
(*) La prova di questo fatto e' empirica, pur non essendoci una base di formazione comune le cattive pratiche di programmazione si ritrovano uguali nella maggior parte dei programmatori lasciati all'autoformazione
(**) Nota, nella mia carriera non ho mai visto una progetto riscritto da zero con una qualita' di codice nettamente superiore al progetto precedente, se va bene si riottiene lo stesso prodotto, spesso se ne ottiene uno di qualita' inferiore. Statisticamente i progetti di riscrittura di codice funzionante falliscono nel 80% dei casi
Aggiornamento -- questo post di Uncle Bob ci dà ragione
Aggiornamento -- non ricordo da chi ho sentito dire che se vai a 100 all'ora in cinquecento, sembra di andare fortissimo, perché trema tutto e sembra che la macchina vada a pezzi! Ma se vai a 200 all'ora in Ferrari, sembra di andare piano. Inutile spiegare che fare code&fix&cut&paste è come andare in 500.