¿Cómo convencer a los empresarios?

27

¿Qué métodos parecen funcionar mejor para convencer a los requisitos de las personas de negocios no tecnológicas? Estoy trabajando con un equipo que está tratando de reunir una especificación para un proyecto. Cada vez que nos reunimos y todo se reduce a las expectativas para la próxima reunión, pedimos a los empresarios que traigan de vuelta sus requisitos. Por lo general, responden algo como esto: "Bueno, ¿crees que ustedes podrían preparar un prototipo para que podamos ver lo que nos gusta la próxima semana ... ya sabes, no con ningún dato ni nada, ya que es un prototipo, solo la funcionalidad". es un proyecto de más de 6 meses, por lo que obviamente no es factible (¡tendríamos que desarrollar todo!), y ni siquiera sabemos qué prototipos sin algún tipo de especificación. Francamente, creo que, como la mayoría de las personas, tienen una idea de lo que quieren, simplemente no están pensando en eso de la manera enfocada necesaria para reunir los requisitos reales. Como alternativa a simplemente decirles, “Danos lo que quieres o no podemos / no haremos ningún trabajo” (queremos que estén contentos con los resultados), ¿hay maneras de ayudarlos a decidir lo que quieren? Por ejemplo, podríamos decirles:

“Dibuje algunas pantallas (en Powerpoint, en una servilleta, lo que sea) que muestren la IU que desea con todos los datos que desea ver y una descripción de la funcionalidad en los márgenes. A partir de esto, lo puliremos y crearemos el backend basado en este conjunto de requisitos de comportamiento ”

O

“No te preocupes por cómo se verá ahora (el número 1 cuelga). Simplemente denos una lista de todos los datos que desea sobre cada cosa que el programa realiza un seguimiento. Entonces, para "Cliente", puede enumerar: nombre, dirección, número de teléfono, pedidos, etc. No tiene que ser una estructura de base de datos perfecta, pero podemos resolver algo de esto y tener una idea de lo que está buscando "

¿Tiene sentido alguno de estos enfoques alternativos para que las personas de negocios se centren en lo que quieren? ¿Hay alternativas que has visto en acción?

Morgan Herlocker
fuente
18
Siempre solía soñar despierto sobre la contratación de analistas de requisitos del crimen organizado. "¿Vas a decirme quién debe tener acceso a los datos contables, o voy a tener que ponerme duro?"
David Thornley
77
"La verdad saldrá más pronto del error que de la confusión". (Sir Francis Bacon, según lo citado por Fred Brooks) Diles / muéstrales lo que crees que quieren en términos específicos, incluso si estás fuera de lugar. Ellos te corregirán. Itere varias veces hasta llegar a un acuerdo.

Respuestas:

22

He pasado los últimos 3 meses en una fase exhaustiva, y agotadora, de recopilación de requisitos de un proyecto importante y he aprendido, sobre todo, que no hay una solución única para todos . No hay ningún proceso, ningún secreto, que funcione en todos los casos. El análisis de requisitos es una habilidad genuina, y justo cuando crees que finalmente lo has resuelto todo, te expones a un grupo de personas totalmente diferente y tienes que tirar todo lo que sabes por la ventana.

