¿Qué errores no hacen sus usuarios, y cómo se puede actualizar su aplicación para manejarlos? [cerrado]

softwareengineering.stackexchange https://softwareengineering.stackexchange.com/questions/1752

Pregunta

De hecho esta pregunta es acerca de las precauciones que deben tomarse para mejorar la experiencia de usuario de calidad y reducir las llamadas de soporte evitables.

¿Fue útil?

Solución

A falta de validación de entrada adecuada es una de esas cosas que tiende a conducir muy rápidamente a los usuarios que hacen cosas "malas" con su aplicación, cuando en realidad debería ser manejado por el programador.

he visto aplicaciones heredadas donde los usuarios han sido entrenados para:

  • No entre apóstrofes en los nombres
  • No entrar en cualquier símbolo que no sea a-z0-9,
  • asegurar que no haya espacios antes o después del texto que han entrado
  • comprobación de que una dirección de correo electrónico con formato correcto se está introduciendo en el campo a email, correos de otra forma posteriores a ese usuario a utilizar lo que está en el campo y se producirá un error
  • asegúrese de que "http://" se pone antes direcciones web

, etc, etc

Todas las cuestiones antes mencionadas son las que debería ser manejado por un desarrollador de aplicaciones. Cuando su validación de entrada es esencialmente "asegurarse de que el usuario sabe lo que formatear este campo debe estar en la confianza y lo que han entrado es correcto", entonces las cosas inesperadas están obligados a encontrar su camino en la aplicación. Aparte de las implicaciones obvias de seguridad, los usuarios cometen errores. Como programadores a menudo producir nuestros mejores productos por haciendo lo imposible para asegurarse de que el usuario no pueden se equivocan, lo difícil no importa que tratan!

Otros consejos

Una vez recibió una llamada de atención al cliente, porque mi aplicación simplemente desapareció. Resultó que abrieron otra aplicación en la parte superior de la misma.

... decidí no para garantizar que no vuelva a suceder, ya que era el analfabetismo usuarios de computadoras que causó el problema, no la aplicación. Cualquier cosa que podría haber hecho para solucionarlo habría conducido a una experiencia de usuario pobre para otros.

Casi todos los programas que escribo se invoca estrictamente desde la línea de comandos. También he escrito algunas cosas más elegantes que comenzaron como interfaces CLI y rápidamente se convirtieron en algo más como cáscara que nada.

Por lo tanto, sólo puede hablar de lo que sé. He aquí algunos problemas comunes con los programas de línea de comandos:

demasiadas opciones

A menos que usted está escribiendo un compilador o un editor de línea, tratar de mantener las opciones se limitan a una pantalla completa en una memoria intermedia de 80x25 marco cuando se pasa --help o /?. Está perfectamente bien para tener más opciones que eso, pero romperlos en subcategorías. Por ejemplo

foo --help

foo --help option_name

No hay opciones largas

Es mucho más fácil de recordar foo --attach_to [argument] --volatile --verbose de lo que es para recordar foo -a [arg] -v +V. Esto no siempre es posible, pero en la mayoría de los casos, lo es.

No hay entrada de validación

Casi cada plataforma tiene varias bibliotecas que se pretenden, probado y cierto cuando se trata de analizar y validar los argumentos. Casi cada plataforma tiene un ensayado, probado y verdadero analizador léxico que valida la entrada de una CLI. Utilice uno, el otro o ambos. Si sus violaciones de segmento de programa o divide por cero debido a algo que un usuario siempre, eso es sólo embarazoso.

Es posible que no necesite algo tan complejo como un analizador léxico, tal vez lo que puede tokenize la cadena si usted está esperando cosas en un orden determinado con ciertas cosas en ciertos lugares.

De hecho, me dieron un informe de error una vez cuando se esperaba un entero y alguien escribió f*** my life entre comillas. Yo no escribí ese programa, tuve la desgracia de heredar a él.

No 'verbocity' mando

Permitir a los usuarios con experiencia para descubrir fácilmente cómo conseguir de manera más ruido fuera de su programa que la mayoría de la gente tolera, pero por defecto para imprimir solamente un asunto serio y crítico. No puedo decirle cuántas veces tuve que encender strace sólo para darse cuenta de que algo segfaulted porque opera en un flujo de archivo NULL.

También puede envolver afirmaciones de manera que apagarlos a través NDEBUG u otros medios todavía da lugar a algo impreso o registrado para el usuario a encontrar.

Hablando de archivos de registro, tratar de asegurarse de que cualquier cosa que ponga en ellos hace que (al menos un poco) sentido para alguien que no sea usted. Si al inicio de cada entrada es una fecha tiempo UNIX, vas a la frustración compuesto en alguien que realmente quiere ayudarle a reproducir el error.

No 'Bug Buddy' en modo de depuración

Una gran cantidad de programas ofrecen algún tipo de interruptor de 'depuración' que ofrece la charla adicional con respecto a lo que está pasando con el programa, pero muy pocos ofrecen lo siguiente:

  • Una manera de enviar automáticamente un informe a través de HTTP / HTTPS y obtener algún tipo de número de referencia de servicio
  • Una manera de volcar la información útil a un archivo que podría enviarse como archivo adjunto a una solicitud de asistencia

O, tal vez al igual que las personas oyentes leen los siguientes servicios por teléfono:

Se dice condición inesperada en cero ef oh oh .... cuatro cero OK déjame leer que volver a usted ...

archivos de configuración excesivamente complejos

