Tratar con el desajuste de la cultura del cliente / desarrollador en un proyecto ágil

11

Uno de los principios de ágil es ...

Colaboración del cliente sobre negociación de contrato

... otro es ...

Individuos e interacciones sobre procesos y herramientas

Pero tal como lo veo, al menos cuando se trata de interacción con el cliente, hay un problema fundamental:

Cómo piensa el cliente es diferente a cómo piensa un ingeniero de software

Eso puede ser una generalización, sí. Podría decirse que son los dominios de negocio en que esto no es necesariamente cierto --- éstos son pocos y distantes entre sí sin embargo. Sin embargo, en muchos dominios, el cliente típico es:

  1. Interesado en preocupaciones operativas diarias: tácticas de corto alcance ... no necesariamente estrategia;
  2. Es comprensible que solo se preocupe por la solución inmediata;
  3. Pensadores prácticos, no pensadores abstractos;
  4. Mucho más interesado en "hacer el trabajo" que considerar cómo la solución respaldará futuras preocupaciones.

Por otro lado, en el ideal , los ingenieros de software que practican ágil son:

  1. Gente que piensa mucho en la calidad;
  2. Las personas que aprecian cómo un poco de trabajo inicial puede ahorrar una tonelada de esfuerzo en el futuro;
  3. Pensadores analíticos experimentados.

Por lo tanto, parece haber una discrepancia cultural que tiende a inhibir la "colaboración con el cliente".

¿Cuál es la mejor manera de abordar esto?

Eric Smith
fuente
1
Conformación de condicionamiento operante - en.wikipedia.org/wiki/Shaping_%28psychology%29 - Sugerencia: es demasiado obvio si usa un clicker antes de darles una dona.
jfrankcarr
3
Quería votar esto. Pero luego leí los estereotipos que intentas poner en esto. También hay malos programadores que hacen clientes ágiles y buenos. Tal vez podría reelaborar su pregunta para incluir las dificultades que está teniendo en lugar de los estereotipos sesgados que tiene aquí ... Entonces, votaría la pregunta.
SoylentGray
3
sus estereotipos traicionan su opinión narcisista intolerante, no creo que nadie que piense de la manera en que lo hace tenga éxito tratando con cualquier cliente, ya ha tomado una decisión y tiene un sistema de creencias firme para reforzar su sesgo. Es solo pensar en actitudes chovinistas que dan mala fama al trabajo con ingenieros. Buena suerte con eso.
1
@Chad Esto puede ser un punto de vista útil para una pregunta, independientemente de si proviene o no de las ideas preconcebidas del autor de la pregunta. Pensar en cómo un buen ingeniero interactúa con un mal cliente es el caso relevante e interesante: se podría argumentar que no nos importa cómo los malos ingenieros manejan esto, ya que su producto será inferior de todos modos, y los buenos clientes obvian la necesidad de esta pregunta. Eso nos deja con el problema de cómo un buen desarrollador debe tratar con un mal cliente. Tal vez la redacción salió fuerte, pero la pregunta sigue siendo útil,
Chris Bye
@Slothsberry: entiendo que la pregunta podría tener un alcance para esos subconjuntos. Así no es como se escalonó. Lo leí ya que todos los desarrolladores que practican ágil son buenos y la mayoría de los clientes son malos.
SoylentGray

Respuestas:

27

Sin embargo, en muchos dominios, el cliente típico es:

  • Interesado en preocupaciones operativas diarias: tácticas de corto alcance ... no estrategia;
  • Solo preocupado por la solución inmediata;
  • Generalmente pensadores unidimensionales, no abstractos;
  • Principalmente interesado en "hacer el trabajo" en lugar de encontrar una solución duradera y de calidad.

Y para ser sincero, generalmente tienen buenas razones para pensar así. En primer lugar, están administrando un negocio, que debería generar ingresos hoy y mañana, no en un futuro lejano. En segundo lugar, no son expertos técnicos: no saben qué es posible y qué no, y cuáles son las consecuencias de las elecciones específicas de arquitectura / diseño / implementación. Esto es lo que sabemos.

