Quelles sont les erreurs que vos utilisateurs font et comment pouvez-vous mettre à jour votre application pour les traiter? [fermé]

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

Question

En fait, cette question concerne les précautions à prendre pour améliorer l'expérience utilisateur de qualité et de réduire les appels de soutien évitables.

Était-ce utile?

La solution

Un manque de validation d'entrée appropriée est une de ces choses qui tendent à conduire assez rapidement aux utilisateurs qui font « mauvaises » choses avec votre application, quand il devrait vraiment être pris en charge par le programmeur.

J'ai vu des applications héritées où les utilisateurs ont été formés à:

  • ne pas entrer dans les noms apostrophes
  • pas entrer dans un symbole autre que a-z0-9,
  • assurer qu'il n'y a pas d'espace avant ou après le texte qu'elles sont entrées
  • vérifier qu'une adresse e-mail formaté correctement est entré dans le champ email, envois par ailleurs suite à cet utilisateur utilisera tout ce qui est dans le domaine et échouera
  • assurez-vous que "http://" est mis avant les adresses Web

etc etc

Toutes les questions ci-dessus sont celles qui devraient être géré par un développeur d'applications. Lorsque votre validation d'entrée est essentiellement « assurez-vous que l'utilisateur sait quel format ce domaine devrait être et faire confiance à ce qu'elles sont entrées est juste », alors les choses inattendues sont tenus de trouver leur chemin à l'application. Mis à part les conséquences évidentes de sécurité, les utilisateurs font des erreurs. Comme les programmeurs nous produisons souvent nos meilleurs produits en pliant en quatre pour vous assurer que l'utilisateur ne peut pas se tromper, peu importe combien ils essaient!

Autres conseils

Une fois, je reçu un appel de soutien à la clientèle parce que mon application a tout simplement disparu. Tourné sur ils ont ouvert une autre application sur le dessus de celui-ci.

... Je décide de ne pas faire en sorte que ne se reproduise plus, puisqu'il était l'analphabétisme informatique des utilisateurs qui a causé le problème, pas l'application. Tout ce que je aurait pu faire pour le fixer aurait conduit à une mauvaise expérience utilisateur pour les autres.

Presque tous les programmes que je vous écris est appelé strictement à partir de la ligne de commande. J'ai aussi écrit des choses plus fantaisistes qui ont commencé comme des interfaces CLI et rapidement ont grandi en quelque chose de plus shell comme qu'autre chose.

Alors, je ne peux parler que de ce que je sais. Voici quelques problèmes communs avec les programmes de ligne de commande:

Way trop d'options

Sauf si vous écrivez un compilateur ou un éditeur de ligne, essayez de garder des options limitées à un plein écran sur un tampon d'image 80x25 lorsque --help ou /? est passé. Il est très bien parfaitement d'avoir plus d'options que cela, mais les diviser en sous-catégories. Par exemple

foo --help

foo --help option_name

Pas d'options longues

Il est beaucoup plus facile de se rappeler foo --attach_to [argument] --volatile --verbose qu'il est de se rappeler foo -a [arg] -v +V. Ce n'est pas toujours possible, mais dans la plupart des cas, il est.

Pas de validation d'entrée

Presque chaque plate-forme a plusieurs bibliothèques qui ont essayé, testé et vrai en ce qui concerne l'analyse et la validation des arguments. Presque chaque plate-forme a un essayé, testé et vrai lexer qui valide l'entrée d'une CLI. Utilisez l'une, l'autre ou les deux. Si votre segfaults programme ou divise par zéro en raison de quelque chose d'un utilisateur fourni, qui vient embarrassant.

Vous ne pourriez pas besoin de quelque chose aussi complexe que lexer, vous pouvez peut-être juste tokenizer la chaîne si vous attendez des choses dans un certain ordre avec certaines choses dans certains endroits.

