Non si tratta di metodologie, ma di comunicazione con un cliente.
Ho avuto molte situazioni in cui i clienti volevano aggiungere costantemente nuove funzionalità a un progetto non finito e siamo rimasti sorpresi del motivo per cui avrebbe aumentato i costi e i ritardi complessivi. Il contesto e la personalità di questi clienti sono diversi, hanno richiesto approcci diversi, ma potrei provare a isolare alcune linee guida e consigli:
- Assicurati che un cliente abbia accesso alle informazioni generali necessarie per capire perché una modifica di un requisito può avere un impatto sia sui costi che sui ritardi . In altre parole, pubblica alcuni articoli su queste cose, spiegando ciò che una persona non tecnica potrebbe non sapere affatto.
Ad esempio, per la maggior parte delle persone è assolutamente strano che un cambiamento che considerano piccolo possa avere un impatto enorme sul progetto ed essere molto costoso (vedi esempio nella mia domanda ). Se chiedono di fare qualche cambiamento, e ogni volta che gli dici, senza spiegare nulla, che dovrebbero pagare migliaia di dollari quando se lo aspettavano gratis o per qualche dozzina di dollari, probabilmente penserebbero che sei solo rubando i loro soldi. Questo è particolarmente vero dal momento che alcuni programmatori non etici e società di software sviluppano prodotti non gestibili (quindi non puoi chiedere di cambiarli in seguito da un normale sviluppatore), quindi chiedi di pagare troppo per ogni modifica.
- Assicurati che un cliente abbia compreso perché il specifico cambiamento che desidera abbia un impatto su un costo . Per questo, puoi darle i link ai tuoi articoli (vedi il punto precedente), o semplicemente riassumere, in modo non tecnico, ciò che è necessario per apportare una modifica richiesta.
Tali spiegazioni sono anche una buona idea poiché consentono al cliente di comprendere meglio il prodotto e il cambiamento. In alcuni casi, alcuni dei miei clienti finirono col dire che il cambiamento che volevano non era troppo intelligente e che lo avrebbero fatto in altro modo. Puoi anche suggerire cose. È molto apprezzato da alcuni clienti (attenzione: altri lo odiano) e mostra che sai di cosa stai parlando (rispetto al codice scimmia che traduce semplicemente i requisiti in codice, senza pensare troppo ai possibili approcci) .
- Assicurati che un cliente non possa fare quello che vuole, a meno che non sia davvero sicuro. Per alcune persone, l'unico modo è bloccare i requisiti in modo definitivo prima di iniziare con il codice . Altrimenti, è un disastro e il progetto non finirà mai . Per gli altri, è semplicemente una buona idea non vedere mai un progetto non terminato (in generale i miei clienti hanno accesso dal vivo al prodotto non terminato molto presto, quindi possono fare commenti / regolazioni anche in anticipo).
Ad esempio, ho avuto un cliente che, dopo aver inviato i requisiti "finali", ha inviato, in media, dieci messaggi al giorno con dieci modifiche ai requisiti, passando da piccole modifiche ("È possibile modificare la larghezza del bordo della zona centrale in la home page da tre a sei pixel? ") alle modifiche che hanno interessato l'intero progetto (dopo due mesi di sviluppo, una settimana prima del rilascio:" Infine, penso che ASP.NET sia una cattiva idea. Potresti passare a PHP per favore? ").
Quindi per quel cliente , siamo stati costretti a bloccare tutti i requisiti prima di scrivere il codice. Era scritto nel contratto. Nessuna modifica è stata accettata prima del rilascio finale.
Non è stato poi così male, finalmente, dal momento che curiosamente abbiamo permesso di essere molto organizzati: il progetto è stato rilasciato, in base ai vecchi requisiti, e poi, alcuni giorni dopo, abbiamo iniziato la prossima versione da zero con un insieme di requisiti completamente diversi.