Какие ошибки делают ваши пользователи, и как вы можете обновить свое приложение для их обработки? [закрыто

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

Вопрос

На самом деле этот вопрос о предоставлении предостережения для повышения качественного пользовательского опыта и сокращения вызовов поддержки, которые можно избежать.

Это было полезно?

Решение

Отсутствие надлежащей проверки ввода - это одна из тех вещей, которая имеет тенденцию к приведению довольно быстро к пользователям, которые делают «плохие» вещи с вашим приложением, когда программист действительно должен обрабатывать.

Я видел устаревшие приложения, где пользователи были обучены:

  • не вводить апострофы в именах
  • не вводить ни один символ, кроме как a-z0-9,
  • Убедитесь, что нет пробелов до или после введенного текста
  • Убедитесь, что правильно отформатированный адрес электронной почты введен в email Поле, в противном случае последующие рассылки этого пользователя будут использовать все в поле, и потерпит неудачу
  • убедиться "http://"Поставлено перед веб -адресами

и т. д

Все вышеперечисленные проблемы - это те, которые должен обрабатываться разработчиком приложений. Когда ваша проверка ввода по существу является, «убедитесь, что пользователь знает, в каком формате должно быть в этом поле, и доверять тому, что они ввели, правильно», тогда неожиданные вещи обязательно должны найти в приложении. Помимо очевидных последствий безопасности, пользователи делают ошибки. Как программисты мы часто производим наши лучшие продукты, наклоняясь задом наперед, чтобы убедиться, что пользователь не мочь Поднимите это неправильно, как бы они ни старались!

Другие советы

Однажды я получил звонок для поддержки клиентов, потому что мое приложение просто исчезло. Оказалось, что они открыли еще одно приложение.

... Я решил не убедиться, что этого не повторилось, так как именно неграмотность пользователей вызвала проблему, а не приложение. Все, что я мог бы сделать, чтобы исправить это, привело бы к плохому пользовательскому опыту для других.

Почти каждая программа, которую я пишу, вызывается строго из командной строки. Я также написал несколько причудливых вещей, которые начинались как интерфейсы CLI и быстро превратились в нечто большее, чем все.

Итак, я могу говорить только за то, что знаю. Вот некоторые общие проблемы с программами командной строки:

Слишком много вариантов

Если вы не пишете компилятор или редактор линейки, постарайтесь оставить параметры, ограниченные одним экраном, на буфере кадров 80x25, когда --help или же /? передается. Вполне хорошо иметь больше вариантов, чем это, но разбивайте их на подкатегории. Например

foo --help

foo --help option_name

Нет длинных вариантов

Это намного проще запомнить foo --attach_to [argument] --volatile --verbose чем помнить foo -a [arg] -v +V. Анкет Это не всегда возможно, но в большинстве случаев это так.

Нет проверки ввода

Почти на каждой платформе есть несколько библиотек, которые испытывают, тестируются и верны, когда дело доходит до анализа и проверки аргументов. Почти на каждой платформе есть проверенный, протестированный и истинный лексер, который проверяет ввод из CLI. Используйте один, другой или оба. Если ваша программа разделится или делит на ноль из -за того, что предоставил пользователь, это просто смущает.

Возможно, вам не понадобится что -то столь же сложное, как лексер, возможно, вы можете просто токенизировать строку, если вы ожидаете материала в определенном порядке с определенными вещами в определенных местах.

Я действительно получил сообщение об ошибке, где ожидалось целое число, и кто -то напечатал f*** my life в цитатах. Я не писал эту программу, у меня было несчастье унаследовать ее.

Нет ручки «условно»

Позвольте опытным пользователям легко выяснить, как получить гораздо больше шума от вашей программы, чем у большинства людей терпеть, но не по умолчанию печатать только серьезные и критические вещи. Я не могу сказать вам, сколько раз мне приходилось запускать strace Просто чтобы понять, что что -то сегфорировало, потому что он работал на нулевом потоке файлов.

Вы также можете обернуть утверждения, чтобы выключить их через NDEBUG или другие средства, все еще приводимы к тому, что пользователь может найти что -то напечатанное или зарегистрированное.

Говоря о файлах журнала, постарайтесь убедиться, что все, что вы помещаете в них, имеет (по крайней мере, немного) смысл кому -то, кроме вас. Если начало каждой записи - дата эпохи UNIX, вы собираетесь усугубить разочарование кому -то, кто действительно хочет помочь вам воспроизвести ошибку.

Нет «приятеля» в режиме отладки

Многие программы предлагают какой -то переключатель «отладки», который предлагает дополнительную болтовню относительно того, что происходит с программой, но очень немногие предлагают следующее:

  • Способ автоматически отправить отчет через HTTP/HTTPS и получить какой -то ссылочный номер услуги
  • Способ сбросить полезную информацию в файл, который мог быть отправленным в качестве вложения к запросу поддержки

Или, возможно, вам нравится слышать, как люди читают следующее по телефону:

Он говорит о неожиданном состоянии на Zero Eff Oh Four Zero Oh ...

Чрезмерно сложные файлы конфигурации

Не оправдывайте необходимость проанализировать конфигурацию как оправдание, чтобы получить шум на большом синтаксическом сахаре. Попробуйте использовать формат, который люди на самом деле знают, даже если это означает дополнительную работу при анализе. Я стараюсь использовать формат стиля INI, когда это возможно. Вы будете удивлены, что вы можете осуществить с помощью простого словарного клавиша.

Нет файлов конфигурации

Не заставляйте людей писать сценарии оболочки или пакетные файлы только для использования вашей программы, если только она не была предназначена для того, чтобы быть инструментом для любой задачи. Дайте мне возможность указывать на файл, содержащий мои обычные варианты, и предоставить лишь несколько дополнительных аргументов.

Никаких знаков «влажного пола»

Если какая -то функция может привести к неприятностям пользователя (возможно, она есть для продвинутых пользователей), ясно отметьте его как таковую. Кроме того, если кто-то вводит что-то толстые пальцы или что-то забудет, вы будете программировать очень дружелюбную ссылку на онлайн-документацию. Вы можете иметь дело с кем -то, кто использует вашу программу через KVM и не может вырезать и вставить.

Когда это возможно, (это совпадает с проверкой ввода) Используйте Google Apporach:

Вы имели в виду Foo -bar filenme, вы напечатали только foo - -bar

Предложить выход из разрушительных инструкций

Цель состоит в том, чтобы сообщить пользователю, почему он не сработал, и попробовать его еще несколько раз, обеспечивая, чтобы вы не сделали ничего потенциально разрушительного, если не кажется, что пользователь действительно хочет, чтобы вы это сделали. Разрешить переключатель, который выключает «новое», например, -Y или же /Y Но в противном случае позвольте тому, кто просто имеет «толстые пальцы».

Я, наверное, забыл несколько указателей. Я часто имею дело с этим, так как очень, очень сложно сделать интерфейс «низкого уровня» для чего -то достаточно интуитивного, чтобы большинство людей избегали ошибок.

«Вы уверены, что хотите удалить этот файл/запись? Да/нет». Нажал «Да», а затем позвонил, что он «ошибочно» нажал кнопку «Красное удаление», и ей нужны эти данные обратно :)

