I bravi programmatori sanno cosa scrivere.I migliori sanno cosa riscrivere.
I principi su cui si basa una metodologia Agile sono
solo quattro:
- le persone e le interazioni sono più importanti dei processi e degli strumenti (ossia le relazioni e la comunicazione tra gli attori di un progetto software sono la miglior risorsa del progetto);
- è più importante avere software funzionante che documentazione (bisogna rilasciare nuove versioni del software ad intervalli frequenti, e bisogna mantenere il codice semplice e avanzato tecnicamente, riducendo la documentazione al minimo indispensabile, ma funzionale);
- bisogna collaborare con i clienti oltre che rispettare il contratto (la collaborazione diretta offre risultati migliori del limitarsi ai soli rapporti contrattuali);
- bisogna essere pronti a rispondere ai cambiamenti oltre che aderire alla pianificazione (quindi il team di sviluppo dovrebbe essere pronto, in ogni momento, a modificare le priorità di lavoro nel rispetto dell’obiettivo finale).
Se l’obiettivo delle metodologie agili è concentrarsi sulla programmazione senza dedicarsi alle attività collaterali, allora queste ultime possono essere eliminate o automatizzate.
La seconda soluzione è migliore perché si può, ad esempio, eliminare la documentazione aumentando il tempo dedicato al testing, ma non si possono eliminare entrambe; quindi si sceglie che strada si vuole percorrere e si fa in modo di utilizzare strumenti per automatizzare il maggior numero possibile di attività collaterali.
Il coinvolgimento del cliente è qui indicato singolarmente perché ci sono differenti gradi di coinvolgimento possibili.Ad esempio in Extreme Programming il coinvolgimento è totale, il cliente partecipa persino alle riunioni settimanali dei programmatori.
In altri casi, il cliente è coinvolto in una prima fase di progettazione e poi non più.
In altri ancora il cliente partecipa indirettamente e viene usato come tester della versione rilasciata.
Effettuare rilasci frequenti di versioni intermedie del software permette di ottenere più risultati contemporaneamente.Si ricomincia l’iterazione avendo già a disposizione un blocco di codice funzionante in tutti i suoi aspetti, si offre al cliente “qualcosa con cui lavorare“.
Si usa il cliente come tester visto che sarà poi lui ad utilizzerà il software e riscontrerà eventuali anomalie. Si ottengono dal cliente informazioni più precise sui requisiti che probabilmente non sarebbe riuscito ad esprimere senza avere a disposizione utilità e carenze del progetto.