Cómo explicarle a un cliente laico que construir un software es algo mucho más complejo que organizar simples campos de formulario y botones en la pantalla

Dales algo que sea solo un montón de campos y botones de formulario … pero que no haga nada. Luego pregúnteles qué creen que se necesitaría para convertir eso en algo que realmente funcione. Esto probablemente sería un buen paso para adoptar el enfoque de Noam Ben-Ami.

Después de un poco de eso, también puedes hacer una analogía. Lo que ves cuando conduces un automóvil es principalmente un tablero de instrumentos, además de varios controles que puedes alcanzar. Los diales y las agujas y tal vez el número digital ocasional, son análogos a los bits de información en la pantalla de una computadora. La rueda, los pedales, la palanca de cambios, el control del limpiaparabrisas, el control de los faros, los controles de audio, etc. son análogos a todos los cuadros de entrada de texto, casillas de verificación, botones de radio, etc. Pero el cliente seguramente sabe que necesita tener un motor, una transmisión, un radiador, una bomba de combustible, una bomba de refrigerante, ejes, ruedas, neumáticos, frenos, suspensión, etc. que funcionen correctamente … y que el diseño de estas brocas, especialmente para trabajar en armonía, es mucho más difícil que hacer un simple grupo de controles .

Explicar que el desarrollo de software es complejo se puede hacer con una buena metáfora. O una analogía inteligente. Pero convencer a la gente suele ser difícil.

Vi muchas buenas sugerencias y modelos publicados. El problema, en mi experiencia, la gente tiene que tener experiencia de primera mano para apreciar por qué el desarrollo de software es largo y complicado. Si no lo han pasado, entonces su explicación es solo un argumento. A menudo un argumento desagradable.

