A principal causa de sua frustração com a situação é provavelmente a percepção e os termos enganosos / errados usados pelo cliente. O cliente geralmente não vem com uma lista de requisitos , mas uma lista de desejos de tudo o que eles pensam que pode ser útil para eles. Esses não são todos os requisitos, porque o cliente ainda não gastou tempo para realmente pensar se cada recurso é realmente necessário .
Isso nem sempre é necessariamente um problema
Se o seu cliente tem o dinheiro para todos esses recursos e está disposto a participar, e você realmente não se importa em resolver os problemas reais e reais que o cliente possui, esse pode ser um projeto muito lucrativo. Isso acontece, muito, muito raramente, e para a maioria dos desenvolvedores é um trabalho de matar a alma, porque você pode sentir antecipadamente que o projeto não será bem-sucedido para o cliente no final (mesmo que seja financeiramente bem-sucedido para você como desenvolvedor). Também é de alto risco, porque é provável que você acabe com um projeto de custo fixo com muita incerteza, e é realmente um problema avaliar incorretamente o risco em grandes projetos.
E se for um problema?
Vamos supor que você não esteja nessa situação rara. Nesse caso, você desejará abordar as duas principais deficiências da lista de desejos, conforme indicado:
- É improvável que o cliente tenha uma idéia correta dos custos do desenvolvimento de uma lista tão grande de requisitos; portanto, é improvável que você obtenha o contrato pela quantidade de dinheiro que realmente precisa.
- É improvável que esta lista de desejos descreva de forma precisa e sucinta o verdadeiro problema que o cliente tem e deseja resolver.
Na minha experiência, você precisa abordar 2 para corrigir 1. Pesquisar detalhadamente o problema real significa que você, o desenvolvedor, agora tem a entrada necessária para dar saltos criativos na solução do problema de uma maneira que o próprio cliente nunca pensou. É provável que essas soluções sejam muito mais baratas e rápidas do que a implementação da lista de desejos completa.
como você conserta aquilo?
Como Matthew Flynn diz em sua resposta - comece fazendo o cliente priorizar os requisitos. Isso nem sempre é fácil, mas force-os a fazê-lo. Se necessário, use a frase "Se alguém apontasse uma arma para sua cabeça, qual único requisito você manteria?". Você encontrará frequentemente durante esse processo que o cliente realmente não tem uma ideia muito clara do que os requisitos individuais significam. Nesse caso, faça o que Peter Rowell sugere e faça com que o cliente trabalhe nas Histórias de Usuários. Você e o cliente começarão a entender o problema e os requisitos muito melhor e, em seguida, poderá voltar à priorização. Repita essas etapas quantas vezes for necessário até que você se sinta à vontade e saiba o suficiente para resolver o problema do cliente .
Como isso responde à questão do desenvolvimento de uma solução?
Depois de ter uma lista priorizada de requisitos, você tem a entrada necessária para sugerir um processo de desenvolvimento incremental ao seu cliente. Você não precisa chamá-lo de Agile, mas pode sugerir a quebra do contrato em partes menores para cada requisito (ou conjunto indivisível de requisitos) e entregá-los um por um com validação pelo cliente. Ou você pode usar todos os recursos disponíveis online e offline para convencer o cliente de que é do seu interesse cooperar em um dos estilos de desenvolvimento Agile. Em qualquer caso, você pode fornecer sua proposta de contrato / projeto de uma forma que sugira claramente esses blocos de requisitos em ordem de prioridade, cada um com seu próprio custo e conclusão. Segure essa cenoura na frente do cliente,