Algunos consejos de desarrollo de aplicaciones para evitarnos escribir documentación para nuestras aplicaciones, o reducirla a un mínimo

Cómo evitar escribir la documentación: la ayuda interna

Copyright © 2000 Ernesto De Spirito

Storage Library - Guarde la configuración de su aplicación

Índice

SMImport - Componentes VCL nativos para importar datos

Introducción

En un chiste de una edición pasada del Boletín para Desarrolladores definimos a la documentación como "lo primero que el usuario pide y la cosa que lee (si es que alguna vez la lee)." También pudimos haberla definido como "lo primero que un desarrollador olvida y la última cosa que está dispuesto a hacer (si es que está dispuesto a hacerla)."

Estas definiciones pueden sonar a broma, pero reflejan la pura realidad. Bien, las compañías no tienen problemas: tienen escritores técnicos a los que les pagan para escribir (y supuestamente les gusta), pero para los desarrolladores solitarios o los pequeños equipos, los hechos de la vida son:

  • ULos usuarios no quieren leer la documentación
  • Los desarrolladores no quieren y/o no les gusta escribirla
  • Los usuarios reclaman la documentación

Pareciera que todos (desarrolladores y usuarios) podríamos ser felices si no fuera por este último punto. ¿Por que los usuarios quieren la documentación si después no van a leerla? Bueno, primero que todo, algunos quieren la documentación porque en realidad sí la leerán. Quieren una posibilidad de hacer cosas por ellos mismos sin depender de nosotros. No obstante, la mayoría de los usuarios no la leerán, pero pienso que la piden por una razón muy simple y entendible: miedo. ¿Miedo de qué? Miedo de no obtener suficiente ayuda y soporte cuando se queden trabados y no puedan seguir con nuestra aplicación por ellos mismos.

Creo que la mayoría de los usuarios que piden la documentación la consideran el último recurso, y que disponer de este recurso en caso que llegaran a necesitarlo los hace sentirse seguros. Lo que quieren es soporte garantizado, y ven en la documentación esa garantía; una garantía de calidad. Esto no significa que los usuarios van a leerla si no obtienen soporte, pero quieren tener algo que mostrarle a alguien que pudiera estar en posición de ayudarlos. Esto significa que -de un modo u otro- eventualmente alguien leerá la documentación, y consiguientemente tendremos que escribirla...

Ahora los hechos de la vida son:

  • Los usuarios quieren/necesitan la documentación ==> hay que dárselas
  • Los desarrolladores no quieren y/o no les gusta escribirla

¿Cuál es la solución? Algo intermedio: escribir sólo la mínima documentación posible! ;) De nuevo, puede sonar un poco gracioso, pero en realidad es un asunto muy serio. La documentación agrega valor a un producto, así como también incrementa su costo, de modo que debemos escribir sólo la suficiente documentación para satisfacer a los usuarios.

El objetivo –entonces– es maximizar la satisfacción del usuario para obtener el valor agregado mientras minimizamos nuestro esfuerzo a fin de mantener el costo tan bajo como sea posible. ¿Se puede lograr esto? Hasta cierto punto, sí. ¿Cómo? Pues hay diferentes técnicas para las diferentes partes de la documentación:

Instrucciones de instalación

Una de las cosas más frustrantes para el usuario es no poder ser capaces de instalar una aplicación. Se puede (Y DEBE) evitar esta parte de la documentación proveyendo un instalador "a prueba de tontos".

InstallShield está bien, por ejemplo, y alcanza lo que hoy en día se considera un estándar, aunque una vez estaba hablando por teléfono con un usuario que me llamó para pedirme ayuda para instalar una aplicación:

Helpdesk: "Bueno, ahora haga doble-clic en el archivo SETUP.EXE"
Usuario: "Listo. Dice 'Esto instalará blah, blah, blah...'"
Helpdesk: "OK. Haga clic en el botón 'Aceptar'"
Usuario: "Ahora dice 'Lea los términos blah, blah, blah...'"
Helpdesk: "Haga clic en 'Estoy de acuerdo'."
Usuario: "Ahora dice 'Elija la instalación blah, blah, blah...'"
Helpdesk: "Haga clic en 'Típica' y luego en 'Siguiente'."
Usuario: "Ahora dice '¿Desea blah, blah, blah...'"
Helpdesk: "Haga clic en 'Siguiente'."
Usuario: "Ahora dice 'Instalación finalizada blah, blah, blah, ver LEAME?, blah, blah, blah...'"
Helpdesk: "Haga clic en 'No' y luego en 'Finalizar' y listo."
Usuario: "Desapareció."
Helpdesk: "Perfecto, ya terminó la instalación."
Usuario: "Ah... Bien, pero... ¿Por qué no se puede instalar con un solo clic?"

Tiene razón. La mayoría de los asistentes de instalación no son "a prueba de tontos"... El programa de instalación es la primera impresión que un usuario tendrá de nuestra aplicación (y alguien dijo que las primeras impresiones duran para siempre). Una instalación engorrosa no dejará una buena impresión (los usuarios sentirán "es como las demás") mientras que una instalación sencilla puede llegar a hacer maravillas con la actitud del usuario frente a nuestra aplicación, así que es importante tener esto en cuenta al elegir un instalador o al configurar sus opciones.

Opciones de configuración

Algunas aplicaciones, como los clientes de email por caso, necesitan algunos datos iniciales y/o el establecimiento de algunas opciones de configuración antes que puedan ser totalmente operacionales. Puede evitarse documentar esto si provee un asistente con suficiente información visible sobre cada dato que le solicita al usuario.