Varias lecciones que he aprendido:

  • Diferentes partes interesadas piensan en diferentes niveles de abstracción.

    Es fácil decir "hablar a nivel comercial, no técnico", pero no es necesariamente tan fácil de hacer . El sistema que está diseñando es un elefante y sus partes interesadas son los ciegos que lo examinan . Algunas personas están tan profundamente inmersos en el proceso y la rutina que no se dan cuenta de que no es un negocio. Otros pueden trabajar en el nivel de abstracción que desea, pero son propensos a hacer afirmaciones exageradas o incluso falsas, o participar en una ilusión.

    Desafortunadamente, simplemente tiene que conocer a todos los individuos como individuos y comprender cómo piensan, aprender a interpretar las cosas que dicen e incluso decidir qué ignorar.

  • Divide y conquistaras

    Si no quiere que se haga algo, envíelo a un comité.

    No te reúnas con los comités. Mantenga esas reuniones lo más pequeñas posible. YMMV, pero en mi experiencia, el tamaño ideal es de 3-4 personas (incluido usted) para sesiones abiertas y 2-3 personas para sesiones cerradas (es decir, cuando necesita una pregunta específica respondida).

    Intento reunirme con personas que tienen funciones similares en el negocio. Realmente hay muy poco que ganar y mucho que perder arrojando a la gente de marketing en la habitación con los contadores de frijoles. Busque a las personas que son expertas en un tema y haga que hablen sobre ese tema.

  • Una reunión sin preparación es una reunión sin propósito.

    Un par de otras respuestas / comentarios han hecho referencia a la técnica del hombre de paja, que es excelente para aquellas personas problemáticas de las que parece que no puedes obtener ninguna respuesta. Pero no confíe demasiado en los hombres de paja , o la gente comenzará a sentir que los está engañando. Tienes que empujar suavemente a las personas en la dirección correcta y dejar que se les ocurran los detalles por sí mismos, para que sientan que los poseen (y en cierto sentido, los poseen).

    Lo que debe tener es algún tipo de modelo mental de cómo cree que funciona el negocio y cómo debería funcionar el sistema . Debe convertirse en un experto en dominios , incluso si no es un experto en la empresa específica en cuestión. Investigue todo lo que pueda sobre su negocio, sus competidores, los sistemas existentes en el mercado y cualquier otra cosa que pueda estar relacionada de forma remota.

    Una vez en ese punto, me pareció más efectivo trabajar con construcciones de alto nivel, como Casos de uso, que tienden a ser agradables para todos, pero aún así es fundamental hacer preguntas específicas. Si comienza con "¿Cómo factura a sus clientes?" , te espera una reunión muy larga. Haga preguntas que impliquen un proceso en lugar de desmentir el proceso desde el principio: ¿Cuáles son las líneas de pedido? ¿Cómo se calculan? ¿Con qué frecuencia cambian? ¿Cuántos tipos diferentes de ventas o contratos hay? ¿Dónde se imprimen? Tienes la idea.

    Si pierdes un paso, alguien generalmente te lo dirá. Si nadie se queja, dése una palmadita en la espalda, porque acaba de confirmar implícitamente el proceso.

  • Aplazar discusiones fuera del tema .

    Como analista de requisitos, también desempeña el papel de facilitador y, a menos que realmente disfrute pasar todo el tiempo en las reuniones, debe encontrar una manera de mantener el rumbo. Irónicamente, este problema se vuelve más pernicioso cuando finalmente no que la gente hable. Si no tiene cuidado, puede descarrilar el tren por el que pasó tanto tiempo preparando las vías.

    Sin embargo, y aprendí esto de la manera difícil hace mucho tiempo, no puedes decirle a la gente que un problema es irrelevante . Obviamente es relevante para ellos , de lo contrario no estarían hablando de eso. Su trabajo consiste en hacer que la gente diga "sí" tanto como sea posible y colocar una barrera como esa simplemente lo empuja al territorio de "no".

    Este es un delicado equilibrio que muchas personas pueden mantener con "elementos de acción", básicamente una cola genérica de discusiones a las que prometieron volver en algún momento , normalmente etiquetadas con los nombres de las partes interesadas que pensaron que era realmente importante. Esto no es solo por el bien de la diplomacia: también es una herramienta valiosa para ayudarlo a recordar lo que sucedió durante las reuniones y con quién hablar si necesita aclaraciones más adelante.

    Diferentes analistas manejan esto de diferentes maneras; algunos como la pizarra pública o el registro de rotafolios, otros lo golpean silenciosamente en sus computadoras portátiles y analizan suavemente otros temas. Cualquier cosa con la que te sientas cómodo.

  • Necesitas una agenda

    Esto probablemente sea cierto para casi cualquier tipo de reunión, pero es doblemente cierto para las reuniones de requisitos. A medida que avanzan las discusiones, las mentes de las personas comienzan a perderse y comienzan a preguntarse cuándo llegarán a las cosas que realmente les importan. Tener una agenda proporciona cierta estructura y también lo ayuda a determinar, como se mencionó anteriormente, cuándo necesita diferir una discusión que se está saliendo del tema.

    No camine allí sin tener una idea clara de qué es exactamente lo que desea cubrir y cuándo . Sin eso, no tiene forma de evaluar su propio progreso, y los usuarios lo odiarán por siempre correr mucho tiempo (suponiendo que no lo odien por otras razones).

  • Burlarse de él

    Si usa PowerPoint o Visio como herramienta de maqueta, sufrirá el problema de que se vea demasiado pulido . Es casi un valle misterioso de interfaces de usuario; las personas se sentirán cómodas con dibujos de servilletas (o dibujos generados por computadora que parecen dibujos de servilletas, usando una herramienta como Balsamiq o Sketchflow ), porque saben que no es real, la misma razón por la que las personas pueden ver personajes de dibujos animados. Pero cuanto más empiece a parecerse a una interfaz de usuario real, más personas querrán elegirla y tocarla, y más tiempo pasarán discutiendo sobre detalles que en última instancia son insignificantes.

    Definitivamente, haga simulacros para evaluar su comprensión de los requisitos ( después de las etapas de análisis iniciales), son una excelente manera de obtener comentarios muy rápidos y detallados, pero manténgalos fijos y no se apresure a burlarse hasta que usted ' estamos bastante seguros de que estás frente a frente con tus usuarios.

    Tenga en cuenta que una maqueta no es una entrega , es una herramienta para ayudar a comprender. Del mismo modo que no esperaría ser cautivo de su simulacro al hacer el diseño de la interfaz de usuario, no puede suponer que el diseño está bien simplemente porque le dieron el visto bueno a su maqueta. He visto simulacros utilizados como una muleta, o peor, una excusa para eludir por completo los requisitos; Asegúrate de no hacer eso. Regrese y convierta ese simulacro en un conjunto real de requisitos.

  • Se paciente.

    Esto es difícil de creer para muchos programadores, pero para la mayoría de los proyectos no triviales, no puedes simplemente sentarte una vez y elaborar una especificación funcional completa. No solo estoy hablando de paciencia durante una sola reunión; El análisis de requisitos es iterativo de la misma manera que lo es el código. El Grupo A dice algo y luego el Grupo B dice algo que contradice totalmente lo que escuchó del Grupo A. Luego, el Grupo A explica la inconsistencia y resulta ser algo que el Grupo C olvidó mencionar. Repetir 500 veces y tiene algo más o menos parecido a la verdad .

    A menos que esté desarrollando una pequeña aplicación CRUD (en cuyo caso, ¿por qué molestarse con los requisitos?), No espere obtener todo lo que necesita en una reunión, o dos, o cinco. Vas a estar escuchando mucho, y hablando mucho, y repitiéndote mucho. Lo cual no es una cosa terrible, eso sí; Es una oportunidad para establecer una buena relación con las personas que inevitablemente van a firmar su entregable.

  • No tengas miedo de cambiar tu técnica o improvisar.

    Diferentes aspectos de un proyecto en realidad pueden requerir diferentes técnicas de análisis. En algunos casos, el UML clásico (diagrama de caso de uso / actividad) funciona muy bien. En otros casos, puede comenzar con KSI de negocios, o hacer una lluvia de ideas con un mapa mental, o sumergirse directamente en maquetas a pesar de mi advertencia anterior.

    La conclusión es que debe comprender el dominio usted mismo y hacer su tarea antes de perder el tiempo de otra persona. Si sabe que un departamento o componente en particular solo tiene un caso de uso, pero es increíblemente complicado, omita el análisis de casos de uso y comience a hablar sobre flujos de trabajo o flujos de datos. Si no usaría la misma herramienta para cada parte de la implementación de una aplicación, ¿por qué usaría la misma herramienta para cada parte de los requisitos?

  • Mantén la oreja en el suelo.

    De todos los consejos y sugerencias que he leído para el análisis de requisitos, este es probablemente el que se pasa por alto con mayor frecuencia. Sinceramente, creo que he aprendido más de espionaje y ocasionalmente de conversaciones de enfriadores de agua de las reuniones programadas.

    Si está acostumbrado a trabajar de forma aislada, trate de ubicarse donde se encuentra la acción para poder escuchar la charla. Si no puede, simplemente haga rondas frecuentes, a la cocina o al baño o donde sea. Descubrirá todo tipo de cosas interesantes sobre cómo funciona realmente el negocio al escuchar lo que la gente se jacta o se queja durante sus descansos para tomar café y fumar.

  • Finalmente, lee entre líneas .

    Uno de mis mayores errores en el pasado fue estar tan centrado en el resultado final que no me tomé el tiempo para escuchar lo que la gente decía . A veces, la mayoría de las veces, puede parecer que la gente está parloteando sobre nada o insistiendo en algún procedimiento que le suena completamente inútil, pero si realmente se concentra en lo que dicen, se dará cuenta de que realmente existe un requisito enterrado allí, o varios.

    Por cursi e insípido que parezca, el Five Whys es una técnica realmente útil aquí. Siempre que tengas esa reacción instintiva de "eso es estúpido" (no es que alguna vez lo digas en voz alta), detente y conviértela en una pregunta: ¿Por qué? ¿Por qué esta información se vuelve a escribir cuatro veces, luego se imprime, se fotocopia, se escanea, se vuelve a imprimir, se fija en un tablero de partículas, se toma con una cámara digital y finalmente se envía por correo electrónico al gerente de ventas? No es una razón , y es posible que no sabe lo que es, pero es su trabajo para averiguar. Buena suerte con eso. ;)

