Is there any standard way for knowing when to stop writing user stories, and if so, what is the basis for this, and how does it apply to future sprints?
Non conosco personalmente un metodo standard di per sé. Si tratta davvero di una combinazione della tua metodologia e delle aspettative dei tuoi clienti.
Ho scoperto che è meglio iniziare la codifica non appena hai "abbastanza" storie da parte del tuo cliente per iniziare. Come altri hanno già detto, questo potrebbe essere per una singola iterazione, tuttavia potrebbe essere di più. La tua misura di abbastanza dovrebbe essere guidata da quanto spesso intendi rilasciare codice di lavoro al tuo cliente, e piuttosto che il tuo cliente ti fornisca una lista infinita di storie (molte delle quali probabilmente non saranno mai realizzate, o potrebbero cambiare o potrebbero non rendere la scadenza principale del rilascio), è meglio chiedere al cliente le prime 3-5 caratteristiche più importanti e più prioritarie. Quando questi vengono eseguiti e rilasciati al tuo cliente, raccogli le successive 3-5 funzionalità più importanti e così via. Chiedi più o meno in base alla durata delle tue iterazioni.
Il tuo cliente o contratto o scadenza forse ti guiderà su quando smettere di chiedere storie, ma nel frattempo hai chiesto storie e ti sei fermato tutte le volte che hai avuto iterazioni. Quando, d'accordo, tu e il cliente sentite che il prodotto è sufficientemente completo, potete decidere cosa fare con eventuali storie lasciate che il cliente potrebbe non aver ancora dato.
Il vantaggio principale di questo approccio è che finisci per offrire il massimo valore al cliente in anticipo, e mentre il progetto cresce e il tempo passa, la quantità di valore che stai offrendo al cliente diminuisce al punto in cui il cliente può prendere una decisione circa "l'ultimo 20% delle caratteristiche" che avrebbero potuto desiderare e che potrebbe non essere mai utilizzato. Riduce inoltre il tempo sprecato per articoli banali e di bassa priorità, ponendo la responsabilità (e lo stress) di prioritizzare e pianificare le iterazioni sul cliente e tutte basate esclusivamente sulle esigenze del cliente. Ciò non significa tuttavia che non si dovrebbe fornire una guida al cliente al fine di evitare complicati colli di bottiglia che potrebbero diventare evidenti quando si parla di requisiti con il cliente.
Leggi la versione Lean Software Development di Poppendeicks se desideri una descrizione più dettagliata di questo approccio in un contesto più ampio.