Tips para comunicar un desarrollo

Una introducción de como decirle a el/la desarrollador/a (de software) lo que necesitas que haga

Pruebas funcionales

Una de las cosas que, según mi experiencia, retrasa un desarrollo o no permite cumplir con los tiempos esperados o no nos permite hacer una vida feliz… etc. Usualmente es una de las cosas más «sencillas», algo que los humanos supuestamente deberíamos aprender desde muy temprana edad. Pero si algo he aprendido es que, una cosa es saber hablar y otra MUY !!!!!! diferente es comunicarse.

Hoy día con los trabajos remotos, las oficinas trasatlánticas, o el simple hecho de no querer hacer reuniones tras reuniones, la comunicación se ha convertido en una herramienta que pocas personas tienen y que a muchas nos falta.

Esta falta de conocimiento en el arte/ciencia (para mí) de comunicar que es lo que quiero/necesito, genera inconvenientes, y se agudiza cuando esta comunicación debe ser escrita (nuevamente, una cosa es saber escribir y otra es saber comunicarse).

Los documentos se han vuelto imprescindibles en casi cualquier trabajo, permiten que podamos recuperar nuestros pensamientos o apreciaciones, almacenar conocimiento y re-usarlo, etc. Pero, el pequeño detalle esta en hacerlo bien. Cuando esto falla, y hablando de los desarrollos de software, la consecuencia puede ser una larga lista de aclaraciones o peor aún reuniones para explicar la documentación (WTF?!!).

Por esto, y aunque lo siguiente solo pretende ser una introducción o un intento de explicar la percepción de una sola desarrolladora, pudiera de algún modo ayudar a desenredar la maraña que se crea al intentar hacer una documentación de requerimiento para un desarrollo de software, por una persona que no es desarrolladora de software.

Aclaración: acá voy a usar para los ejemplos e imágenes a Odoo ya que es con lo que actualmente estoy trabajando, pero en general esto debería servir para cualquier otra herramienta o desarrollo.

Antes de crear un requerimiento ten en cuenta lo siguiente:

  • Los términos que usa el cliente probablemente no son conocidos para los desarrolladores, intenta usar términos conocidos, para este caso lo más recomendable es usar términos relativos a la herramienta/software/aplicación que se esta usando.
  • En caso que sea necesario usar términos no conocidos por los desarrolladores, realiza una explicación breve y lo más precisa posible sobre el término y como se refleja a en la herramienta/software/aplicación que se esta usando.
  • Para la búsqueda de datos siempre menciona el modelo (o tabla de la base de datos) donde se debe realizar la búsqueda, o al menos la ruta de ubicación del o las módulos/vistas y/o campos que son necesarios mostrar. Ejemplo: es necesario que en una vista lista se muestren los proveedores por cada producto, entonces, “mostrar en una vista lista todos los proveedores relacionados con cada producto que se encuentran en Inventario->Productos-> seleccionar cualquier producto -> solapa Compra -> Proveedor” si se usa el “Modo Desarrollador” (en Odoo por ejemplo) se puede ver el nombre técnico del campo, al colocar el cursor sobre el campo, en este caso “seller_ids” que es una lista dentro del formulario de producto.
  • Enfocate en lo que se necesita desarrollar y el resultado esperado. Preguntas como: ¿De donde obtengo los datos que necesito? ¿Como necesito que se muestren los datos? Si hay algún calculo, ¿como debe realizarse ese cálculo, qué datos están involucrados? pueden ayudar a realizar un requerimiento más efectivo.
  • Si es posible, coloca alguna prueba que pueda realizarse para comprobar el resultado, puede ser una lista de pasos a seguir o la realización de cálculos y sus resultados. Por ejemplo: 
    1. Crear una orden de venta
    2. Seleccionar el campo»Tarifa»
    3. Confirmar la orden de venta
    4. Resultado: se debe enviar un corro electrónico al administrador de ventas informando el uso de la tarifa.
  • Asegurate, en lo posible, que el requerimiento pueda ser entendido por cualquier persona que tenga acceso. Usa palabras simples, y limita la posibilidad de interpretaciones. Un requerimiento debe ser entendido de una única forma.
  • Repite si es necesario. Escribir: El campo X debe ser insertado en la vista de formulario de la factura, y luego el valor del campo X debe pasar a la vista de formulario del pago. NO te guíes por las normas de escritura tradicional, acá lo importante es que todo quede explicito.
  • No intentes parecer genio/a. Las palabras rebuscadas solo hacen la documentación mas complicada y propensa a interpretaciones. Usa palabras simples y de uso cotidiano siempre que sea posible.
  • Explica lo menos posible. Si quieres o es necesario hacer una explicación del por que del desarrollo puedes hacerlo al inicio como una introducción. Pero el exceso de explicaciones solo hacen la documentación mas larga y tediosa, si puedes usar imágenes, o cualquier elemento visual que pueda explicar lo que necesitas siempre será mucho mejor.