Es algo decepcionante ver por ahí muchos "asistentes" que en realidad no asisten para nada. Un texto que diga "Por favor ingrese su nombre en el cuadro de texto de abajo:" me dice tanto como una etiqueta que simplemente diga "Nombre:". Si dijera por ejemplo "Ingrese su nombre tal como quiera que lo vean los destinatarios del correo que envíe:" ya me dice mucho más. Por lo general los asistentes piden un dato por cada pantalla así que sobra el lugar para poner descripciones significativas.

Tareas/Transacciones

He visto cientos -si no miles- de aplicaciones en mi corta vida, y me considero a mí mismo un usuario avanzado, pero he encontrado muchas bonitas aplicaciones shareware que no he podido usar por no saber cómo hacer ciertas tareas (¡como por ejemplo comenzar a hacer algo!) y en muchos casos no había documentación disponible... porque viene con la registración!!! ¿Cómo se supone que voy a evaluar una aplicación y saber si cubrirá mis necesidades si no la puedo usar? Pienso que a alguna gente hay que recordarle que el concepto shareware significa "pruebe antes de comprar"... Pero esto es para la anécdota, el punto es que en otros casos la documentación estaba allí pero no me daba ninguna pista...

La explicación de cada elemento del menú, cada cuadro de diálogo, y cada control es necesaria, pero algunas veces no es suficiente. Tendemos a pensar que con toda esa información debería ser obvio para el usuario cómo realizar ciertas tareas, pero la realidad muestra que los usuarios se ahogan en este mar de información... Lo que necesitan es algo más directo que responda preguntas en su propia jerga como por ejemplo "¿Cómo registro un pago?", y cosas como esas que son las tareas o transacciones normales que los usuarios tienen que realizar con nuestra aplicación.

La documentación de uno de estos "COMOs" podría leerse así:

  • Haga clic en el menú 'Tablas'
  • Haga clic en el elemento de menú 'Clientes...'. Aparecerá el cuadro de diálogo 'Clientes'.
  • Seleccione el cliente cuyo pago pago quiere registrar y haga clic en el botón 'Pagos...'. Aparecerá el cuadro de diálogo 'Pagos'.
  • Haga clic en 'Nuevo...'. Aparecerá el diálogo 'Nuevo pago'.
  • Ingrese los datos del pago y haga clic en 'Aceptar' para registrar el pago.

Muy bien, pero alguien podría preguntar, "¿Y por qué en lugar de yo tener que seguir todas esas instrucciones no hay un botón allí para que todo eso se haga solo?" El usuario tendría razón. Podemos usar las capacidades de programación de los archivos de ayuda para automatizar cosas como estas, pero si vamos a hacer el esfuerzo de programar, podemos deshacernos del archivo de ayuda teniendo un menú COMO con una estructura como esta:

Menú COMO

En lugar de buscar en un archivo de ayuda, los usuarios pueden encontrar información rápido de esta manera. También podríamos usar un cuadro de diálogo con solapas, combos, opciones, etc. en vez de un menú. La clave aquí es ayudar a los usuarios a encontrar lo que están buscando, y una vez que sabemos lo que quieren hacer, hacerlo por ellos. Por ejemplo, cuando el usuario haga clic en la opción "¿Cómo registrar el pago de un cliente?" podemos mostrarle un cuadro de diálogo para que seleccione el cliente al que quiere aplicar el pago y cuando haga clic en 'Aceptar' le podemos mostrar el diálogo 'Nuevo Pago'. Simple y directo.

La "carne"

La carne de la documentación la constituye la explicación de cada menú, cada cuadro de diálogo y cada control, así como también un glosario que explique los términos poco comunes. Mencionamos antes que esta parte de la documentación es necesaria, pero... ¿Cuán necesaria es? Por supuesto que depende de la aplicación particular y del grupo de usuarios al que está dirigida, pero para generalizar, podemos evitar escribir más de lo necesario usando un esquema ABC:

  1. 5-10% de los elementos requieren una explicación detallada.
  2. 30-35% de los elementos pueden no ser obvios, pero una explicación razonablemente breve sería suficiente.
  3. 60-70% de los elementos son bastante obvios y no requerirían explicación, o sólo una muy pequeña.

Otra vez, podemos evitar escribir esta parte de la documentación usando ayudas de herramientas (tool tips) que se muestran cuando el cursor se mueve sobre un control, y usando mensajes que se muestran en un panel de mensajes o en una ventana cuando se selecciona un control. Esto requiere algo de programación, pero en Delphi y C++ Builder por ejemplo este efecto se puede lograr de una forma transparente y reutilizable.

Recapitulando, al final en realidad tenemos que "escribir" algo -no puede evitarse del todo-, pero es una cosa totalmente diferente. En lugar de escribir una documentación completa, hasta la máxima extensión posible podemos desarrollar nuestras aplicaciones de forma tal que no necesiten documentación (la mejor forma de documentar una aplicación!) y podemos usar la "ayuda interna" ("in-line help") que es más barata, más fácil y más mantenible que la ayuda convencional (ya sea ésta impresa o electrónica), sin mencionar que hasta podría ser mejor para la mayoría de los usuarios ya que verían la ayuda allí mismo sin tener que presionar F1 (una tecla que la mayoría de los principiantes nunca presionarían, por ejemplo).

Por supuesto, no hay nada como un buen sistema de ayuda, pero la ayuda interna es una forma costeable de proveer ayuda para pequeñas o grandes aplicaciones de bajo presupuesto.
 

JfControls Library - para Delphi y C++ Builder

Este artículo fue publicado primero en nuestro Boletín para Desarrolladores, actualmente descontinuado.