En fait, je suis un rapport de bogue une fois où un entier était attendu et que quelqu'un a tapé f*** my life entre guillemets. Je n'ai pas écrit ce programme, j'ai eu le malheur d'hériter.

Aucun bouton 'verbocity'

Permettre aux utilisateurs expérimentés de découvrir facilement comment obtenir ainsi plus de bruit de votre programme que la plupart des gens tolérer, mais par défaut à l'impression des choses graves et critiques seulement. Je ne peux pas vous dire combien de fois je devais tirer jusqu'à strace juste pour se rendre compte que quelque chose crashait parce qu'il fonctionne sur un flux de fichier NULL.

Vous pouvez également envelopper affirmations afin que les désactiver via NDEBUG ou tout autre moyen entraîne toujours quelque chose affiché ou enregistré pour l'utilisateur à trouver.

En parlant de fichiers journaux, essayez de faire quoi que ce soit que vous placez dans les fait (au moins un peu) sens à quelqu'un d'autre que vous. Si le début de chaque entrée est une date d'époque UNIX, vous allez frustration composé dans quelqu'un qui veut vraiment vous aider à reproduire le bug.

Non 'ami bug' en mode débogage

Beaucoup de programmes offrent une sorte de switch « debug » qui offre bavardages supplémentaires en ce qui concerne ce qui se passe avec le programme, mais très peu offrent:

  • Une façon d'envoyer automatiquement un rapport via HTTP / HTTPS et obtenir une sorte de numéro de référence de service
  • Une façon de déverser des informations utiles à un fichier peut être envoyé comme une pièce jointe à une demande de support

Ou, peut-être vous aimez entendre les gens lire ce qui suit sur le téléphone:

  

Il dit condition inattendue à zéro   eff oh oh quatre zéro .... OK Lemme lu que de nouveau à vous ...

fichiers de configuration complexes Excessivement

Ne pas justifier la nécessité d'analyser une config comme une excuse pour obtenir un buzz sur beaucoup de sucre syntaxique. Essayez d'utiliser un format que les gens savent réellement, même si cela signifie un travail supplémentaire lors de l'analyse. J'essaie d'utiliser le format de style INI chaque fois que possible. Vous seriez étonné de ce que vous pouvez tirer avec un simple, key-> valeur dictionnaire.

Aucun fichier de configuration

Ne faites pas les gens écrivent des scripts ou des fichiers de commandes shell juste utiliser votre programme, à moins qu'il était destiné à être un outil pour chacune des tâches. Donnez-moi un moyen de pointer un fichier contenant mes options habituelles et fournir quelques-uns annoncearguments ditionnels.

Aucun signe 'plancher mouillé'

Si une caractéristique pourrait obtenir l'utilisateur en difficulté (peut-être qu'il est là pour les utilisateurs avancés), indiquant clairement en tant que tel. De plus, si quelque chose d'entrée de gros doigts de quelqu'un ou oublie, avez-vous le programme d'impression un lien très sympathique à la documentation en ligne. Vous pourriez avoir affaire à quelqu'un qui utilise votre programme via KVM et ne peut pas couper et coller.

Lorsque cela est possible, (ce qui coïncide avec la validation d'entrée) utilisent le apporach Google:

  

Vouliez-vous dire foo --bar FILENME, vous   tapé uniquement foo --bar

Offre une sortie d'instructions destructrices

Le but est de dire à l'utilisateur pourquoi il n'a pas fonctionné et ont les essayer un peu plus de temps, tout en veillant à ce que vous ne faites rien à moins potentiellement destructeur, il semble que l'utilisateur veut vraiment que tu fasses ça. Laisser un interrupteur qui désactive « lancinante », par exemple -Y ou /Y mais autrement permettre une sortie pour quelqu'un qui a simplement « gros doigts ».

Je suis probablement oublier quelques conseils. Je traite ce souvent car il est très, très difficile de faire l'interface « bas niveau » pour quelque chose d'assez intuitif pour la plupart des gens pour éviter de faire des erreurs.

« Etes-vous sûr de vouloir supprimer ce fichier / dossier? Oui / Non ». Oui cliquée et a reçu un appel que « par erreur » cliqué sur le bouton de suppression rouge et il a besoin que de retour de données:)