Aaronaught
fuente
44
¡+1 por ser una de las respuestas más exhaustivas que he visto en Programmers SE!
Morgan Herlocker
19

Si no puede sacarles algo, escríbalo y apruebe. Es mucho más fácil para las personas no técnicas decir 'no, no me gusta' que 'así es como debes hacerlo'.

Muchas veces lo que quieren y lo que te dicen son dos cosas muy diferentes. Tómese un tiempo para escribir un primer borrador de la especificación con la información que conoce actualmente. Pídale a los interesados ​​que lo lean y lo aprueben. Cuando lo lean, lo más probable es que vean cosas que no les gustan o con las que no están de acuerdo. Obtenga sus comentarios y luego revíselos.

Si hay algo en lo que podría ir de una forma u otra, en línea ambas opciones y haga que el tomador de decisiones tome una decisión. No los dejes solos hasta que lo hagan.

En cuanto a los prototipos, haga maquetas de pantalla y explique cómo funcionarían las cosas. Una vez más, ver algo les ayuda a visualizar lo que está sucediendo. Lleve nuevas maquetas de pantalla a las reuniones y obtenga respuestas.

En el pasado, en realidad abrí FireBug y agregué el cambio que el cliente había solicitado justo en frente de ellos para que pudieran ver cómo se vería. Me dieron su opinión, tomé una captura de pantalla y luego implementé los cambios. Realmente les gustó poder ver cómo se vería el cambio, y me gustó porque fue rápido y obtuve mi respuesta en esa reunión ... no en la próxima.