Entonces la respuesta es, apenas sorprendente, la comunicación .

Deben comunicarse mucho, educarse mutuamente, hacerse entender el punto de vista de la otra parte, al menos a un nivel básico. Debe explicarles las consecuencias a corto y largo plazo de las posibles alternativas. Y necesitas usar un lenguaje que ellos entiendan .

  • Si dices "esto sería un truco, lo que hace que el código sea menos legible y extensible" , dicen "sí, lo que sea" .
  • Si dice "esto sería una solución a corto plazo, lo que haría más costoso el desarrollo y el mantenimiento a largo plazo y aumentaría el riesgo de introducir errores" , dicen "ja, consideremos" .
  • Y si dice "esta solución le costaría $ 100 ahora, pero introduce $ 500 de deuda técnica que deberá pagar con intereses tarde o temprano; OTOH, esta otra solución le cuesta $ 400 ahora y no deja deuda técnica; elija la que usted quieren " , dicen " ¡ahora estamos hablando! " .

OTOH pueden enseñarnos una o dos cosas sobre la perspectiva comercial. El negocio quiere soluciones utilizables y lo suficientemente buenas , apenas perfectas .. Y probablemente saben mejor que nadie que "lo perfecto es enemigo de lo bueno". Por lo tanto, debe tener en cuenta que nuestro trabajo es proporcionar soluciones a los problemas de nuestros clientes, en lugar de producir un software técnicamente perfecto. A veces estos dos convergen en lo mismo, pero más a menudo no. Esto puede ser visto como triste por muchos, pero es una realidad empresarial. Para mí, si logré resolver el problema de mi cliente y veo que les hizo la vida visiblemente más fácil, estoy tan feliz como ellos. OTOH si logré implementar el diseño perfecto que tenía en mente, pero la empresa se declara en bancarrota la semana siguiente, difícilmente sea una victoria para alguien, ¿verdad?

Un propietario de negocios sensato comprenderá, si usted les explica que usan su propio idioma, por qué es importante mantener limpio el software, escribir pruebas unitarias, refactorizar, etc. A pesar de que estos no parecen contribuir directamente en el corto plazo, son esenciales para el mantenimiento a largo plazo. Y los clientes sensatos se preocupan por el mantenimiento a largo plazo de su negocio, por lo que seguramente están dispuestos a invertir en él cuando vean el valor que genera su inversión. Sin embargo, tanto sus recursos como su tiempo son limitados, por lo que debe priorizar y centrarse en las cosas más importantes. Pero es importante solo si es importante para ambos .

Es posible que desee refactorizar el módulo A porque el código allí es simplemente horrible, y tiene una idea estupenda de cómo refactorizar el código para que sea conciso, elegante y limpio, utilizando un patrón de diseño sobre el que acaba de leer. Sin embargo, si ese módulo no se ha tocado durante años, y funciona de manera confiable, lo más probable es que se concentre en el módulo B, que se extenderá la próxima semana con una nueva característica muy importante, y contiene toneladas de errores ya.

Péter Török
fuente
3
Wow, ¿tienes clientes que realmente evitarían la deuda técnica? La mayoría de las que he tenido irían a '$ 100, sí, tomaré esa'.
sevenseacat
Bueno, esa es la parte difícil, ¿no? ¿Qué es "suficientemente bueno", y dónde comienzan a disminuir sus ganancias cuando considera pasar tiempo en la salud a medio y largo plazo del producto / sistema de su negocio? Yo diría que eso es algo para que un profesional haga una llamada.
Eric Smith
2
@Karpie, sí, hay clientes que han aprendido lo que realmente significa la deuda técnica (generalmente de la manera más difícil).
Péter Török
2
@EricSmith, sí, es una decisión confusa, sin una sola respuesta correcta. Los desarrolladores entendemos las consecuencias técnicas de las cosas; El cliente conoce el presupuesto y las limitaciones comerciales. Idealmente, decimos cuánto cuesta cada característica / tarea; El cliente prioriza en función del valor y el costo de cada uno. Siempre hay compromisos cuando necesita mantener el sistema en funcionamiento mientras soluciona los problemas más acuciantes uno por uno.
Péter Török el
3
Estoy de acuerdo con lo que está diciendo aquí, aunque me he encontrado con culturas de la empresa donde los usuarios se negaron a comunicarse. Tiene que ser una calle de doble sentido o no tendrá éxito. Solo bromeaba sobre usar donas para acondicionar en mi comentario anterior. A veces tienes que usar refuerzo positivo o incluso negativo para obtener participación.
jfrankcarr
4