Мне не хочется получить конкретные примеры разрыва/исправление так же важны, как и осознание этого:

  • Пользователи не читают ваше руководство и не смотрят ваши учебные пособия. Они изучают ваше программное обеспечение посредством исследования.

Если благодаря этому исследованию они что -то нарушают, как программист, это ваша работа, чтобы либо предупредить их об опасности, либо предотвратить это в первую очередь. Я не могу вспомнить, где я это видел сейчас, но в глубине души я всегда стараюсь »Сделайте правильное выполнение правильно"Для пользователя моего программного обеспечения.

Если вы настаиваете на примерах:

  • Пользователь смог ввести нижнее имя, которое сломало код интеграции / исправлена, выполнив проверку ввода
  • Пользователь смог нажать кнопку «Неверную кнопку» после выполнения действия / исправлена, показывая только правильные кнопки.
  • Пользователь смог сделать x случайно / исправить, предупреждая их, что они собираются сделать X.

Видишь, куда это идет? :)

Вот тот, который я слышал на этой неделе. Пользователь просит функцию «Отправить мне уведомление, когда происходит событие». Достаточно просто, и разработчик идет вперед и реализует это. Конечно, первый вопрос должен был быть «Что пытается решить этим уведомлением?». Я не буду вдаваться в это. Несколько дней спустя пользователь останавливается у разработчика и спрашивает: «Я получил это уведомление. Что я должен с этим делать?».

Я вспомнил этот комикс Дилберта и предложил разработчику «написать приложение, чтобы выяснить, что пользователь должен делать с этим уведомлением».

Как сказал Мперсон, пользователь очень конкурентоспособен в своей области знаний. Они просто не думают, как разработчик программного обеспечения или дизайнер.

Я не думаю, что пользователи глупы. Они вообще не хотят использовать вашу или какую -либо программу. Все, что они хотят, это сделать их вещи. Помогите им и предотвратите причинение вреда с ними по пути.

Наличие хорошего пользовательского интерфейса и предоставление адекватного опыта обучения имеют большое значение для предотвращения того, чтобы пользователи не делали плохие вещи.

  • Хорошие пользовательские интерфейсы должны быть без трения.

    Вместо того, чтобы подбросить диалоговое окно (дорогостоящая операция и той, которую пользователи игнорируют через некоторое время), чтобы подтвердить удаление, выполнить удаление и предложить способ отменить.

  • Хорошие пользовательские интерфейсы должны быть обнаружены.

    Хотя лента в Microsoft Office получает много шума, потому что она заставляет стариков слов изменить свои пути, лента является ярким примером того, как вы можете сделать интерфейс открытым (т.е. легко обнаружить).

  • Хорошие пользовательские интерфейсы, такие как хороший код, должны быть самостоятельными.

    Никто не читает руководство. Единственное руководство, которое я когда-либо заставлял своих пользователей, прочитал, была презентация PowerPoint, содержащая пошаговые прохождения программного обеспечения. Я видел их с помощью видео инструментов, таких как Camtasia, но Powerpoints лучше, потому что вы можете легко перевернуться назад и продвигаться через шаги.

Пользователь не делает ошибок. Ошибки лежат с программистом, который не смог создать полезный интерфейс.

Так что выполняют удобство использования с каждым релизом!

Лицензировано под: CC-BY-SA с атрибуция
scroll top