Algunas razones por las cuales los clientes no técnicos tienen problemas para comprender y / o aceptar que el desarrollo de software no se puede hacer de manera rápida y fácil:

  1. Porque no tienen nada con qué compararlo. La gente imagina “escribir código” de forma muy similar a escribir una tesis, un trabajo final o un libro. Estas obras terminan.
  1. ¿Su tesis de maestría necesitaba ser reescrita? Probablemente. Quizás muchas veces. Pero en algún momento se hizo.
  2. ¿Cuántas veces se tuvo que rediseñar “The Great Gatsby” para dar cuenta de tantos “Usuarios”? Nunca.
  3. ¿Tuvo que desechar y recrear su casa porque ya nadie puede encontrar casas de esta manera?
  • “Hice algo de programación cuando tenía 12 años, lo sé”. He escuchado esto más veces de lo que puedo creer. Pero los programas que hicieron cuando tenían 12 años, o los proyectos de clase en la escuela secundaria o la universidad no dieron ninguna idea sobre el desarrollo real de aplicaciones. Y menos aún en mantenibilidad.
  • Porque no quieren saberlo. Aceptar que el desarrollo de software no puede ser rápido y barato apesta. Significa cosas como:
    1. Sus necesidades no pueden ser satisfechas a tiempo para las necesidades del negocio.
    2. Sus necesidades no pueden satisfacerse en línea con los ingresos.
    3. Su idea puede no ser factible de la forma en que la imaginaron (que dependía de la tecnología para hacer cosas milagrosas sin costo alguno)
  • Porque en las películas toma algunas escenas. No estoy bromeando. En los programas de televisión y las películas, siempre hay un “hacker brillante” que hace algo increíble muy rápido y eso demuestra que es brillante. Entonces, las lecciones que aprendemos del entretenimiento son:
    1. Las personas brillantes pueden usar la tecnología para hacer que las cosas aparentemente imposibles sean fáciles, rápidas y geniales. Eso es lo que es la brillantez.
    2. Los “hackers brillantes” son comunes. En las películas y la televisión, siempre hay alguien “brillante” que no hace nada más con sus vidas y puede resolver fácilmente lo que el personaje principal necesita.
    3. Y están felices de hacerlo solo por el aprecio. Porque los tipos geek brillantes no tienen amigos (hecho televisivo irrefutable).
  • ¡Porque siempre hay un atajo!
    1. El fontanero me dice que realmente necesito nuevas tuberías. Bueno, ¿realmente lo necesito? ¿Hay alguna manera de que pueda pasar? ¿Por qué debo pagar por una solución que durará 25 años? Probablemente no viviré en la casa más de otros 5 años. Y cuando empuje al plomero, él vendrá con una curita.
    2. ¿No tienes tiempo para cocinar? Microondas una comida instantánea. O ordenar en.
    3. ¿No tienes ganas de hacer tu tarea? ¿Qué tal ese brillante hacker de la calle sin amigos …
  • Esta última razón me ha molestado: un “experto” les dice que es fácil.
    1. A veces, el “experto” está inventando la historia.
    1. Muchas de estas personas tienen “buenas intenciones”.
    2. Muchos tienen agendas políticas.
    3. Algunos son técnicos.
    4. Muchos no son técnicos.
  • Algunos de estos “expertos” son ingenuos
    1. a bordo de algo que parece similar pero que no experimentó de primera mano todas las dificultades.
    2. Algunos escucharon una historia de segunda mano
  • A veces, la experiencia proviene de ver una película con un “Hacker brillante”
  • No estoy describiendo a todas las personas que invierten en software. Pero, tristemente, estoy describiendo la mayoría. He trabajado con personas que invirtieron en soluciones de pirateo que luego les costaron. En el transcurso de un año corregimos la aplicación paso a paso y obtienen algo más cercano a lo que quieren y necesitan.

    Lamentablemente, en muchas de estas relaciones, las personas vuelven a exigir cosas dramáticas de manera rápida y económica. Las lecciones del pasado no se pegan y no están contentas con las tasas de progreso que solo un año antes fueron “increíbles”. Y acabamos de traer a este tipo que estaba en una empresa técnica y es un “experto”.

    Todas las razones anteriores realmente suman # 3 y # 5: sus objetivos comerciales son más alcanzables si el desarrollo de software es barato y fácil. Y siempre hay atajos en la vida, ¿no? Acabamos de ver esta película sobre un “Hacker brillante” …

    Evitaría seguir el camino de la explicación, porque hay una gran brecha de conocimiento entre usted y el cliente que debería llenarse para que cualquier explicación se entienda.

    Si ya está vinculado contractualmente con el cliente, supongo que existe una Declaración de trabajo que ya se ha firmado. Este SoW debe incluir estimaciones de trabajo.

    Si es una pregunta casual por parte del cliente, discutiría conceptos abstractos, como la cantidad de incógnitas que pueden conducir a requisitos implícitos que no se han considerado, etc.

    Si tiene la sensación de que la pregunta es más argumentativa o contradictoria, podría * intentar * una explicación abstracta al principio, pero en última instancia volvería a la Declaración de trabajo. Le diría al cliente que mi análisis de estimación ya se había completado, y tendría que tomarme un tiempo alejado del trabajo para darles un análisis detallado de por qué una característica específica tomará tiempo x para implementar.

    Si realmente se siente masoquista, puede dar detalles sobre cómo cada “botón” en la pantalla se traduce en x-cientos / mil líneas de código para realizar el trabajo. Los abruman con los detalles muy técnicos que creen que quieren escuchar.

    Cree una simulación simple de su software usando ladrillo y mortero. Supongamos que está creando un portal de comercio electrónico. Cree una simulación de una tienda – ladrillo y mortero y muestre las complejidades del sistema necesarias para automatizar todo.

    Autor: El Manifiesto Ágil en inglés

    Blog: Agile, Scrum, Kanban, Arquitectura de soluciones

    Twitter: @tjain

    Simple: les pido una especificación de lo que quieren. Y luego colabore con ellos para convertir su especificación en algo completo y para construir una especificación técnica de alto nivel que establezca el trabajo técnico necesario para reificar la especificación.

    Sin una comprensión clara y compartida de lo que hace el software, que pocas personas piensan detenidamente, no se puede entender cómo se desarrollará y entregará el software.

    Una vez, un amigo me preguntó cómo escribir una aplicación móvil: “¿Cómo se hace el icono? ¿Qué se necesita para que aparezca un icono?” Para él, una aplicación móvil * era * el ícono en el teléfono, como si fuera la parte difícil, y el resto fue fácil.

    Le dije: “El ícono es el asiento del inodoro. Puedes hacer un asiento de inodoro realmente agradable, y es bastante fácil. Pero hay una gran cantidad de fontanería y trabajo que debe estar detrás de él si realmente quieres usarlo”.