A continuación se presenta un ejemplo sobre un requerimiento (de Odoo) de un cliente y su traducción a un requerimiento de desarrollo.

Requerimiento del cliente:

Se debe tener un campo en la orden de venta donde se coloque la forma en que se realizo el contacto con la empresa o el vendedor, este campo se debe poder ver en la vista de ordenes de venta, además es necesario poder verlo también en la factura.

Una de las preguntas que puede surgir a partir del requerimiento del cliente, es si el campo debe ser de selección o un campo de texto ingresado por el usuario. Quizás lo mejor seria una campo de selección con posibilidad de crear nuevas formas de contacto que pueden ser ingresadas por el Administrador de ventas (o el rol definido por el cliente), en este caso se puede pedir al cliente que defina algunas formas iniciales de contacto (si ya tiene algunas) o dejar el modelo vacío para ingresar los valores luego. Además, en que vistas debe ser visible el campo?

Otra cuestión a aclarar es Presupuesto vs Orden de Venta, el campo debe ser asignado en el Presupuesto y puede o no ser modificado al confirmar la orden? estos casos son importantes definirlos ya que si no se define y se asume que el campo debe ser editable podría ser modificado en cualquier momento. Y por último, el campo es obligatorio? (o cualquier otra propiedad que debe ser tomada en cuenta al crear el campo)

Un campo de selección permite un mejor manejo de la información, ya que limita las opciones y los errores de tipeo, lo que hace posible el filtrado, agrupación, y búsqueda.

Requerimiento de desarrollo:

Crear un campo de selección en el Presupuesto de venta y visible en la Orden de venta y Factura, que defina el contacto con la empresa o vendedor. Este campo de selección será alimentado por su propio modelo para poder ingresar los valores de la selección. Algunos valores iniciales serán: Teléfono, correo electrónico, In situ, página web. Este campo debe ser visible en la vista lista de Presupuestos y Ordenes de Venta (notan como repetí la palabra campo?)

Nombre del modelo: Contacto de venta

Nombre del campo: Contacto de venta, no obligatorio

  1. Agregar y modificar “Contacto de venta”: se debe crear una opción en el menú Ventas -> Configuración para gestionar el campo.
  1. Formulario de “Contacto de venta”
  1. Presupuesto de Venta: el campo debe ser seleccionado en el presupuesto de venta
  1. Orden de Venta: el campo debe poder verse en la Orden de Venta pero no modificarse luego de confirmada la orden (solo lectura).
  2. Factura: el campo debe solo verse en la factura, previa selección en la orden de venta (solo lectura)

Espero puede servir de algo sobre todo a todas aquellas personas que día a día tienen que generar documentos y documentos, y cuyos esfuerzos muchas veces se ven frustrados por el no entendimiento de la otra parte.

Por mejores comunicaciones y la paz entre desarrolladores/as y funcionales.

Anuncio publicitario

Un comentario sobre “Tips para comunicar un desarrollo

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s