Indice
Avere un approccio proattivo nella scrittura di un contratto di sviluppo Agile (ma il discorso vale per qualsiasi contratto di impresa) significa agire su più livelli in modo da permettere alle parti di avere un rapporto lavorativo soddisfacente.
Il primo livello: promuovere il raggiungimento dell’obiettivo e prevenire possibili problemi
Prima di scrivere un contratto è fondamentale avere chiari gli obiettivi che fornitore e cliente intendono raggiungere. L’ obiettivo non necessariamente è soltanto quello di conseguire un profitto economico o di avere tra le mani un software funzionante.
Accanto poi all’obiettivo primario è necessario conoscere le aspettative di fornitore e cliente, i loro interessi anche secondari, le loro preoccupazioni o i loro dubbi sia rispetto al processo di sviluppo del software che verso l’altra parte.
È anche su questo che si basa la collaborazione tra le due parti, che deve essere incentivata secondo uno dei principi cardine del Manifesto Agile.
La collaborazione presuppone una agevole comunicazione tra fornitore e cliente che deve essere favorita non solo prima della firma del contratto ma anche dopo, prevedendo veloci e semplici processi e modalità grazie ai quali le parti possono trasmettere informazioni l’una all’altra.
Ad ogni modo, obiettivi, interessi e preoccupazioni devono essere conosciuti da entrambe le parti del rapporto per poter condurre una negoziazione profittevole per entrambe e, in definitiva, per scrivere le clausole del contratto in modo da prevenire possibili problemi ed evitare il fallimento della loro relazione.
Esempio
Una software house ha proposto al cliente un prezzo elevato, in linea con il suo posizionamento. Tuttavia la software house ha più interesse a farsi conoscere nel nuovo settore in cui opera il cliente che a conseguire un elevato profitto economico. Dall’altro lato il cliente ritiene eccessivo il prezzo proposto dalla software house. Come allineare questi differenti interessi?
Le parti possono negoziare le clausole relative al metodo e ai tempi di pagamento insieme a quelle relative alla titolarità del codice sorgente o relative alla garanzia, in modo da raggiungere una soluzione che soddisfi entrambe e allinei i loro interessi.
Essere chiari nell’assegnare i compiti, allocare i rischi, attribuire le responsabilità
I contratti Agile possono promuovere una relazione soddisfacente se vengono definiti con grande chiarezza i ruoli di ciascuna parte ed i compiti che sono ad essa assegnati. Ad esempio, in caso di Scrum: cosa è tenuto a fare il Product owner? Cosa il cliente? Qual è il rapporto tra Product owner e team di sviluppo?
Alla stessa maniera è necessario delineare con precisione le responsabilità che incombono su ciascuna della parti del contratto. Per garantire una equa ripartizione delle responsabilità è possibile fare riferimento ai fattori, all’interno del processo di sviluppo, su cui ogni parte è in grado di esercitare il suo controllo.
In ogni caso non devono esserci ambiguità nel processo di sviluppo: leggendo il contratto deve essere subito evidente
- chi è tenuto
- a fare cosa
- entro quanto tempo e
- in quale modo.
E deve essere altrettanto chiaro cosa accade se uno di queste condizioni non è soddisfatta nell’attuazione del rapporto tra fornitore e cliente.