Je ne me sens pas comme faire pause spécifique / exemples de correctif est aussi important que la réalisation de ceci:

  • Les utilisateurs ne lisent pas le manuel, ou regardez vos tutoriels. Ils apprennent votre logiciel grâce à l'exploration.

Si par cette exploration, ils cassent quelque chose, en tant que programmeur, il vous appartient de les mettre en garde soit du danger ou l'empêcher de se produire en premier lieu. Je ne me souviens pas où je l'ai vu maintenant, mais à l'arrière de mon esprit j'essaie toujours de « faire faire la bonne chose facile » pour l'utilisateur de mon logiciel .

Si vous insistez sur des exemples:

  • L'utilisateur a été en mesure d'entrer un nom minuscule qui a cassé le code d'intégration / fixe en effectuant une validation d'entrée
  • L'utilisateur a pu cliquer sur le mauvais bouton après avoir effectué une action / fixe en ne montrant que les bons boutons.
  • L'utilisateur a pu faire X accidentellement / fixe en les avertissant qu'ils sont sur le point de faire X.

Voyez où cela va? :)

Voici que j'entendu cette semaine. Un utilisateur demande une fonction « me envoyer une notification lorsqu'un événement se produit. » Assez simple et le développeur va de l'avant et met en œuvre. Bien sûr, la première question aurait dû être « qu'est-ce que tente de répondre par cette notification? ». Je ne rentrerai pas dans cela. Quelques jours plus tard l'utilisateur cesse par le développeur et demande: « Je suis arrivé cette notification. Que dois-je faire avec elle? ».

Je me suis souvenu de cette bande dessinée Dilbert et suggéré au développeur « écrire une application pour savoir ce que l'utilisateur doit faire avec cette notification ».

Comme mpeterson dit, l'utilisateur est très concurrentiel dans leur domaine d'expertise. Ils ne pensent pas comme un développeur de logiciels ou le concepteur.

Je ne pense pas que les utilisateurs sont stupides. Ils ne veulent pas utiliser votre ou tout autre programme du tout. Tout ce qu'ils veulent est de faire leurs choses. Aidez-les et prévenir les dommages de leur arrive le long du chemin.

Avoir une bonne interface utilisateur et de fournir une expérience d'apprentissage adéquat va un long chemin à empêcher les utilisateurs de faire de mauvaises choses.

  • bonnes interfaces utilisateur doit être sans friction.

    Au lieu de lancer une boîte de dialogue (une opération coûteuse, et qui ne tiennent pas compte des utilisateurs après un certain temps) pour confirmer une suppression, effectuez la suppression, et offrent un moyen d'annuler.

  • bonnes interfaces utilisateur doit être découvrable.

    Bien que le ruban dans Microsoft Office reçoit beaucoup de critiques parce qu'il oblige les anciens utilisateurs de Word à changer leurs habitudes, le ruban est un brillant exemple de la façon dont vous pouvez faire une découvrable d'interface (par exemple facile à découvrir).

  • Les bonnes interfaces utilisateur, comme le bon code, devraient être explicites.

    Personne ne lit le manuel. Le manuel, je ne suis jamais mes utilisateurs de lire était une présentation PowerPoint contenant étape par étape soluces du logiciel. Je l'ai vu ces faits avec des outils vidéo comme Camtasia, mais PowerPoints sont mieux parce que vous pouvez facilement en arrière à feuilles mobiles et vers l'avant à travers les étapes.

L'utilisateur ne fait pas d'erreurs. Les erreurs se trouvent avec le programmeur qui n'a pas réussi à créer une interface utilisable.

faire des tests d'utilisation à chaque nouvelle version!

Licencié sous: CC-BY-SA avec attribution
scroll top