Credo nel respingere i cattivi requisiti. Ma credo anche che quando hai dato il massimo per spiegare perché sono cattivi e li vogliono ancora, allora accetti 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, garantito al 100%, si romperà. Quindi rispedisco il requisito e dico loro che questo infrange questa altra regola aziendale che abbiamo già in atto e vogliono cambiare anche questa regola? Spesso il piccolo gruppo che presenta un requisito particolare non ha accesso al quadro più ampio di ciò che il resto dell'applicazione potrebbe fare. Il più delle volte quando ne ho inviato uno di questi, il cliente si è reso conto che la regola iniziale era più critica e ha deciso che il cambiamento che desideravano non valeva la pena. Quando hanno deciso di apportare il cambiamento, lo hanno fatto dopo aver consultato le persone che hanno spinto il requisito iniziale.
A volte basta fare domande di chiarimento per far capire loro che il problema non è così semplice come pensavano. A volte vuoi chiedere perché vogliono qualcosa e venire alla reale necessità che sta guidando il cambiamento. Una volta che lo capisci, è spesso più facile 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 far accettare il tuo cambiamento.
A volte, quando un cambiamento creerà il caos a un livello di base nella progettazione, basta dare loro la nuova stima delle ore che il cambiamento richiederà per spegnerlo. Se lo combini con una valutazione del rischio che evidenzia in quali funzionalità critiche potresti introdurre nuovi bug nel dire loro che ci vorranno 6 settimane di impegno dedicato da parte di 3 persone, improvvisamente non è più così importante.
Ma a volte dici loro che non è una buona idea e perché e continuano a dire "Peccato che ne abbiamo bisogno". Ne vinci un po 'e ne perdi un po' e, a volte, le esigenze aziendali sono davvero cambiate e l'applicazione deve adattarlo. 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 dovresti comunque trovarti personalmente in un buon posto quando supera il budget e causa nuovi e più interessanti bug. E potrebbero anche essere più disposti ad ascoltarti la prossima volta che avrai accumulato un track record di essere proprio su questo tipo di cose.
La chiave per vincere molte di queste discussioni (nessuno le vince tutte) è innanzitutto creare un track record per sapere di cosa stai parlando. Successivamente invia un documento scritto che dichiari ciò che hai (molti manager sono avversi al rischio, è più probabile che non desiderino che qualcuno abbia un documento che lo dimostra in seguito in modo errato, quindi prestano maggiore attenzione a ciò che metti per iscritto) per assicurarsi che comprendano tutti i costi (non solo le ore, ma i rischi per la sicurezza, l'introduzione di nuovi bug, le scadenze mancanti, ecc.) della modifica. Il cambiamento non è gratuito e devono capirlo. La chiave successiva è farlo come un adulto e non come un bambino piagnucoloso ("ma non voglio usarlo ... perché non mi piace"). Crea un caso aziendale per non farlo e otterrai molto di più nel respingere un cattivo requisito.