¿Debe un programador "pensar" para el cliente?

12

He llegado al punto en que odio reunir los requisitos. Los clientes son demasiado vagos por su propio bien. En un entorno ágil, donde podemos mostrarle al cliente un trabajo para completar, no es tan malo, ya que podemos hacer pequeñas correcciones / actualizaciones regulares de la funcionalidad.

En un entorno de tipo "cascada" (requisitos primero, producto casi completo a continuación) las cosas pueden ponerse feas. Este tipo de entorno me ha llevado a cuestionar constantemente los requisitos. Por ejemplo, el cliente quiere "convertir automáticamente la entrada al número 1" (refiriéndose a una cantidad en un pedido). Pero lo que no piensan es que la "entrada" podría ser un simple tipo-o. Una "x" en un cuadro de texto podría ser un "woops", no quiero 1 de esos productos de "pasta de dientes". Pero, hay tanto en el aire con requisitos que podría soportar y corregir durante horas rompiendo lo que quieren. Esto simplemente no es saludable.

Trabajando para una corporación, podría tratar de ajustar la cultura para que se ajuste al modelo ágil que nos ayudaría (no es un trabajo pequeño, por encima de mi salario). O barra los detalles feos debajo de la alfombra y espere lo mejor. ¿Quizás mi cliente está intentando acercarse demasiado al código?

¿Cómo se maneja el problema de "pensar para el cliente" sin molestarlo con demasiadas preguntas?

P.Brian.Mackey
fuente
1
¿Por qué tanta gente hace comentarios despectivos sobre la cascada que demuestran que no han trabajado en entornos de tipo cascada o que obviamente no saben cómo hacerlo? La cascada no es una especificación exacta y única. Los desarrolladores inteligentes sabrían que tienen que adaptarse a sus necesidades específicas. Si los requisitos no son claros y mostrar alguna funcionalidad de trabajo para el usuario sería útil (es decir, su enfoque ágil), existen estas cosas llamadas prototipos. Agile no facilitaría la vida, Agile solo facilita el inicio, hace que el final sea más difícil.
Dunk
@Dunk: perdón si ofendí a los fanáticos de las cascadas. No soy gerente de proyectos. Califiqué el paradigma con "" y mi definición, que puede o no ser la forma en que todos entienden y usan la cascada. Solo quiero aclarar mi punto de vista con paradigmas generalmente entendidos, no hablar mal de ellos.
P.Brian.Mackey
1
No soy necesariamente solo un fanático de las cascadas, sino que las cascadas son golpeadas todo el tiempo y muy pocas personas lo defienden, así que debo hacer mi parte. El hecho es que hay muchos tipos de proyectos que se sirven mejor utilizando enfoques en cascada. Los sistemas críticos de seguridad, los programas espaciales, cualquier cosa cuando el hardware deba diseñarse en paralelo con el software, cualquier proyecto en el que solo un subconjunto de funcionalidad sea inútil para el cliente son solo algunos ejemplos. Mi punto es que la mayoría de las empresas que usan cascada con éxito en realidad usan enfoques similares a la cascada y la definición estricta es solo una guía.
Dunk

Respuestas:

16

En la mayoría de los casos, el cliente no sabe qué más se puede hacer. Nunca han tenido que describir lo que necesitan de una manera que lo haga inequívoco para nosotros. En sus mentes, está claro. Incluso el hecho de que estén pensando en convertir la entrada del usuario al número 1 realmente va más allá de la forma en que están acostumbrados a pensar.

Eso es realmente como debería ser. Si realmente supieran cómo describir exactamente lo que querían, no necesitarían que lo escribiéramos para ellos. Como resultado, nuestra responsabilidad es ayudarlos durante el proceso. El proceso requiere que se tomen decisiones, por lo que también necesitan nuestras recomendaciones para facilitar el proceso de decisión.