Tyanna
fuente
2
+1. Con frecuencia, la técnica del hombre de paja es la única forma de hacer que los usuarios finales piensen en lo que hacen: su trabajo es tan automático para ellos que en realidad les resulta difícil pensar en ello.
DaveE
Sinceramente, creo que cualquiera (incluidos los programadores) puede dar requisitos más fácilmente como un "no, no me gusta. Quiero que esto cambie" en lugar de "Quiero esto". Creo que ayuda a centrarse en la tarea inmediata en lugar de tratar de pensar en todo el proyecto a la vez
Earlz
+1 por hacer que digan "No, no me gusta eso" en lugar de "Quiero esto". Si una empresa no sabe exactamente lo que quiere, este es el enfoque que trato de tomar.
Rachel
11

Haga que hablen más sobre su negocio y menos sobre las aplicaciones. Descubra cuáles son los problemas reales: los informes de fin de mes tardan demasiado, los errores de entrada de datos, han superado su aplicación actual, el crecimiento de la empresa se está yendo de las manos.

Supongo que estas reuniones son con las personas que compran, pero no con las personas que realmente harán el trabajo relacionado con la aplicación. Pregunte si puede reunirse con algunas de estas personas. Pueden mostrarle cómo se hacen realmente las cosas. Asegúrese de tratar con clientes que han presupuestado su tiempo y el costo.

Vea si tienen algún informe que estén usando o quieran usar actualmente. Obviamente, no puede crear el informe si no recopila los datos correctamente. Tienen que estar haciendo algo a menos que esta sea una línea de negocios que aún no hayan comenzado.

Muchos tienen estas nociones generales de que usted es el programador, por lo que sabe cómo construir todos los programas. Los sitios de comercio electrónico son todos iguales, ¿verdad?

