Что говорит Якоб Нильсен: первые 5 из 10 эвристических правил хорошего интерфейса

Задан вопрос, должен быть и ответ. Что же такое 10 эвристических правил Якоба Нильсена? Такие ли они эвристические? И вообще, о чем это?

Наиболее часто цитируемым в последнее время автором книг по разработке, оптимизации и прочим важным для веб-студий проблемам является Якоб Нильсен. Чтобы нас не обвиняли в плагиате, обязательно сошлемся на источник, где Вы можете прочитать используемый материал в оригинале: http://www.useit.com/papers/heuristic/heHristic_list.html. Но читать оригинал человеку, которому просто интересно узнать основу этих правил слишком проблематично. Мы постараемся суть эвристических правил отобразить коротко и ясно. Кое-кто, прочитав эту новость, скажет, что все слишком очевидно, чтобы считать это правилом для разработчиков. Что на это можно сказать? Попробуйте.

1. Взаимные отношения человек - компьютер

При работе с интерфейсом необходима обратная связь хотя бы для того, чтобы человек мог адекватно реагировать на какие-то изменения.

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

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

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

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

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

2. Язык системы должен быть приближен к существующей реальности

Пользователь должен понимать, каким образом можно управлять системой, она должна «говорить» на знакомом языке. Это скорее язык символов, а не речь в привычном понимании.

Классика использования символа реального мира в компьютерном интерфейсе – мусорная корзина, в нее бросают устаревшую информацию, «желтую» прессу , то, что давно требует чистки, и даже при необходимости, пока корзина не очистится или не переполнится, их достать.

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

3. Пользователь должен иметь возможность управлять своими действиями

Если человеку программа неподконтрольна, то опускаются руки и пользователь перестает действовать. Например, ограничение действий в игре у неподготовленного человека вызывает ощущение безысходности. Лучший вариант – отмена действия (Cancel), но пользователю привычен побег (Escape). Поэтому в интерфейсе можно предусмотреть оба этих выхода.

Дополнительные неплохие и уже привычные действия: «отменить» и «повторить». Иногда компьютерные «привычки» переносятся в реальность, мы пытаемся найти клавишу отмены действия, если ошиблись  при письме.

Создатель программы обязан учитывать все эти нюансы. Если есть причина невозможности отмены действия, то обязательно должно быть предупреждение (Вы уверены, что хотите удалить этот файл?)

4. Принцип последовательности

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

Если диалоговое окно появляется в правом нижнем углу компьютера, то пользователь не сразу поймет, если оно будет появляться вверху. Одно слово – одно действие.

Известные разработчики интерфейсов, даже меняя дизайн, придерживаются этого правила. Даже если нет правила, Вы должны строго следовать своему. А правило будет. Например, в настоящее время можно встретить варианты: SEO-продвижение, Seo-продвижение, seo-продвижение и даже сео-продвижение. Означают они одно и то же. Search engine optimization – поисковая оптимизация. Нет правила – установи его сам, возможно, именно твое станет единственным.
Сюрпризы пользователю ни к чему.

5. Предупрежден, значит, вооружен

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

Следующие и последние 5 эвристических правил ЧИТАЙТЕ ДАЛЬШЕ

{if $_modx->resource.see_also?}

Читать также:

{'getTickets@News.list' | snippet : [ 'tpl' => 'tpl.news.last.row', 'parents' => 0, 'limit' => 3, 'includeTVs' => 'image', 'resources' => $_modx->resource.see_also ]}
{/if}