La causa principal de su frustración con la situación es probablemente la percepción y los términos engañosos / incorrectos utilizados por el cliente. El cliente no suele acudir a usted con una lista de requisitos , pero puede ser útil para ellos una lista de deseos de cada cosa que se les ocurra . Esos no son todos los requisitos porque el cliente aún no ha pasado el tiempo para pensar realmente si cada característica es realmente necesaria .
Esto no siempre es necesariamente un problema
Si su cliente tiene el dinero para todas esas características y está dispuesto a deshacerse de él, y realmente no le importa resolver los problemas reales y reales que tiene el cliente, entonces este podría ser un proyecto muy lucrativo. Ocurre, muy, muy raramente, y para la mayoría de los desarrolladores es un trabajo que mata el alma porque puede sentir de antemano que el proyecto no tendrá éxito para el cliente al final (incluso si es financieramente exitoso para usted como desarrollador). También es de alto riesgo porque es probable que termine con un proyecto de costo fijo con mucha incertidumbre, y realmente es un problema juzgar mal el riesgo en proyectos grandes.
¿Qué pasa si es un problema?
Supongamos que no estás en esa situación rara. En este caso, tendrá que abordar las dos principales deficiencias de la lista de deseos como se indica a continuación:
- Es poco probable que el cliente tenga una idea correcta de los costos de desarrollar una lista tan grande de requisitos, por lo que es poco probable que obtenga el contrato por la cantidad de dinero que realmente necesita para hacerlo.
- Es poco probable que esta lista de deseos describa de manera precisa y sucinta el problema real que el cliente tiene y quiere resolver.
En mi experiencia, necesita abordar el 2 para corregir el 1. Profundizar en el problema real significa que usted, el desarrollador, ahora tiene la información necesaria para dar saltos creativos para resolver el problema de una manera que el cliente nunca pensó. Es probable que estas soluciones sean mucho más baratas y rápidas que la implementación de la lista de deseos completa.
¿Cómo arreglas eso?
Como dice Matthew Flynn en su respuesta: comience por hacer que el cliente priorice los requisitos. Esto no siempre es fácil, pero obligarlos a hacerlo. Si es necesario, use la frase "Si alguien le apuntara con un arma a la cabeza, ¿qué requisito individual cumpliría?" A menudo encontrará durante este proceso que el cliente realmente no tiene una idea muy clara de lo que significan los requisitos individuales. En ese caso, haga lo que Peter Rowell sugiere y haga que el cliente trabaje a través de User Stories. Usted y el cliente comenzarán a comprender el problema y los requisitos mucho mejor, y luego podrán volver a priorizar. Repita esos pasos tantas veces como sea necesario hasta que se sienta cómodo y sepa lo suficiente como para resolver el problema del cliente .
¿Cómo responde eso a la pregunta de desarrollar una solución?
Una vez que tenga una lista de requisitos priorizados, tiene la información que necesita para sugerir un proceso de desarrollo incremental a su cliente. No tiene que llamarlo Ágil, pero puede sugerir dividir el contrato en partes más pequeñas para cada requisito (o conjunto de requisitos indivisible) y entregarlos uno por uno con la validación del cliente. O puede hacer todo lo posible y utilizar los numerosos recursos disponibles en línea y fuera de línea para convencer al cliente de que lo mejor para ellos es cooperar en uno de los estilos de desarrollo ágiles. En cualquier caso, puede proporcionar su propuesta de contrato / proyecto en una forma que sugiera claramente estos componentes básicos de los requisitos en orden de prioridad, cada uno con su propio costo y conclusión. Sostén esa zanahoria frente al cliente,