Come gestite le mutevoli esigenze? [chiuso]


14

Nel mio lavoro attuale sembra che abbiamo molte modifiche ai requisiti. Siamo un negozio "Agile", quindi capisco che dovremmo adeguarci e cosa no, ma a volte il cambiamento è grande e niente di banale.

La mia domanda è: come si comunica efficacemente il costo del cambiamento? A causa dell'essere agile, se un cambiamento è abbastanza grande, qualcosa verrà abbandonato dallo sprint corrente, ma di solito viene aggiunto solo la prossima volta. Poiché il nostro modello è SaaS, il cliente finale è effettivamente il business stesso e sa che otterrà la funzionalità di taglio n settimane dopo.

Immagino che quello che sto cercando di ottenere sia la rimozione di una funzione che non è davvero nulla da usare per la comunicazione in quanto è stata ritardata di n settimane. Quali altri modi hai per far capire all'azienda il costo di una modifica?


Risposte:


14

@Joe "Siamo un negozio" Agile ", quindi capisco che dovremmo adeguarci e cosa no, ma a volte il cambiamento è grande e niente di banale."

Se il processo non consente di controllare il tasso di variazione dei requisiti, il processo non è agile, ma casuale. Agile non significa "prendere tutto ciò che mi viene incontro".

Per controllare il cambiamento / scorrimento dei requisiti puoi adottare - nel tuo processo - l'idea che un requisito non cambi (un concetto che è al centro di Scrum.) Tratta un cambiamento di requisito come la sostituzione di un vecchio requisito con uno nuovo. Devi avere un backlog di requisiti e devi fare in modo che l'utente scelga quali desidera implementare.

Volevi X e Y in due settimane, ma all'improvviso vuoi Z. Bene, allora posso consegnarti tutti e tre in 4 settimane. Oppure posso dare una coppia (X e Z) o (X e Y) o (Y e Z) in due settimane e consegnare quella rimanente in seguito. Scegliere.

Ecco come negoziare con i clienti. Ecco come comunicare il costo della modifica dei requisiti. Se il tuo gruppo non ha quel potere, non sei in un negozio agile e non c'è niente che tu possa fare al riguardo. Fa schifo, ma è vero.

Nel caso in cui sia possibile negoziare, è necessario tenere traccia (con precisione) del tempo necessario per implementare i requisiti e le modifiche dei requisiti. Cioè, devi raccogliere questi dati da progetti passati e presenti.

Raccogli la stima del tempo originale e il tempo di completamento effettivo (oltre alle risorse come il conteggio degli sviluppatori) per richiesta (o modulo interessato da N richieste). Meglio ancora, stimare la dimensione della richiesta / modifica della richiesta (in termini di righe di codice o punti funzione in progetti e richieste passati).

Supponi di avere una metrica con cui puoi parlare con l'utente. Sai che una nuova richiesta prenderà, diciamo, 1K righe di codice o 10 pagine Web con una media di 5 campi di input ciascuno (50 punti funzione).

Quindi, guardando i dati storici specifici dei tuoi progetti passati (alcuni per righe di codice, alcuni per pagine Web, altri per punti di funzione effettivi), puoi stimare come ciascuno di questi costi sia in termini di tempo di completamento assoluto. Per quelli con dati sufficienti, è anche possibile identificare quei requisiti che tengono traccia di un effettivo conteggio degli sviluppatori.

Quindi lo usi e dici al tuo cliente che sulla base di dati storici; Lei sostiene che i fallimenti del progetto tendono a seguire una distribuzione esponenziale; e poi sei armato con il seguente argomento per il tuo cliente:

Sulla base dei dati dei nostri progetti passati e presenti e delle risorse disponibili, il requisito richiesto verrà soddisfatto

  1. X quantità di tempo per completare con una probabilità di fallimento del 25% (o 75% di successo)

  2. 1,5 * X quantità di tempo per completare con un 5% di errore (o 95% di successo)

  3. 0,5 * X quantità di tempo per completare con un 95% di fallimento (o 5% di successo)