Deje que el cliente sea impreciso y hable a un alto nivel. Conocen su negocio, y en eso son buenos (con suerte, o no podrán pagar sus facturas ...). Tome lo que hablaron y piense en ello por un tiempo. Eventualmente, obtienes algunas ideas geniales para obtener lo que quieren y necesitan, mientras te aseguras de que lo que necesitas sea comprobable y consistente.

Recomiendo trabajar en trozos. Cuando se reúna con el cliente, tenga un conjunto de requisitos relacionados entre sí, y luego explique cómo piensa hacer lo que quiere. También explique por qué tomó las decisiones que hizo. El cliente puede ver lo que proporcionó y ajustarlo. Si obtiene una respuesta como, "Nunca pensé en eso, pero eso realmente ayudaría", sabe que tiene un pulso sobre cómo piensa el cliente. NOTA: que esto no es featuritis, está seleccionando las características correctas para adaptarse mejor al problema comercial que tiene el cliente.

Si tiene algo que parece que podría contradecir lo que el cliente le dijo explícitamente, entonces es hora de explicar por qué. Deberá presentar algunos problemas en los que el cliente nunca pensó, y cómo su alternativa todavía les da lo que quieren / necesitan pero también evita esos problemas potenciales. Puede obtener un pequeño rechazo, pero también aumenta la confianza de los clientes, ya que se dan cuenta de que está tratando de darles un producto que realmente puedan usar. Si dan un poco de retroceso, los obliga a exponer por qué querían algo de cierta manera. Eso lo ayuda a comprender más a su cliente y a adaptar los requisitos según sea necesario.

La forma más rápida de agotar a su cliente es hacer todas las pequeñas preguntas una tras otra. Desea planificar y programar una serie de reuniones para revisar su enfoque. Mientras tenga los requisitos técnicos (lo que su equipo usa para construir el producto) y su cliente sea el propietario de los requisitos del negocio, y pueda relacionarlos, tendrá una manera de cerrar la brecha.

Berin Loritsch
fuente
44
También debe dedicar un tiempo a comprender el negocio en el que está trabajando. Muchas de las preguntas de programación encajarán si comprende cómo funciona el negocio.
Michael K
La mejor respuesta en general, pero la publicación de artículos en @whatsisname es un complemento maravilloso para la respuesta (aunque no estoy de acuerdo con la necesidad de encontrar otro cliente. Necesito mejorar mi visión del cliente).
P.Brian.Mackey
6

Si los está "cabreando" con demasiadas preguntas, obtenga un mejor cliente.

Los clientes no saben lo que quieren. No necesariamente reconocerán su solución cuando la vean. Ese es un problema y ese es el trabajo que está resolviendo: traducir sus requisitos en algo que pueda entregarse como un paquete de software.

Para hacer eso tienes que aprender sobre lo que estás haciendo. No debería preguntarse "qué debería suceder cuando ponen un número en un cuadro de texto", debería preguntarse "¿por qué es importante este número? ¿Para qué se utiliza?" Haga que le enseñen cómo hacen su trabajo. Y no escuches lo que dicen, porque no saben lo que quieren, pero mira lo que hacen y adónde van sus ojos .

Lea esto para obtener más información: http://www.joelonsoftware.com/articles/fog0000000356.html

whatsisname
fuente
3

Suponiendo que es un empleado de algún tipo de corporación, parece que necesita un buen analista de negocios para ayudar a mediar esos detalles entre el cliente y usted. Supongo que no tiene suficiente influencia para que eso suceda, por lo que mi siguiente mejor consejo sería aprender más sobre el dominio en el que trabajan sus clientes. Al comprender el negocio y los procesos con los que trabajan, usted ' Tendré una mejor idea de lo que realmente quieren que se haga, a pesar de la forma floja y posiblemente incorrecta en que lo están describiendo. Eso le permite analizar lo que han pedido, y puede volver más tarde en una reunión separada con una interpretación de lo que quieren y una posible sugerencia para darles lo que realmente quieren. Si trabajas constantemente con los mismos clientes, '

