2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 О пользователях и интерфейсах
Сообщение12.02.2013, 07:53 
Заслуженный участник


06/07/11
5627
кран.набрать.грамота
Вынес сюда отсюда, чтобы окончательно не засыпать оффтопами чужую ветку и избежать справедливого бана.

Munin в сообщении #682671 писал(а):
rockclimber в сообщении #682621 писал(а):
Это баг юзабилити. Правильно написанная программа никогда не позволит пользователю совершить ошибку.

Теорема. Для любого сколь угодно очевидного интерфейса найдётся дурак, который применит его неправильно. Доказательство оставляем читателю. Указание: использовать закон Мёрфи.
Ну давайте по порядку:
1. Очевидный интерфейс - не обязательно хороший интерфейс правильно написанной программы (из тех же законов Мерфи: у любой сложной проблемы есть простое, очевидное и неправильное решение).
2. Если интерфейс позволяет пользователю сделать ошибку, это - неправильный интерфейс (по определению).

Если же отбросить шутки, то суровая реальность такова, что у программиста изначально больше контроля за окружением работающей программы, чем у конечного пользователя. И оправдывать лень и нежелание учиться (да, проектированию взаимодействия с пользователем тоже надо учиться, только в отличие от физики/химии/математики этому почти нигде не учат систематически) тем, что пользователь все равно сделает не так, это все равно, что вести себя как Мюллер в анекдоте про Штирлица ("Кто это, Мюллер?" - "Это русский разведчик Исаев" - "А почему вы его не арестуете?" - "А все равно отмажется, скажет, что апельсины приносил").

Из литературы по теме могу посоветовать книгу "Об интерфейсе" Алана Купера (3-е издание, первые два вышли еще в прошлом веке и сильно отличаются по содержанию). Там разбирается огромное количество примеров, начиная с того, как сделать очень простую программу плохо (то есть как не надо делать) и заканчивая тем, как сделать сложную программу хорошо (включая множество практических рекомендаций). Ну и еще можно почитать книгу "Психбольница в руках пациентов" того же автора - это как бы "научно популярное описание проблемы".

Если же вернуться к началу (багу, из-за которого возможно неправильное цитирование), то, с одной стороны, глупо ждать чего-то большего от бесплатного форумного движка, гораздо проще повесить на видном месте инструкцию для пользоватателей с крупной надписью "так делать нельзя, а то мы тебя поставим в угол", а с другой стороны, эта ошибка возникает в месте, где у программиста есть полный контроль над ситуацией:
1) можно определить место, где выделен текст
2) можно определить автора этого текста
3) можно определить место нажатия кнопки (и соответствующего автора, который попадет в цитату)
4) можно сравнить одно с другим
Для примера, подобный же функционал реализован на форуме forum.vingrad.ru, но там попытка нажать не на ту кнопку выводит пользователю сообщение об ошибке и не делает неправильное цитирование (уже шаг вперед).
Лучше, конечно же, было бы просто сделать одну кнопку (или придумать другие варианты).

 Профиль  
                  
 
 Re: О пользователях и интерфейсах
Сообщение12.02.2013, 08:19 
Заслуженный участник


08/04/08
8562
rockclimber в сообщении #682750 писал(а):
Это баг юзабилити. Правильно написанная программа никогда не позволит пользователю совершить ошибку.
Я, кстати, согласен с этим. Просто при реальном написании программы никто не хочет с этим заморачиваться, типа мелочь, а на самом деле решение проблемы имеет довольно громоздкий вид.
Я с работы вынес такое решение. Для формы с конечным числом элементов строится граф состояний с переходами (на бумажке только, а не в голове. Когда Вы его даже для простой формы нарисуете на бумажке, Вы увидите, что никакому нормальному программисту он в голову не влезет целиком). Для каждого объекта пишется список состояний. Рисуются стрелки перехода формы. Затем головой вычисляем перебором все новые состояния. Затем это все кодируем. Тут проблема только с обнаружением множества факторов, от которых что-то зависит. Но в принципе, можно все сделать нормально.

rockclimber в сообщении #682750 писал(а):
Из литературы по теме могу посоветовать книгу "Об интерфейсе" Алана Купера (3-е издание, первые два вышли еще в прошлом веке и сильно отличаются по содержанию). Там разбирается огромное количество примеров, начиная с того, как сделать очень простую программу плохо (то есть как не надо делать) и заканчивая тем, как сделать сложную программу хорошо (включая множество практических рекомендаций). Ну и еще можно почитать книгу "Психбольница в руках пациентов" того же автора - это как бы "научно популярное описание проблемы".
О! Почитаю, спасибо.

 Профиль  
                  
 
 Re: О пользователях и интерфейсах
Сообщение12.02.2013, 09:21 
Аватара пользователя


27/02/12
3893
Нет, всё правильно, бумага составлена верно. (с)
Но это не оправдывает юзера, которому указали на очевиднейшую вещь,
а он после этого все-равно продолжает тупо давить, вместо того,
чтобы немного потумкать...

 Профиль  
                  
 
 Re: О пользователях и интерфейсах
Сообщение12.02.2013, 11:38 
Заслуженный участник
Аватара пользователя