La probabilità di fallimento in funzione della quantità di risorse di tempo in genere va al 95%, 25% e 5% (simile a una distro esponenziale). Trasmetti il ​​messaggio che un determinato importo di base offre una probabilità decente di successo (ma con rischi reali ). 1,5 di questo potrebbe dare quasi una certa possibilità di successo con un rischio minimo, ma molto meno di quello (0,5 dell'originale garantisce quasi un certo fallimento).

Li lasci digerire su quello. Se vanno ancora per la proposta rischiosa ( fatta ieri! ) Almeno hai scritto che glielo hai detto. Se c'è speranza per il tuo gruppo di non essere solo agile ma ingegneristico, il cliente potrebbe prendere in seria considerazione i tuoi numeri e pianificare di conseguenza questa e le richieste future.

Spetta a te come ingegnere spiegare in termini ingegneristici, verificabili e chiari che richiedere modifiche non è un pasto gratuito.


grazie per il tuo consiglio. Ho problemi a fornire una stima dello sforzo per i progetti. Nel tuo post ti consigliamo di ottenerlo dal progetto precedente. Che cosa succede se non abbiamo dati precedenti per uscire con la stima. E le risorse che abbiamo sono nuovi membri del team (alcuni sono neolaureati con poca esperienza che rende le cose ancora più difficili da stimare)
user1872384

8

Da quello che hai descritto, non hai problemi. Chiedono una modifica e sono disposti ad aspettare fino a quando non si dice che può essere fatto o sono disposti a posticipare un'altra funzione. Sembra un equilibrio tra: tempo, risorse e requisiti.


Non sto dicendo che il dare e avere sia un problema. Ti chiedo come comunichi la complessità e la portata di un cambiamento che ti viene chiesto?

2
@joe allora dai un preventivo
jk.

4

Potresti provare a impostare un'età minima per una nuova aggiunta / modifica (non applicabile alle correzioni di bug). Ad esempio, non è possibile elaborare nuove modifiche fino a quando non compie 3 settimane.

Avere un'età minima di un'attività è bello perché all'inizio, ogni attività sembra estremamente importante, ma se aspetti un po 'di tempo, la sua importanza spesso diminuisce in modo significativo. A seconda del tuo intervallo di tempo, ti darà almeno quella quantità di tempo di stabilità nelle attività su cui stai lavorando.

Per tenere traccia dell'età, consentirei che le attività vengano aggiunte a qualche elenco, ma non verranno considerate attività su cui lavorare fino alla scadenza di tale periodo.


1

Questo è un problema molto comune, indipendentemente dalla velocità con cui un progetto sta avanzando in termini tecnici, il cliente lo percepisce molto più lento e si sente libero di cambiare i requisiti poiché a loro piace pensare che gli sviluppatori non debbano fare molto comunque.

Questa percezione imperfetta proviene da tre principali attività di sviluppo che richiedono tempo e non saranno mai adeguatamente spiegate dai clienti:

  1. Revisioni / pulizia del codice: il vecchio codice viene gonfiato e incasinato e richiede revisioni e pulizie regolari, questo richiede molto tempo e il client non ci crederà mai.
  2. Audit di sicurezza e correzioni: specialmente se hai membri del team junior avrai molti problemi di sicurezza relativi al codice e vorrai esaminare regolarmente tutto quel nuovo codice che è stato scritto e riscrivere cose che non sembrano buone da una sicurezza prospettiva, il cliente non saprà mai o conto per questo momento.
  3. Modifiche relative all'architettura: una base di codice in crescita può (e molto probabilmente lo farà) in più punti richiedere un ripensamento strutturale e il refactoring ciò può comportare: A - Modifiche / ottimizzazioni relative alle prestazioni (modifiche dell'algoritmo, sostituzioni di librerie, motori di cache, ... ecc.) oppure: B - Modifiche / ottimizzazioni relative alla produttività (leggibilità, riusabilità del codice, facilità di comprensione, nuove convenzioni di codifica, un nuovo framework, ... ecc.).

Nessuna delle precedenti sarà mai compresa e adeguatamente considerata dai clienti finali.

Fondamentalmente tutto ciò che non ha "viste" (elementi della GUI) non è stato fatto.

Chiamiamo questo il teorema di projenix, ahah non sto solo scherzando: D

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.