Si eso parece muy difícil, doloroso, extremadamente desagradable o poco realista, mi consejo final sería comenzar a buscar un nuevo trabajo en algún lugar donde tengan analistas de negocios, porque no será más fácil para usted sin hacer un esfuerzo.

gunit888
fuente
2

Si está reuniendo requisitos, entonces es su trabajo hacer estas preguntas.

Sí, el cliente podría enfadarse, pero en ese caso debe explicar por qué está haciendo "todas estas preguntas". Debe comprender su negocio antes de poder escribir el código que automatizará ese negocio. El factor decisivo sería que si no lo hicieran, gastarían mucho dinero desarrollando un sistema que en realidad no hace lo que quieren.

El efecto secundario de esto es que debe terminar ayudando al cliente a refinar sus requisitos.

Esto se aplica si está haciendo Big Design Up Front o Agile.

ChrisF
fuente
2

Lamentablemente, es su trabajo pensar por el cliente si no puede hacerlo o no lo hará él mismo.

He tenido ambos resultados posibles:

  • el cliente está feliz de que realmente estés pensando en lo que te dice, siente que está en las manos correctas o

  • el cliente está molesto porque lo obligas a pensar nuevamente sobre sus requisitos. Pero entonces, este tipo de cliente se molestará con usted de todos modos, tarde o temprano. Ciertamente se molestará mucho si se entera demasiado tarde de que no pensaste en él al principio. Yo diría: evite este tipo de cliente si es posible :-)

tedev
fuente
1

Un desarrollo rápido de aplicaciones (RAD) resuelve bien este problema.

Comience "pensando en el cliente" haciendo una interfaz de usuario no funcional muy aproximada para el programa basada en su mejor estimación de lo que necesita. Luego muéstreles y trabaje iterativamente hasta que satisfaga sus necesidades reales.

No es que no sepan lo que quieren. Es que no saben lo que quieren hasta que lo ven, y a veces puedes determinar lo que quieren por exclusión. Es decir, mostrándoles algo que NO quieren y prestando atención a cómo lo critican.

El principal problema con BFUD (diseño Big Up Front) es que aísla al desarrollador de la culpa al forzar al cliente a un contrato que describe explícitamente lo que van a obtener. Y desafortunadamente esto se hace en el momento en que nadie en el proyecto tiene una buena idea de lo que realmente se necesita. Al final, esto solo hace que el cliente acepte lo que construyó porque cerró la sesión, pero de mala gana.

Si el cliente no está contento con la entrega, es solo una victoria pírrica.

JohnFx
fuente
1

El trabajo del cliente es transmitirle lo que necesita. Su trabajo es comprender lo que necesitan lo suficientemente bien como para poder programar lo que necesitan. Una pregunta obvia al tema de cambiar todas las entradas a una sería decir "¿Por qué quieres que cambie todas las entradas a 1?" Luego, el cliente puede explicar el razonamiento detrás de esto para que comprenda la necesidad y luego pueda proporcionar no necesariamente lo que pide sino lo que necesita. Si estás seguro de que sabes lo que necesitan, entonces no creo que necesariamente necesites "corregir" su línea de pensamiento. Usarán el producto y la cosa "¡Oh! Eso es perfecto". Pero a menos que esté seguro de saber lo que necesitan, deberá explicar lo que está pensando y resolverlo con el cliente. Desafortunadamente hay No hay forma de llevar a cabo esta parte del proceso sin mucha comunicación, lo que implica una escucha real en ambas partes. Tenga cuidado de enfadarse con la situación y decir cosas que realmente puede o no querer decir.

Kenneth
fuente
0

Honestamente: a menos que sea una 'gran funcionalidad', haga que la persona con mayor conocimiento de dominio adivine lo que debería suceder e implemente eso. Se desarrollará en las pruebas de aceptación, que es para eso.

Steven Evers
fuente