Empieza pequeño. Desafortunadamente, hasta que tengas algo delante de ellos, el proceso simplemente no se registra. Si no tienes nada por lo que pasar, solo fingelo.

JeffO
fuente
Jeff tiene razón. Haga que hablen sobre el problema comercial real que necesitan solucionar. Luego, invente algo que pueda hacerse rápido y barato. Si cumple con eso, nunca tendrá hambre.
Christopher Mahan
+1 para "Haz que hablen más sobre su negocio y menos sobre las aplicaciones". Esa es una regla de oro.
DPD
8

Mucho de esto tiene que ver con las habilidades interpersonales genéricas y cómo se comunica con el cliente en primer lugar. No hay mucho que pueda decir sobre eso, más allá: asegúrese de explicar el proceso como uno interactivo, donde también espera comentarios y esfuerzo por parte de los clientes.

Específicamente para el escenario que describió, aquí hay algunos consejos más: comience describiendo lo que le resultaría útil tener, y proporcione vehículos para describir la información en términos que no requieren especialización técnica o conocimiento:

  • Historias de usuarios / casos de uso Solicite descripciones detalladas de lo que los usuarios esperan hacer, qué información necesitan para hacerlo y qué debe y puede esperar que los usuarios ingresen ellos mismos. Una vez que tenga esta información, revísela con ellos y asegúrese de que todo esté cubierto de historias: no debe haber nada que vaya a entrar en la aplicación, donde no tiene historias que cubran lo que el usuario hará allí.

  • Demostraciones convincentes ¿Qué es más importante para ganar clientes? ¿Qué partes del programa o funcionalidad deben destacarse y deben pulirse por completo? ¿Me puede proporcionar una demostración de maqueta, usando notas para publicar o cajas de cartón u otros sustitutos, que le gustaría tener trabajando?

  • Información de mercado / competitiva Para cada historia de usuario, ¿qué estamos haciendo que sea similar a nuestros competidores? ¿Diferente? ¿Qué historia cuentan nuestros competidores, y estamos tratando de copiar / emular / mejorar / innovar / ser intencionalmente diferente?

  • Preguntas abiertas ¿ Cuál, de los requisitos y el diseño, es información de la que está seguro y qué es un experimento? ¿Dónde vamos a probar alternativas para ver cuál funciona? Si está buscando múltiples alternativas y solo nos ha dicho una, ¿cuáles son las otras que está considerando?

Luego, dibuja algunos límites:

  • No me impongas restricciones técnicas . Una persona de negocios no debería decirle "use Windows porque es mejor que Linux". Sin embargo, pueden proporcionar instrucciones en la línea de "todo nuestro mercado objetivo usa Windows, nuestra aplicación tendrá que ejecutarse en Windows para tener éxito"

  • No se preocupe por el diseño Especialmente si se trata de personas orientadas a las ventas o al marketing, tenderán a atascarse con problemas de diseño. Nuevamente, reduzca el alcance de la información a lo que se especializan: "el azul es más hermoso aquí" probablemente no sea apropiado. "Nuestro competidor está usando un tema de color azul, y ha existido desde los años 80, para porciones de nuestro programa donde no estamos innovando, deberíamos usar un esquema azul para comunicar que no somos nuevos", probablemente sea apropiado. "El nombre debe estar en la parte superior de la pantalla" probablemente no sea apropiado, pero "la información más importante en esta página es el nombre del usuario y el saldo de la cuenta bancaria", probablemente sí. Asegúrese de que un diseñador participe en la traducción de estos requisitos a una interfaz de usuario.

  • Anote las decisiones Preferiblemente, conviértalas en contratos u otros compromisos que haga. Sin embargo, recuerde que una decisión que el cliente no comprende, no vale la pena el papel en el que está escrita. Un cliente que cierre sesión en "la aplicación se ejecutará en el puerto 1521" no vale tanto como el cliente que cierre sesión en "la aplicación se ejecutará en un puerto personalizado y configurable, que puede requerir una configuración especial para firewall y seguridad cuando se implemente "