30/01/06
72407
rockclimber в сообщении #682750 писал(а):
2. Если интерфейс позволяет пользователю сделать ошибку, это - неправильный интерфейс (по определению).

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

Вы мечтатель. Это проходит.

Книжки я читал, спасибо, и не одну, и не одного автора. Вот только в жизни всё более непросто.

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

-- 12.02.2013 12:42:39 --

P. S.
rockclimber в сообщении #682750 писал(а):
2. Если интерфейс позволяет пользователю сделать ошибку, это - неправильный интерфейс (по определению).

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

 Профиль  
                  
 
 Re: О пользователях и интерфейсах
Сообщение12.02.2013, 12:39 


06/02/13
325
rockclimber в сообщении #682750 писал(а):
Ну давайте по порядку

А контр-примера для теоремы так и не привели.

 Профиль  
                  
 
 Re: О пользователях и интерфейсах
Сообщение13.02.2013, 11:47 
Заслуженный участник
Аватара пользователя


01/08/06
3128
Уфа
С одной стороны, интерфейс можно сделать удобнее.
С другой стороны, это требует немалых усилий.
С третьей стороны, пользователя неправильно троллить за то, что он с первого раза не смог в чём-то разобраться. Лучше просто помочь добрым советом.
С четвёртой стороны, пользователю тоже не стоит давать руководящие указания администрации форума, в отношении которой он не является работодателем. Достаточно констатировать факт неудобства.

 Профиль  
                  
 
 Re: О пользователях и интерфейсах
Сообщение14.02.2013, 07:50 
Заслуженный участник


09/09/10
3729
rockclimber в сообщении #682750 писал(а):
2. Если интерфейс позволяет пользователю сделать ошибку, это - неправильный интерфейс (по определению).

Таким образом, все без исключения shell'ы имеют неправильный интерфейс.

А как быть в случаях, когда понятие "ошибка пользователя" никак не получается формализовать разумным способом? Вот я добавляю нового человека в адресную книгу: его имя и e-mail. Вы никак не сможете предохранить меня от опечаток.

 Профиль  
                  
 
 Re: О пользователях и интерфейсах
Сообщение14.02.2013, 08:17 
Заслуженный участник


08/04/08
8562
Joker_vD в сообщении #683690 писал(а):
А как быть в случаях, когда понятие "ошибка пользователя" никак не получается формализовать разумным способом? Вот я добавляю нового человека в адресную книгу: его имя и e-mail. Вы никак не сможете предохранить меня от опечаток.
Опечатка не является ошибкой интерфейса

-- Чт фев 14, 2013 05:17:34 --

Joker_vD в сообщении #683690 писал(а):
все без исключения shell'ы имеют неправильный интерфейс.
А что такое shell?

 Профиль  
                  
 
 Re: О пользователях и интерфейсах
Сообщение14.02.2013, 16:29 


22/01/11
309
Munin в сообщении #682805 писал(а):
Если интерфейс позволяет сделать пользователю работу, для которой он предназначен - это правильный интерфейс (по определению). Остальное уже нюансы (интерфейс может быть хороший или плохой).


Это какая-то абстрактная философия из еще не изданных книг :)
Где эти определения и откуда Вы их взяли?

Все гораздо проще: если пользователь может сделать ошибку, значит программа имеет ошибку. Если программа имеет ошибку - она неправильная. Что вообще такое "неправильный интерфейс" ? Когда не хватает поля для ввода зарплаты - вот это неправильный интерфейс.

 Профиль  
                  
 
 Re: О пользователях и интерфейсах
Сообщение14.02.2013, 19:48 
Заслуженный участник


09/09/10
3729
Sonic86 в сообщении #683696 писал(а):
А что такое shell?

command.com, cmd.exe, sh, csh, bash...

Esp_ в сообщении #683872 писал(а):
Все гораздо проще: если пользователь может сделать ошибку, значит программа имеет ошибку.

Я могу, набирая текст на экранной клавиатуре, сделать ошибку. Значит, эта программа (экранная клавиатура) имеет ошибку. Так, что ли?

 Профиль  
                  
 
 Re: О пользователях и интерфейсах
Сообщение14.02.2013, 21:06 


22/01/11
309
Joker_vD в сообщении #683951 писал(а):
Я могу, набирая текст на экранной клавиатуре, сделать ошибку. Значит, эта программа (экранная клавиатура) имеет ошибку. Так, что ли?


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

 Профиль  
                  
 
 Re: О пользователях и интерфейсах
Сообщение14.02.2013, 21:10 
Заслуженный участник
Аватара пользователя


30/01/06
72407
Esp_ в сообщении #683872 писал(а):
Это какая-то абстрактная философия из еще не изданных книг :)

Значит, я читал неизданные книги. Ай да я.

 Профиль  
                  
 
 Re: О пользователях и интерфейсах
Сообщение15.02.2013, 07:48 
Модератор
Аватара пользователя