Cómo se ve su cliente:

  • Tengo un proyecto que necesito hacer lo antes posible
  • Sé que mi negocio necesita
  • Necesito resolver el problema de una manera que no sea perjudicial para las prácticas comerciales actuales
  • Tengo un presupuesto limitado para hacer esto.

Por otro lado, ven a su grupo como:

  • Chicos que no entienden que están absorbiendo dinero de mi presupuesto.
  • No entiendo las necesidades de nuestro negocio.
  • Desea rediseñar todo aunque va a dificultar su implementación en el negocio.
  • Desea tener una solución ingeniosa cuando todo lo que tengo para el presupuesto es funcional y efectivo.

Su principal problema parece ser que ninguno de ustedes es entender lo que necesitan de la otra parte.

SoylentGray
fuente
3

Bueno, ante todo, Agile no es la solución para todos los problemas que tiene en su proyecto.

Cómo piensa el cliente es fundamentalmente diferente a cómo piensa un ingeniero de software

Si. A veces es verdad. Incluso hay casos en los que los clientes no saben qué y cómo quieren (es decir, los requisitos no están claros). Sin embargo, si eres ágil, obtienes el resultado después de cada sprint (por ejemplo, 2 semanas) y tienes la oportunidad de recibir comentarios de los clientes y asegurarte de que todos estén en la misma página. Esto ayuda a identificar y solucionar los problemas temprano, lo que internamente ayudará a generar confianza.

También hay un dicho, los usuarios son como niños locos, por lo que cuando piden una pistola y sabes que no es seguro, podrías considerar dar una pistola de juguete para calmarlos .

¿Cuál es la mejor manera de abordar esto?

Como ya he dicho, no hay una varita mágica que pueda resolver todos estos problemas . Debe comprometerse más con sus clientes para que haya una buena comprensión de lo que hacen los demás. Promueva la visita al sitio, comentarios abiertos, etc.

Asegúrese de que el propietario del producto y las partes interesadas asistan a las demostraciones de sprint y brinde sugerencias valiosas para mejorar el producto .

ManuPK
fuente
1

Si no tiene la aceptación del cliente, Agile puede ser casi imposible.

Al comprar, me refiero a obtener un porcentaje garantizado del tiempo de los representantes de un cliente por semana o mes. Este porcentaje variará según el proyecto.

Obviamente, tienen su trabajo diario, por lo que no se trata solo del representante del cliente en sí, sino de su gerencia el hacerles tiempo.

Por lo tanto, obtener un acuerdo de la gerencia del lado del cliente es clave para este problema

ozz
fuente
sin la compra del cliente en cualquier método será casi imposible
Ryathal
@Ryathal: bueno, pero es particularmente importante en la forma en que lo describo para Agile.
ozz
0

Recuerde que ágil no significa que el cliente esté involucrado en standups diarios o en algunos de los otros aspectos cotidianos de ágil. Ágil, desde la perspectiva del cliente, se trata de comunicación. Eso no significa que se estén comunicando con los ingenieros sobre los detalles de implementación.

Los clientes colaboran con el propietario del producto para obtener y dar retroalimentación constante. El tema es características, pero no cómo se implementan. ¿Estás entregando las características adecuadas? ¿Estás a tiempo? ¿Tienen requisitos cambiantes a los que necesita adaptarse?

Agile le ayuda a usted y a su cliente a responder esas preguntas.

Bryan Oakley
fuente