La sfida di business e architettura dietro la creazione di user story efficaci

5

Un mio amico in un altro dipartimento ha avuto un problema ed è venuto da me con una domanda che non ero sicuro su come aiutarlo. Recentemente è stato promosso architetto e gli è stato affidato il compito di progettare e guidare un team di sviluppatori di qualità discutibile e con poca o nessuna esperienza nel seguire un piano di progetto. Questo team ha preso l'abitudine di iniziare lo sviluppo il prima possibile prima ancora di valutare le esigenze aziendali, e quindi di hackerare il software in pezzi quando i requisiti sono finalmente diventati chiari verso la fine della scadenza. Per questo motivo hanno provato a formulare standard di progettazione in passato, ma non si sono mai presi la briga di seguirli più avanti nel progetto quando è stato acceso il calore.

Ha intenzione di cambiare questo e mi ha chiesto il modo migliore per gestire queste sfide. Il mio punto di vista è che il progetto è condannato prima di iniziare perché la gestione stabilisce una scadenza molto stretta prima che i requisiti siano chiaramente noti o compresi. Il dithering da parte del cliente esaspera ulteriormente il problema. Gli ho detto che Agile è stato REALIZZATO per questo tipo di problemi, ha formulato le storie degli utenti in base ai requisiti del cliente, come te ne rendi conto ora, e poi quando più user story o come cambiano si aggiungono all'arretrato e riadattano di conseguenza il tuo piano di sprint .