No se justifica la necesidad de analizar una configuración como una excusa para conseguir un zumbido en los lotes de azúcar sintáctica. Trate de usar un formato que la gente sabe, incluso si esto significa un trabajo extra al analizar. Trato de utilizar el formato de estilo INI siempre que sea posible. Usted se sorprenderá de lo que puede lograr con un simple número-> diccionario valor.

No hay archivos de configuración

No hacer que la gente escribe shell scripts o archivos por lotes sólo para usar el programa, salvo que estaba destinado a ser una herramienta, ya sea para la tarea. Dame un medio para apuntar a un archivo que contiene mis opciones habituales y proporcionar sólo algunos de anunciosargumentos icio.

No 'piso mojado' signos

Si alguna característica podría conseguir que el usuario en problemas (tal vez es allí para usuarios avanzados), lo marcará claramente como tal. Además, si alguien de entrada dedos gordos o se olvida algo, tiene que programar imprimir un vínculo muy amable a la documentación en línea. Usted puede estar tratando con alguien que está utilizando su programa a través de KVM y no se puede cortar y pegar.

Cuando sea posible, (esto coincide con la validación de entrada) utilizan el apporach Google:

Te ha foo media --bar FILENME, se mecanografiado solamente foo --bar

ofrecer una salida de instrucciones destructivas

El objetivo es indicar al usuario qué no hizo el trabajo y hacer que se tratan unas cuantas veces más, al tiempo que garantiza que usted no hace nada potencialmente destructiva a menos que aparezca que el usuario realmente quiere que hagas eso. Permitir que un interruptor que apaga 'persistente', por ejemplo -Y o /Y pero por lo demás permitir una salida para alguien que simplemente tiene 'dedos gordos'.

Probablemente estoy olvidando algunos indicadores. Yo trato con esta frecuencia ya que es muy, muy difícil hacer que la interfaz de 'bajo nivel' por algo lo suficientemente intuitivo para la mayoría de la gente para evitar cometer errores.

"¿Está seguro que desea borrar este archivo / registro? Sí / No". Hace clic en Sí y luego recibió una llamada que "por error" hace clic en el botón de borrar de color rojo y que necesita que los datos de vuelta:)

No me siento como conseguir ejemplos específicos ruptura / FIX es tan importante como la realización de este:

  • Los usuarios no leen el manual, o ver sus tutoriales. Ellos aprenden su software a través de la exploración.

Si a través de la exploración que se rompen algo, como programador es su trabajo a cualquiera de ellos advertir del peligro o evitar que suceda en el primer lugar. No puedo recordar dónde lo vi ahora, pero en el fondo de mi mente siempre trato de " que hacer lo correcto fácil " para el usuario de mi software .

Si usted insiste en ejemplos:

  • El usuario era capaz de entrar en un nombre en minúsculas que rompió el código de integración / fija mediante la realización de entrada de validación
  • El usuario era capaz de hacer clic en el botón equivocado después de realizar una acción / fija mostrando sólo los botones correctos.
  • El usuario era capaz de hacer X accidentalmente / fijado, advirtiéndole de que están a punto de hacer X.

Vea dónde va esto? :)

Aquí es uno oí esta semana. Un usuario solicita una función de "enviar una notificación cuando se produce un evento". Bastante simple y el desarrollador sigue adelante y lo implementa. Sin duda, la primera pregunta debería haber sido "lo que están tratando de resolver por esta notificación?". No voy a entrar en eso. Pocos días después, el usuario deja por el promotor y pide "Tengo esta notificación. ¿Qué se supone que ver con eso?".

Me acordé de esta Dilbert cómico y sugirió que el desarrollador "escribir una aplicación para averiguar lo que el usuario debe hacer con que la notificación".

Al igual que mpeterson dijo, el usuario es muy competitivo en su área de especialización. Ellos simplemente no piensan como un desarrollador de software o un diseñador.

No creo que los usuarios son estúpidos. Ellos no quieren utilizar su o cualquier programa en absoluto. Lo único que quieren es conseguir sus cosas. Ayuda ellos y prevenir el daño ocurra a lo largo del camino.

Tener una interfaz de usuario buena y proporcionar una experiencia de aprendizaje adecuada va un largo camino hacia la prevención de los usuarios de hacer cosas malas.

  • interfaces de usuario debe ser buenos sin fricción.

    En lugar de tirar un cuadro de diálogo (una operación costosa, y que los usuarios ignoran después de un tiempo) para confirmar el borrado, realizar el borrado, y ofrecen una manera de deshacer.

  • interfaces de usuario debe ser buenos detectable.

    A pesar de que la cinta de Microsoft Office consigue un montón de críticas, ya que obliga antiguos usuarios de Word para cambiar sus formas, la cinta es un claro ejemplo de cómo se puede hacer una visible interfaz (es decir, fácil de descubrir).

  • Las buenas interfaces de usuario, como un buen código, debe ser auto-explicativo.

    Nadie lee el manual. El yo sólo he recibido mis manual de los usuarios leer era una presentación de PowerPoint que contiene paso a paso tutoriales del software. He visto estos hecho con herramientas de vídeo como Camtasia, pero en PowerPoint son mejores porque se puede fácilmente hacia atrás y hacia delante tirón a través de los pasos.

El usuario no cometen errores. Los errores se encuentran con el programador que no pudo crear una interfaz utilizable.

Lo mismo ocurre con las pruebas de usabilidad con cada lanzamiento!

Licenciado bajo: CC-BY-SA con atribución
scroll top