Desde su punto de vista, para alentar el proceso a continuar:

  • Proporcione comentarios al mismo nivel de abstracción Esto es general, por ejemplo, para las unidades: si el cliente habla de un volumen mensual de usuarios, no responda en gigabits de ancho de banda. O, para casos de uso: describa la funcionalidad en términos de casos de uso de trabajo, en lugar de módulos o correcciones de errores o características.

  • Proporcione una comunicación significativa. Exprese las preguntas que tenga y la información adicional que haya descubierto o que esté buscando, en términos de la información que se le proporcionó. "Vamos con Linux" es probablemente una respuesta pobremente escrita, mientras que "nuestras pruebas muestran que la aplicación se ejecuta sin problemas cuando se aloja en máquinas Linux y se accede con IE en Windows" podría ser más apropiado.

  • Iterar rápidamente Para mantener al cliente comprometido, proporcione actualizaciones e iteraciones rápidas y significativas. Las especificaciones y la información que no estaban disponibles o eran fáciles de obtener cuando comenzó el proceso pueden requerir mucho esfuerzo por parte de su cliente, quien probablemente le esté pagando, mientras que usted no les está pagando por ninguno de sus trabajos. Lograr que el cliente se involucre e invierta en el proceso puede ayudar cuando el trabajo termina siendo algo en lo que tienen que dedicar tiempo y esfuerzo.

blueberryfields
fuente
5

Sus clientes, los empresarios, pueden tener algún tipo de problema, desear algún tipo de solución técnica, pero tienen poca idea de cómo podría funcionar la solución y, por lo tanto, tienen poca idea de cómo especificar cualquier solución potencial. Si es así, el rol que falta es el de un analista de soluciones de negocios, que puede estudiar al cliente, sus problemas, sus flujos de trabajo, etc., y cómo cualquier solución posible podría adaptarse a sus procedimientos corporativos, cultura, etc., así como si alguna Una solución particular podría ser factible de implementar a tiempo, por debajo del presupuesto, etc. Esta puede ser una función altamente interdisciplinaria, que requiere cierto conocimiento de las prácticas comerciales (derecho, contabilidad, logística, etc.), la psicología del usuario y la tecnología de software.

Parece que quiere obligar al cliente a ser su propio analista de soluciones comerciales. Puede que este no sea un papel en el que tengan suficiente experiencia para garantizar una especificación razonable. Y parece que tampoco quieres tomar este papel. Si ni usted ni su cliente tienen la experiencia para desempeñar este papel, es posible que no tenga todas las personas necesarias para un proyecto exitoso.

A veces, un montón de prototipos rápidos con los que el cliente puede jugar puede ser la única forma de descubrir experimentalmente y converger en algún tipo de solución utilizable para las necesidades del cliente (sonoras y sordas). Esto puede o no ser adecuado para cualquier tipo de contrato no abierto.

AGREGADO: Si intenta forzar un documento de requisitos de los clientes que no tienen la experiencia requerida, esto podría ser una gran señal de alerta que indica un desastre inminente.

hotpaw2
fuente
3

No solicite requisitos de IU o datos, solicite requisitos de funcionalidad.

Pregúnteles qué quieren que haga la aplicación. Pídales que analicen cómo les gustaría usar la aplicación. Deje los detalles como la interfaz de usuario, los datos, etc., al principio.

He descubierto que a menudo los usuarios no saben lo que quieren en términos de IU o datos, pero sí saben lo que quieren en cuanto a funcionalidad. Por ejemplo, me dirán "Quiero iniciar sesión y ver toda la información del cliente". No entres en cómo se verán las pantallas o qué datos quieren, solo obtén la funcionalidad de ellas.

Una vez que tenga eso, haga una maqueta rápida (me gusta Balsamiq ). Simplemente asuma cuál será la IU / Datos, y no pase mucho tiempo en ello. Luego lleve esa maqueta al Cliente. A partir de ahí, pueden decirle "no necesitamos estos campos" o "En realidad queremos una lista de números de teléfono, no solo uno", o "esto debería ser un menú desplegable, no un cuadro de lista".

Una vez que tenga el punto de partida, es mucho más fácil desarrollar los datos y la interfaz de usuario, y creo que determinar la funcionalidad es el mejor punto de partida.

Rachel
fuente
2

