Credo nel respingere i cattivi requisiti. Ma credo anche che quando hai dato il meglio per spiegare perché sono cattivi e li vogliono ancora, allora sei d'accordo e fai il tuo lavoro.
Ad esempio, ho avuto persone che desiderano requisiti che si escludono a vicenda da qualcosa che l'applicazione già fa. Se lo faccio, allora questo sarà garantito al 100%. Quindi rispondo all'obbligo e dico loro che questo infrangerà questa regola di altri affari che abbiamo già in essere e vogliono cambiare anche questa regola? Spesso il piccolo gruppo che presenta una particolare esigenza non ha accesso a un'immagine più ampia di ciò che il resto dell'applicazione può fare. La maggior parte delle volte, quando ho inviato uno di questi documenti, il cliente ha capito che la regola iniziale era più critica e ha deciso che il cambiamento che desideravano non valeva la pena. Quando hanno deciso di fare il cambiamento lo hanno fatto dopo aver consultato le persone che hanno spinto il requisito iniziale.
A volte basta chiedere chiarimenti per far vedere loro che il problema non è così semplice come pensavano. A volte vuoi chiedere perché vogliono qualcosa e venire al bisogno reale che sta guidando il cambiamento. Una volta compreso, è spesso più semplice vedere una soluzione alternativa che funziona per te come sviluppatore e soddisfa le loro esigenze. Se riesci a presentare quella soluzione in termini di come soddisferà meglio le loro necessità rispetto al suggerimento originale, hai notevolmente migliorato le tue possibilità di accettare la tua modifica.
A volte, quando un cambiamento sta per creare il caos a un livello base nella progettazione, basta dare loro la nuova stima delle ore che il cambiamento richiederà è sufficiente per disattivarlo. Se si combina questo con una valutazione del rischio che indica quale funzionalità critica si potrebbe introdurre in nuovi bug con il dire che ci vorranno 6 settimane di sforzi dedicati da parte di 3 persone, improvvisamente non è più così importante.
Ma a volte dici loro che questa non è una buona idea e perché continuano a dire "Peccato che ne abbiamo bisogno". Ne vinci un po 'e ne perdi un po', a volte le esigenze aziendali sono realmente cambiate e l'applicazione deve soddisfarle. Una volta che la decisione è stata finalizzata, non è più il momento di mettere in discussione ciò che stai facendo e il tempo di continuare a farlo. Se hai documentato le tue obiezioni, allora personalmente dovresti trovarti in un buon posto quando supera il budget e causa nuovi e più eccitanti bug. E potrebbero anche essere più disposti ad ascoltarti la prossima volta quando avrai accumulato un record di essere nel giusto su questo genere di cose.
La chiave per vincere molte di queste discussioni (nessuno le vince tutte) è il primo a costruire un track record per sapere di cosa stai parlando. Quindi invia un documento scritto che indica quali sono le tue preoccupazioni (molti manager sono avversi al rischio, sono più propensi a non volere che qualcuno abbia un documento che gli torni in errore, quindi prestano più attenzione a ciò che scrivi) e infine per assicurarsi che capiscano tutti i costi (non solo le ore, ma i rischi per la sicurezza, l'introduzione di nuovi bug, le scadenze mancanti, ecc.) di apportare le modifiche. Il cambiamento non è gratuito e devono capirlo. La prossima chiave è fare questo come un adulto e non come un bambino che piagnucola ("ma non voglio usarlo ... perché non mi piace"). Esegui un business case per non farlo e otterrai molto più lontano nel respingere un brutto requisito.