Ma poi ho pensato a quale sia davvero il modo migliore per gestirlo? Il cliente non ha modo di sapere esattamente cosa vogliono dal software ora, ma sa che lo vuole e sono disposti a pagare per questo e vogliono almeno una qualche forma di rilascio lavorativo entro una data specifica. Viene data una quotazione con una ripartizione di ciò che verrà consegnato (è un'ipotesi sia per il venditore che per il cliente), il prezzo è concordato.

Quando si formula la citazione, deve esistere una scadenza di qualche tipo, anche se a questo punto è morbido. Le storie degli utenti non sono nemmeno note e certamente non sono attività e la capacità di fornire una stima ragionevole. Come ti avvicini a questa sfida?

Quando questa citazione è presa e concordata è normale usare i risultati grezzi come indicato nella citazione come base per la formulazione delle storie degli utenti?

Inoltre, hai qualche consiglio su come "mantenere vivi i modelli di progettazione e i documenti" durante tutto il progetto quando i requisiti cambiano drasticamente?

EDIT: sembra che molte persone credano che il cliente coinvolto dovrebbe essere quello che fornisce le storie degli utenti come se fosse un dato. Non ho alcuna esperienza personale con un cliente disposto a impegnare questo tipo di impegno nel processo di sviluppo. A causa di ciò, sembra logico che a causa della loro mancanza di input nel processo di sviluppo, non siano un ottimo stakeholder per il progetto stesso. Le parti interessate a questo punto diventano gli analisti di business e i gestori di applicazioni che dovrebbero spremere qualsiasi informazione di cui possono ottenere dal client e trasformarla in informazioni utilizzabili per gli sviluppatori. Questo chiaramente non funziona, quindi forse l'UNICO modo in cui Agile o Kanban possono funzionare è avere un coinvolgimento diretto del cliente nelle storie degli utenti oppure il progetto è destinato a fallire?

    
posta maple_shaft 14.09.2011 - 13:58
fonte

6 risposte

4

He aims to change this and asked me about the best way to handle these challenges. My perspective is that the project is doomed before they start because management sets a tight deadline before the requirements are clearly known or understood. Dithering from the client exacerbates the problem further. I told him that Agile was MADE for these kinds of problems, formulate user stories based on the customer requirements as you are aware of them now, and then as more user stories or as they change just add to the backlog and readjust your sprint plan accordingly.

Il fatto che la direzione stia fissando le scadenze e prendendo impegni prima che il progetto sia ben compreso è un problema, e i metodi agili non possono risolvere quel particolare problema. Agile ti consente di gestire requisiti poco chiari, requisiti altamente volatili e migliorare la visibilità di tutte le parti interessate. Tuttavia, se hai scadenze, agile non può farti incontrare magicamente da loro.

Questo dovrà essere un processo di negoziazione con la gestione. Forse non capiscono la natura dello sviluppo del software, o semplicemente non si preoccupano del processo di sviluppo del software.

The client has no way of knowing exactly what they want from the software now, but they know they want it and are willing to pay for it...

Non sanno cosa vogliono, o non possono esprimere ciò che vogliono? Ho la sensazione che il cliente sappia che gli obiettivi di business che vogliono raggiungere, la creazione di una visione e di un obiettivo e l'acquisizione di questi obiettivi aziendali di alto livello sarebbero di grande aiuto. Questo dovrebbe essere fatto come parte della pianificazione del progetto, anche prima di iniziare il ciclo di vita del progetto prescelto - esiste a un livello superiore e comprendere queste informazioni può aiutarti a scegliere una metodologia del ciclo di vita appropriata per ciascun progetto.

When formulating the quote a deadline of some kind must exist even though it is soft at this point. User stories aren't even known and certainly not tasks and the ability to provide a reasonable estimation either. How do you approach this challenge?

Innanzitutto, comprendi la differenza tra stime, obiettivi e impegni / scadenze . Considera inoltre il cono di incertezza quando lo fornisci. Conoscere i requisiti aziendali di alto livello può consentire di iniziare a stimare. Poiché conosci più user story che sono necessari per il completamento, puoi valutare lentamente la durata del progetto. Mentre monitori la velocità (o qualche altra metrica di avanzamento), puoi determinare quanto tempo impieghi a completare le storie degli utenti di dimensioni e difficoltà note, consentendo così di stimare quale iterazione ogni requisito o storia utente verrà avviata.

When this quote is taken and agreed upon is it normal to use the rough deliverables as outlined in the quote as a basis for formulating your user stories?

Non puoi formulare tutte le storie degli utenti da risultati grezzi o obiettivi di business. Le storie degli utenti devono essere guidate da requisiti specifici che vengono evocati dal cliente e dagli utenti del software. Probabilmente puoi inventarne alcuni, ma non quasi tutti. Quando inizi ad aggiungere funzionalità, è probabile (quasi certo) che vengano create e assegnate priorità a più storie utente.

Further do you have any advice on how to "keep the design patterns and documents alive" throughout the project as requirements change drastically?

Una buona metodologia e disciplina di processo. Anche mantenere i documenti in un formato facile da modificare e con versioni diverse aiuta molto.

It seems many people assume that the client involved should be the one to provide the user stories as if it were a given. I don't have any personal experience with a client willing to put this kind of effort into being involved with the development process. Due to this, it seems to make sense that because of their lack of input into the development process, they are not a very good stakeholder for the project itself. The stakeholders at this point become the business analysts and application managers who are supposed to squeeze whatever trickle of information they can get from the client and turn it into usable information for the developers. This is clearly not working though so perhaps the ONLY way that Agile or Kanban can work is to have direct client involvement in user stories or else the project is doomed to failure?

Molti clienti non vedono la necessità di coinvolgimento. Tuttavia, puoi provare a coinvolgerli mostrandoli rapidamente, risultati potenzialmente spedibili, chiedendo loro se soddisfa le loro esigenze e correggendo o migliorando il software fino a quando non aggiunge valore commerciale sufficiente. Dimostrare il valore del coinvolgimento è di solito un argomento abbastanza buono e convincente.

Ora, il coinvolgimento non significa che siano sempre presenti e camminino con te. Ad esempio, potresti incontrare il cliente solo dopo una manciata di iterazioni. Tuttavia, è necessario che qualcuno rappresenti gli interessi del cliente e possa comunicare con loro su base abbastanza regolare in modo che possano essere informati sullo stato del progetto e del prodotto.

    
risposta data 14.09.2011 - 15:49
fonte
3

Essendo anche un buon approccio allo sviluppo, Agile è anche un modo perfetto per rendere il customer care di un progetto. Tutti gli sviluppatori hanno bisogno di rifiutarsi di lavorare fuori dal framework.

Un cliente non ha creato storie di utenti? Ok, allora non facciamo nulla di utile, hackerando il software come preferiamo (c'è sempre qualcosa da refactoring, alcuni bug da correggere, alcune nuove librerie da studiare e provare, ecc.)

"Perché stai rallentando?" il cliente potrebbe chiedere. " Poiché il software è pronto ", il team risponde (e immagino che questa sia l'affermazione che potrebbe provocare l'input necessario). "Aspetta, com'è che è pronto? Manca il modulo X! E l'operatore deve aspettare 5 minuti mentre Y carica, mentre il tempo dovrebbe essere diminuito a 1 minuto."

Qui hai due storie di utenti. Ripeti fino alla scadenza.

Per quanto riguarda "mantenere in vita schemi e documenti di progettazione", la spazzatura è uno strumento chiave per questo.

    
risposta data 14.09.2011 - 14:35
fonte
3

Aiuta la tua squadra; aiuto con le vendite.

La parte difficile di questa situazione è qualcuno che ha le capacità per essere un architetto potrebbe non essere un buon leader di squadra. Sfortunatamente per il tuo amico, le soluzioni ai problemi di questa azienda richiedono le competenze di un capo squadra. Sembra che siano in grado di eseguire anche i migliori progetti.

Il primo passo sarà con il team. Tutto è più semplice con gli sviluppatori di talento che ottengono risultati. Mantieni i buoni. Tentativo di addestrare i riscattabili. Sbarazzati del resto. Tutti devono sapere dove si trovano non appena è possibile fornire una valutazione.

Assumi il controllo fin dall'inizio. È più facile lasciar perdere tempo. Richiede che gli standard siano seguiti. La mancata osservanza farà sballottare il codice e l'eventuale licenziamento. Questo fa parte del primo passo.

Non è il caso di costruire una squadra funzionante solo per averlo abbattuto da decisioni di cattiva gestione senior. Alla fine li perderai. Partecipa alle riunioni con i clienti. Ovviamente il cliente desidera una tariffa fissa, un programma e dei requisiti. Questo è quello che voleva mia moglie quando abbiamo ristrutturato la nostra cucina. Non è successo (la costruzione della cucina è andata avanti molto più a lungo della programmazione per computer). Come esperto puoi aiutare a prendere quelle decisioni in base alle informazioni. Sii lì per far sapere loro cosa può essere costruito e da quando, ma solo dopo aver svolto un lavoro preliminare. Dà un confidente, "tornerò da te." Nessuno inizia a costruire un edificio senza coinvolgere l'architetto.

Fai sapere loro quali sono le tue aspettative del cliente. Devono fornire informazioni. Identifica chi sarà disponibile per riunioni, domande, revisioni, test, ecc. Costringili a ottenere più pelle nel gioco piuttosto che scrivere un assegno. Quando scoprono che avranno anche una crisi di tempo, il programma si rilassa. Vogliono solo dedicare un po 'di tempo per alcune settimane e poi essere fatto con il processo per diversi mesi fino a quando non si ritorna con l'intero progetto. Questo non funziona. Fai sapere loro che questo è per assicurarsi che ottengano quello per cui stanno pagando. Siate fiduciosi e comportatevi in questo modo è il modo standard di fare le cose. Chiedi a un cliente se è giusto creare software scadente che probabilmente non funzionerà solo per rispettare una scadenza. Nessuno sarà d'accordo a ciò all'inizio (certo che si fa prendere dal panico quando la fine è vicina e mette la testa nella sabbia e prega).

Ci sarà resistenza dal resto della compagnia. Analizza le performance passate di questa azienda sulla soddisfazione dei clienti, sulla quantità di promesse che hanno rotto. La scarsa qualità del codice e l'incapacità di fare quello che dovrebbe essere facile correzioni e aggiornamenti. Usa questo contro di loro. Agli addetti alle vendite piace fare ciò che è facile per loro . Devono capire che il tuo coinvolgimento con il processo impedirà loro di portare le cattive notizie al cliente.

Costruire un team di qualità insieme ad aiutare i venditori a gestire le aspettative dei clienti attacca questo problema da entrambi i lati. Il tuo amico ha il suo lavoro tagliato. Spero che possa destreggiarsi tra questi due ruoli.

    
risposta data 14.09.2011 - 15:16
fonte
1

Sembra una situazione in cui il tuo amico accetta un contratto a prezzo fisso senza un ambito fisso che è una ricetta per il disastro, indipendentemente dal processo utilizzato. È necessario avere almeno una comprensione del valore minimo da consegnare affinché uno scenario a prezzo fisso funzioni - che suona come sorta di esistenza, ma non in modo utilizzabile. Se non riesci a ottenere ciò in anticipo, devi disporre di un piano per negoziare l'ambito e sapere quando l'ultimo momento responsabile è che ciò può accadere.

Sono un grande fan dell'uso di Kanban in scenari come questo per una serie di motivi, ma soprattutto perché agisce da catalizzatore per il cambiamento. Ci sono molti vantaggi che vedo nell'usare Kanban in questa situazione.

  1. I colli di bottiglia sono ovvi e visibili. Se noti che la mancanza di storie degli utenti è un collo di bottiglia, questo è un dato difficile che puoi riportare al tuo cliente per effettuare una modifica in anticipo, quando hai ancora la possibilità di consegnare.

  2. Kanban è ottimo per aiutare i team che tradizionalmente lottano con i processi per migliorare. Ho letto diversi account in cui team inesperti o meno stellari sono diventati alcuni dei migliori team della compagnia a causa della visibilità offerta da un sistema Kanban. Fondamentalmente, non c'era un posto dove nascondere le persone che aiutasse la squadra ad aiutare se stesse. Inoltre, poiché sei costantemente in spedizione e puoi vedere i progressi accadere, aumenta il morale che aiuta ancora di più la squadra.

  3. Il team segue il processo alla lavagna. Pertanto, una storia non può essere codificata, ad esempio, fino a quando non ha seguito gli altri passaggi - ad es. analisi, design, peer review. Il team decide i cancelli tra le fasi e perché è visibile, la responsabilità è più facile da fare.

  4. Mano nella mano con Kanban è Kaizen, "miglioramento continuo". Questo atteggiamento è una delle cose che aiuta a rendere grandi i team mediocri.

Per quanto riguarda la conservazione di modelli e documenti di design ... perché crearli? Poiché le cose sono in evoluzione, la documentazione deve essere in un formato facilmente modificabile. Il Wiki è ottimo per questo, lavagne e carta / penna sono ancora meglio. Strategie di documentazione come la metafora del sistema aggiornata e architettura haiku sono fantastici per questo scenario. L'obiettivo è quello di avere modi leggeri di acquisire informazioni che siano complete e che possano cambiare facilmente e che possano essere registrate in modo più formale in seguito quando ti stai preparando per la modalità hand-off, la manutenzione e la falena.

    
risposta data 14.09.2011 - 14:49
fonte
1

The client has no way of knowing exactly what they want from the software now, but they know they want it and are willing to pay for it

Parte del modo di pensare di TQM e BPR era convincere le aziende che il prezzo del prodotto includeva il costo della qualità. Cioè, se il cliente desidera pagare il prodotto, perché non includere i processi di qualità nella costruzione della soluzione? La barriera per la raccolta dei requisiti è un problema finanziario o è un problema di tempo?

I fatti che stai affermando nella tua descrizione comportano un alto rischio.

A meno che non utilizzi uno strumento in grado di generare automaticamente la maggior parte del tuo codice, il rischio nello scenario descritto non scomparirà mai.

Non c'è alcun sostituto di sorta per la comprensione dei requisiti (almeno funzionalità di base e regole di business) e determinazione con fiducia di ciò che può essere consegnato nella scadenza.

Anche se utilizzi l'approccio di generazione di una soluzione per evoluzione / prototipazione, avrai bisogno di tempo e interazione con l'utente.

Alcune idee che ti vengono in mente sono:

0: identifica chiaramente il motivo per cui non puoi definire i requisiti in anticipo.

1-Tentativo di educare i principali attori nel valore della determinazione dei requisiti. Questo può essere fatto mostrando il costo della correzione dei bug rispetto al costo della creazione del software giusto nel primo tempo. Ci sono alcuni grafici interessanti per questo (posso scavarne almeno uno per te se lo desideri).

2 - Tentativo di coinvolgere il cliente come parte responsabile nella soluzione, non solo come fonte per i requisiti e come punto per i test di accettazione.

3-Tentativo di quotare in base al tempo e allo sforzo piuttosto che utilizzare un contratto a prezzo fisso

4-Tentativo di rompere i sistemi in diversi piccoli componenti (aree tematiche) e consegnarli separatamente e frequentemente. Mentre questo aggiunge più lavoro al tuo team, ti aiuta ad aggiungere più interazione con il cliente, un'interazione basata su un prodotto reale e non solo sulla documentazione.

5-Trova strumenti che acceleri lo sviluppo il più possibile

Addizione Pochi riferimenti e grafici che mostrano in anticipo il valore degli errori di cattura e che incoraggiano l'analisi di front end e la raccolta dei requisiti: References: Cosa intendiamo per "design" in ingegneria del software?

link

Come spiegare che è difficile stimare il tempo richiesto per un progetto software più grande?

Grafici:

link

collegamento

link

link Grafico sul lato sinistro della pagina all'indirizzo: link

link

link

link

pagina 11 di: link

pagina 9 di: link

    
risposta data 14.09.2011 - 14:37
fonte
1

have direct client involvement in user stories or else the project is doomed to failure

Una corretta.

È eccellente. Rimanere con quello. È perfetto.

    
risposta data 14.09.2011 - 16:07
fonte

Leggi altre domande sui tag