Le sugiero que primero trate de enfocarlos en el proceso comercial. Haga que definan, ya sea en un documento o en una discusión, cómo hacen actualmente las tareas que su software manejaría. Luego enfóquese en qué partes del proceso les gustaría ver cambiadas (la razón por la que quieren su software). Úselo como punto de partida para discutir qué otras partes del proceso podrían mejorarse, o incluso eliminarse por completo, utilizando su software.

Si su cliente no está acostumbrado a proporcionar requisitos de software, su equipo debe redactar los requisitos para ellos. Espere pasar por varias revisiones, pero al menos debe proporcionarles un documento inicial para ayudar a comunicar lo que está buscando.

Una vez que tenga una buena idea de los requisitos funcionales del proceso de resultado final esperado que incorporará su software, puede comenzar a redactar maquetas de las interfaces. Si desea dejar que lo apuñalen primero, puede hacerlo, pero por lo general es mejor proporcionar las ideas iniciales y dejar que las modifiquen. No necesita un código funcional para esto. Las capturas de pantalla de las interfaces de usuario en desarrollo, las representaciones HTML de los diseños que usan texto de relleno estático, o incluso los dibujos (si tiene un artista decente en el personal) podrían usarse para las discusiones iniciales de la interfaz de usuario.

Una vez que haya pasado por un par de revisiones, y todos estén de acuerdo con lo que se presenta, ¡ obtenga la aprobación del cliente por escrito! No importa cuánto resistan, este paso es crucial. Es posible que tenga que asegurarles que la firma de los requisitos no significa que no puedan hacer más aportes al proyecto (dependiendo de la naturaleza de su relación con el cliente), en cuyo caso debe describir cómo las revisiones de los requisitos se manejará (por ejemplo, sujeto a revisión y aprobación, se enviará a una versión posterior, se valorará por separado como una mejora, etc.).

Beofett
fuente
1

Les diría que desarrollarán el programa característica por característica. Hasta una próxima reunión, digamos que en 1-2 semanas va a trabajar X número de funciones. Esto podría ser 1, 2, 3 o más.

Digamos que comenzará desarrollando primero la funcionalidad más importante. Debe comenzar con las funciones principales. Digamos que está haciendo un cajero automático (por el argumento). Dígales, ok, el primero (o el siguiente) en la lista de características más importantes es solicitar la fecha de nacimiento del usuario como confirmación al realizar un retiro grande (sustituya por una funcionalidad en su proyecto que sabe que no es una de las principales características principales que se implementaría a continuación).

Esta ingenua afirmación debería provocar una reacción del cliente. Cuando les pregunte qué harían después. ¿Cuál es la característica más importante que aún no se ha hecho en el proyecto y es mejor que la que mencionó?

Al reutilizar el ejemplo anterior, el cliente puede decirle que está validando la tarjeta del usuario o haciendo depósitos, etc. Luego, pídales que lo definan por usted. No tenga miedo de hacer muchas preguntas, incluso preguntas ingenuas si es necesario.

Después de haber discutido esto con el cliente, debe tener algunos requisitos para esta única funcionalidad. Podría definir más de una pieza de funcionalidad, pero yo mantendría el número muy bajo.

En 1-2 semanas, vuelva a reunirse con el cliente para presentarle lo que ha hecho y obtener su opinión al respecto. Preséntelo al cliente y obtenga su opinión si es necesario cambiar o agregar algo.

Luego repita el ejercicio anterior para el siguiente grupo de características. Continúe con este proceso de manera iterativa durante el resto del proyecto, asegurándose de mantenerse en contacto con el cliente y de reunirse a intervalos regulares para mostrar su trabajo y planificar lo que se hará a continuación (siempre con trozos pequeños).

Gilles
fuente
1

Estás hablando de ingeniería y no les importa eso, en mi experiencia; tampoco quieren comprometerse a hacer nada (especialmente por escrito) y realmente no quieren hacer ningún trabajo, aunque eso no es particular para los tipos de negocios: nadie quiere hacer un montón de trabajo en un dominio que ellos No sé y no me importa saberlo. Ese es tu trabajo (en sus mentes).

Lo que hago es esto: hablarles sobre lo que quieren, en su idioma de dominio. No podrán ni estarán dispuestos a ser precisos de la manera que esperarías (casos de uso, diseño por contrato, etc.) pero puedes ser preciso al traducir su tipo de lista de desideratas vaga y ventosa en diseño real, y , en consecuencia, un documento de diseño. Si te asignan el tiempo para hacerlo formalmente, mucho mejor. De lo contrario, cree uno improvisado e informal en el que pueda iterar.