16/02/11
3788
Бурашево
Конечно, есть случаи, когда невозможно застраховать пользователя от ошибок. Примером может являться любая среда программирования. Никак разработчик не может программиста застраховать от ошибок. Да и вообще чем больше возможностей у программы - тем меньше возможностей по проверке корректности действий пользователя. Может даже случится, что не понятным будет что само по себе считать корректным действием пользователя, а что не корректным. Но простейшую защиту от дурака интерфейс конечно же должен обеспечивать: если в каком либо поле должно писать цифры, то сколько букву на клавиатуре не нажимай - она туда не введётся. Если два минуса в записи числа не положено - их не плучится ввести. А уж про ситуацию с кнопкой "вставка" нужно не говорить. Её как-то исправлять нужно. Я и сам много раз обнаруживал, что приписываю сообщение другому человеку и много раз видел как набрасываются на новичков с криками, мол, научитесь цитировать. Да как же ему научиться, если кнопка работает таинственным (неестественным, интуитивно непонятным/несогласованным) образом...

Вспоминается мне как я сам лично один раз при демострации программы подошёл и ввёл им туда ноль и появилось много-много сообщений на импортном языке и висюн. Товарищи обиделись мне долго-долго объясняли, что ноль туда вводить нельзя и даже объясняли почему нельзя. Формулы писали. Было весело.

 Профиль  
                  
 
 Re: О пользователях и интерфейсах
Сообщение15.02.2013, 19:36 
Заслуженный участник


09/09/10
3729
profrotter в сообщении #684108 писал(а):
Вспоминается мне как я сам лично один раз при демострации программы подошёл и ввёл им туда ноль и появилось много-много сообщений на импортном языке и висюн. Товарищи обиделись мне долго-долго объясняли, что ноль туда вводить нельзя и даже объясняли почему нельзя. Формулы писали. Было весело.

Хех. У нас все преподаватели программирования и численных методов обожали на сдаче задания вводить левые данные — если программа давилась насмерть, то посылали переделывать.

-- Пт фев 15, 2013 20:44:24 --

Кстати, возвращаясь к исходному вопросу. Предположим, вам нужно написать программу-аналог Skype. По собственному опыту и наблюдению знаю, что человек, лет десять пользующийся компьютером на уровне среднего пользователя (ворд, аутлук, одноклассники) может в уже запущенном и настроенном скайпе с главной страницы забрести черт-те куда и сделать черт-те что. Как будете это преодолевать?

 Профиль  
                  
 
 Re: О пользователях и интерфейсах
Сообщение16.02.2013, 22:07 
Заслуженный участник


06/07/11
5627
кран.набрать.грамота
Joker_vD в сообщении #683690 писал(а):
rockclimber в сообщении #682750 писал(а):
2. Если интерфейс позволяет пользователю сделать ошибку, это - неправильный интерфейс (по определению).

Таким образом, все без исключения shell'ы имеют неправильный интерфейс.
Не совсем так. Если пользователь введет неправильную команду, shell не бросится ее выполнять "так, как понял", а скажет, что команда неправильная. Так что shell немного умнее, чем вы о нем думаете. Но в общем и целом - да, shell-ы имеют ряд недостатков по сравнению с GUI-интерфесом. Это примерно как сравнивать самолет и обычный городской автомобиль. На самолете долетите быстрее, но в случае чего разобьетесь в лепешку, а перед этим еще учиться надо много лет, а на автомобиле тихонько и относительно безопасно доедете, и даже если столбы с деревьями вдруг начнут дорогу перебегать - есть еще подушка безопасности. И научиться управлять машиной намного проще.

Joker_vD в сообщении #683690 писал(а):
А как быть в случаях, когда понятие "ошибка пользователя" никак не получается формализовать разумным способом? Вот я добавляю нового человека в адресную книгу: его имя и e-mail. Вы никак не сможете предохранить меня от опечаток.
А никак. Есть, грубо говоря, два типа ошибок: первый тип - когда пользователь делает действие, заведомо приводящее к ошибке. Например, пользователь делает ряд вычислений, вводит операцию и нажимает кнопку. Потом вводит следущую и хочет на ноль поделить. Что делать в этом случае? Аварийно завершить программу? Вывести пользователю сообщение о том, что он дурак? Не дать ему нажимать на кнопку? Какой способ лучше? Каждый следущий лучше предыдущего. Первый способ может уничтожить все результаты работы. Второй - может уничтожить результаты последнего вычисления. Третий не уничтожит ничего. Тем более что раз уж вы заранее позаботились о безопасности данных, то можете заодно вывести пользователю сообщение о том, что не разблокируете кнопку, пока он ноль из знаменателя не уберет. Благодарности пользователя не будет предела.
Второй тип ошибок - когда деструктивное действие принципиально неотличимо от допустимого. Например, рисует пользователь в фотошопе картинку, а потом перечеркивает ее красным крестом. Что это? Творческий замысел или кот случайно по клавиатуре прошелся? Тут только телепаты помогут. Когда из отпуска выйдут.
Отличить два этих типа ошибок несложно. Сабжевая ошибка в движке форума - однозначно первого типа. Просто очень многие программисты даже не задумываются о таких вещах. В последнее время немного лучше становится, конечно, но до окончательной победы здравого смысла еще далеко.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу 1, 2  След.

Модератор: Модераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group