Existe alguma maneira padrão de saber quando parar de escrever histórias de usuários? Em caso afirmativo, qual é a base para isso e como isso se aplica a sprints futuros?
Eu pessoalmente não conheço um método padrão por si só. Na verdade, tudo se resume a uma combinação de sua metodologia e das expectativas de seus clientes.
Descobri que é melhor começar a codificar assim que você tiver histórias "suficientes" do seu cliente para começar. Como outros já disseram, isso pode ser para uma única iteração, mas pode ser para mais. Sua medida do suficiente deve ser guiada pela frequência com que você pretende liberar o código de trabalho para seu cliente e, em vez de pedir que ele lhe forneça uma lista interminável de histórias (muitas das quais provavelmente nunca serão concluídas, ou poderão mudar, ou não) prazo de lançamento principal), é melhor solicitar ao seu cliente os primeiros 3 a 5 recursos mais importantes e de maior prioridade. Quando essas são finalizadas e liberadas para o seu cliente, você coleta os próximos três a três recursos mais importantes e assim por diante. Peça mais ou menos, dependendo de quanto tempo suas iterações provavelmente serão.
Talvez seu cliente ou contrato ou prazo limite possa orientá-lo sobre quando realmente parar de pedir histórias, mas, enquanto isso, você está pedindo histórias e parando com a frequência das iterações. Quando, por acordo, você e o cliente sentirem que o produto está completo o suficiente, poderá decidir o que fazer com as sobras de histórias que o cliente ainda não tenha lhe dado.
A principal vantagem dessa abordagem é que você acaba entregando o maior valor ao cliente antecipadamente e, à medida que o projeto cresce e o tempo passa, a quantidade de valor que você está entregando ao cliente diminui até o ponto em que o cliente pode gerar um valor. decisão sobre os "últimos 20% dos recursos" que eles poderiam desejar e que talvez nunca fossem realmente usados. Também reduz o tempo desperdiçado em itens triviais e de baixa prioridade, colocando a responsabilidade (e o estresse) de priorizar e agendar iterações novamente no cliente, e tudo baseado apenas nas necessidades do cliente. Isso não significa, no entanto, que você não deve fornecer orientação ao cliente para evitar gargalos de programação difíceis que podem se tornar aparentes à medida que você conversa com os requisitos do cliente.
Leia o Desenvolvimento de software enxuto da Poppendeicks, se desejar uma descrição mais detalhada dessa abordagem em um contexto mais amplo.