Esta no es una respuesta súper feliz, lo sé, pero he encontrado que la vida es más fácil cuando dejé de intentar que los clientes (o cualquiera) realmente ingresaran a mi universo y hablaran mi idioma. A pesar de que termino haciendo las mismas preguntas una y otra vez a medida que llego a un acuerdo con el dominio y los requisitos (que a menudo solo el cliente entiende vagamente), lo contrario es que las discusiones no son frustrantes. De hecho, las relaciones con los clientes tienden a fortalecerse, supongo porque a las personas les gusta hablar de lo que saben, y terminas entendiendo su punto de vista de manera más completa de lo que podrías si te dejaras con un enfoque de diseño más riguroso.

shanusmagnus
fuente
1

Sin un gerente que sepa algo de programación, nunca he tenido un poco de éxito en esto. Más bien, el único enfoque que he encontrado que funciona es observar lo que realmente está sucediendo.

Loren Pechtel
fuente
1

Supongo que los programadores tienen una mejor capacidad para imaginar cómo se verá un programa antes de que se construya. La creación de prototipos en papel puede ser una técnica efectiva para superar esto. Los prototipos en papel son relativamente "baratos" de construir. Al guiar a sus clientes a través de un prototipo simple en papel, demuestra la necesidad de pensar "de la manera enfocada necesaria para reunir los requisitos verdaderos". Y brinda una forma específica de enfocarse: ¡realmente tratar de usar la aplicación que está en su cabeza!

Además, puede iterar muy rápidamente desde su mejor estimación de lo que el cliente quiere a la aplicación que realmente desea, pero tiene dificultades para transmitir. Es más fácil mirar un prototipo y decidir por qué no coincide con la aplicación ideal en su cabeza que enumerar todos los requisitos de esa aplicación.


Trabajé en un sitio web donde los otros socios estaban más orientados a los negocios. Seguí pidiendo requisitos específicos de muchas maneras diferentes. Su respuesta fue básicamente: "Tú eres el chico de la computadora, esperamos que descubras esto. Preferimos hacer las cosas de negocios". No les preocupaban los detalles específicos ... ¡ hasta que se lanzó la primera versión! Estaban mucho más entusiasmados con los requisitos después del lanzamiento, dando todo tipo de comentarios que me habrían ahorrado mucho tiempo por adelantado cuando lo había pedido inicialmente.

Así que decidí que la iteración es la clave: construir la versión mínima viable y mejorarla en función de los comentarios. Si los requisitos son demasiado vagos y generales, tome decisiones basadas en "¿Cuál es la implementación más simple y rápida?" (salvo el diseño / arquitectura fundamental del sistema). No sopeses demasiado los supuestos basados ​​en lo que crees que es "correcto". Simplemente terminará perdiendo el tiempo porque es muy probable que su proceso de pensamiento sea diferente al de sus clientes.

Por ejemplo: el cliente solicita la función de carga de imágenes; no elaborará más requisitos específicos. Construirlo lo más ingenuamente posible. Aunque piense que es lo que el cliente querrá, no agregue funciones automáticas de recorte, cambio de tamaño y miniaturas. Deje que el cliente vea la versión mínima viable (que puede desarrollar mucho más rápido que la versión no ingenua), y los requisitos comenzarán a fluir como "Esto es lo que está mal con la versión actual". Registre cada uno de estos nuevos requisitos como "errores". Puede priorizar por cuáles son más fáciles / más beneficiosos.

En realidad me pasó a mí: solicitud de formulario de registro con un código de invitación especial. La idea era crear un proceso de registro viral donde cada nuevo usuario recibiera algunas invitaciones. Pasé mucho tiempo asegurándome de que los códigos fueran únicos y que solo se pudieran usar una vez. También puse mucho esfuerzo en hacer que el proceso sea lo más sencillo posible haciendo que los campos de nombre y apellido sean opcionales. Al final, los socios pidieron estos cambios: nombre y apellido obligatoria, "código" de inscripción válida si nada se ha introducido en absoluto en el campo ... suspiro ~

Leftium
fuente