Что бы там ни говорили проектировщики интерфейсов и другие «друзья пользователей», но работают они прежде всего для заказчика. Заказчиком же обычно являются маркетологи и/или коммерсанты. К сожалению эти замечательные люди порою бывают слишком уж замечательными и начинают сами «писать код» веб-приложения. Но проектировать интерфейсы они не умеют, программировать тоже, зато хорошо умеют писать длинные тексты — их то они и вставляют в обилии везде, где только можно, это и есть их «код». Результат получается как в том письме, что писал Дядя Фёдор из Простоквашино, когда все написали по чуть-чуть, а пользователь получатель этого письма хватался за сердце и падал в обморок.
Я приведу пару примеров из жизни, но намеренно не буду приводить скриншотов и называть имена и явки. Просто я боюсь мести не хочу переходить на личности. В конце (для терпеливых и неумеющих быстро прокручивать страницы) я скажу секрет, как нужно поступать, чтобы все были счастливы.
С точностью до запятой
Делали мы как-то веб-сервис, на котором была очень длинная форма. Заказчик был ну очень щепетилен в плане юридической составляющей. И они по сути нарисовали форму сами и...
Вы пробовали когда-нибудь читать юридические документы? Это крайне затруднительно, ты теряешь суть уже после второго абзаца. Так вот та длинная форма была из той же песни. Она изобиловала разнномастными полями и флажочками, многие из которых были заморожены, т.е. выбрать их или что-то в них ввести было нельзя. Зачем же их тогда было показывать? Это не обсуждалось! Венчало эту форму поле с датой, которую нельзя было поменять, а показывалась дата ради единообразия с бумажным документом, где внизу стоит дата и подпись. До сих пор радуюсь, что нас не заставили делать инструмент для рисования подписи...
Мы пытались сделать форму более простой и понятной. Сокращали ненужное, переформулировали тексты. Но все это категорически отвергалось и на нашу голову призывались заклинания древних юристов :)
Завершили мы проект разместив на странице с этой формой инструкцию, как эту форму заполнять. Т.е. заказчик увидел, что его творением (я уже не говорю «нашим») пользоваться крайне затруднительно, и не нашел ничего лучшего, как написать достаточно пространную инструкцию, разместив ее тут же.
Возможно кто-то подумает, что целью заказчика было не удобство пользования, а что-то другое, например, прохождение аудита или осваивание бюджета. Нет! Они постоянно говорили «юзабилити», проводили тестирование своими силами и переживали, когда что-то кому-то из пользователей было непонятно.
Объявление: объявление находится ниже
В другом проекте заказчик попросил разместить НАД формой авторизации инструкцию как пользоватья веб-сервисом. Не как авторизовываться, а именно весь цикл, что произойдет после авторизации.
В результате поля с логином и паролем существенно съехали вниз и... были не видны не многих мониторах, особенно на лэптопах.
Сроки поджимали, спорить было затруднительно и проект вышел с такой фичей. И только позже я узнал причину, почему заказчик решил так поступить. Дело в том, что пользователю на телефон в виде SMS высылалась ссылка на эту страницу. А высылалась она под видом «узнай поподробнее».
Очевидно, что будь задача сформулирована иначе, решение было бы не только более элегантным, но и продуктивным.
Вот мы и подошли к нашему секретному выводу.
Большой секрет
Заказчик должен ставить перед разработчиком общую задачу, а не углубляться в частности. Разработчик на то и подряжен, что он лучше знает КАК сделать, а заказчик на то и заказчик, что лучше знает ЧТО сделать.
Нарушение этого принципа — углубление заказчика в частности, сокрытие от проектировщика истинных задач — приводит к тому, что из проекта получается полное гэ.
Грустно, но эту прописную истину, которая описана в куче книг, не понимают очень многие.
Краткая шпаргалка для заказчика, что такое «хорошо», а что такое «плохо»:
Неправильно
|
Правильно
|
Размести в шапке логотипы всех наших партнеров.
|
Нашему сайту не доверяют, давайте подумаем, как это можно поменять.
|
Размести перед формой инструкцию из этого doc-документа.
|
Нужно сообщить пользователю о том, что услуга платная заранее.
|
Перемести меню влево, а сверху поставь эти ссылки.
|
Нужно сделать акцент на этом и этом, придумай варианты.
|
Вставь эти картинки и ссылки на главной, слева.
|
Мы хотим показать пользователю, что у нас есть и другие сервисы.
|
Пользователь почти всегда заходит к вам на сайт мимоходом. Ваш интерфейс для него — лишь один из 20 табов в браузере. Поэтому, если вы хотите ему что-то продать, интерфейс должен быть простым и однозначным. Всегда помните о принципе — сообщать ровно столько информации, сколько нужно в данный момент времени, не больше!
Рассмотрим принцип «сообщать только самое нужное» на примере сайта «Мобильный перевод» компании МОБИ.Деньги, который я проектировал и внедрял. Суть этого сервиса — позволить владельцам телефонов Билайн обналичивать средства с их мобильного счёта.
С места — в карьер
Главная страница сайта выглядит так:

Что тут есть (необходимое):
- Два коротких вводных предложения, отражающие суть услуги.
- Форма перевода, которая одновременно является поясняющей иллюстрацией.
- Ссылки на доп. информацию: где получить перевод, размер комиссии, текст публичной оферты, помощь.
Чего тут нет (лишнее):
- Длинных маркетинговых текстов.
- Предложения зарегистрироваться.
- Мусорной графики.
Подпишитесь под договорчиком, пожалуйста
Когда пользователь заполнил первую форму, он перейдет на страницу подтверждения платежа. Т.к. телефон является источника перевода, то одноразовый пароль мы автоматически высылаем через смс (регистрация отсутствует как класс):

Что тут есть:
- Время подумать, если ввели неверные данные и информация, чтобы проверить правильность перевода.
- Возможность получить пароль повторно (ссылка появится позже около поля ввода), если автоматически высланная смс по каким-то причинам не пришла.
Чего тут нет:
- Необходимости заказывать пароль.
- Необходимости придумывать пароль (он одноразовый и генерируется автоматически).
Собственно, всё!
Всё, перевод совершен:

Что тут есть:
- Информация о том, где и кому получить перевод.
- Возможность распечатать электронный чек.
- Информация о том, как повторить этот перевод с помощью телефона.
На самом деле, на этой странице информации больше, чем необходимо пользователю. Поэтому по настоящему важную информацию мы поместили наверх и обвели желтой яркой плашкой.
Чего тут нет:
- Предложения перейти в историю платежей (почему-то во многих платежных системах это предлагается) — мы и так уже в истории платежей.
- Предложения поменять пароль.
Каков итог?
С момента первого посещения сайта до совершения успешного перевода прошло около минуты. Сравните это со временем, которое вам потребуется, чтобы совершить такой же перевод на другом сайте или в офф-лайне.
Советы напоследок:
- Не парьте пользователей маркетинговыми булшитами.
- Сообщайте лишь самое необходимое, но давайте возможность узнать все подробно.
- Уважайте цели пользователей — они пришли за услугой, а не за тем, чтобы прочитать ваш гениальный текст и придумать очередной пароль.
Хочу прочитать некоторый ликбез по построению полей на форме ввода, а также рассмотреть некоторые ошибки.
Ликбез (повторяем пройденное в детском саду)
Сверху — пример простой формы (фрагмент). Она хорошо отражает два главных принципа:
-
Поле должно быть достаточной длины, чтобы поместился контент — это самое важно, аксиома. Недостаток длины полей ведет к ошибкам ввода. Но это и так все знают.
-
Поле должно по возможности быть не длиннее, чем нужно. Если поле содержит точно определенное количество символов, то логично сделать его именно такой длины (не забыть про разные шрифты, браузеры и некоторый запас). Это не обязательное требование, но желательное. Конечно, бывает некрасиво, когда длина полей скачет или просто не хочется заморачиваться. Но уж точно 1-2 символа не должны вводиться в длиннющее поле. Хороший вариант — завести css-классы для длинного, короткого и среднего полей.
Переходим в старшие классы или горе от ума
Когда я сделал эту простую форму для перевода денег на определенный банковский счёт, заказчик попросил сделать две вещи — не давать вводить больше символов, чем разрешено и не давать вводить буквы и другие символы в поле для номера.
Оба этих требования ошибочны, что я и объяснил заказчику. Хотел также поделиться доводами с вами.
Ни цента больше
Блокирование ввода символов после достижения допустимой длины — это грубая ошибка. Представьте, пользователь вводит сложный 20-значный номер счёта, в середине вводит лишнюю цифру, не замечает этого, доходит до конца и... последняя цифра не вводится. Он в остервенении бьет по клавиатуре — ничего не происходит, символ не набирается. Все, гэйм овер. Лучше дать пользователю возможность ввести 21 цифру, а потом сообщить ему об ошибке, пусть найдет лишнюю цифру сознательно.
Понаехали тут
Блокирование ввода любых символов, кроме цифр в поле номера — не такая грубая, но все же ошибка. Лично я, когда нажимаю на клавишу и не вижу никакой реакции, пугаюсь и думаю, что компьютер завис. Есть возможность решить проблему недопустимых символов более мягко.
Посмотрите на форму сверху. В первом поле хоть мы и рекомендуем вводить 10 цифр телефона слитно, но прощаем и пробелы и дефисы и даже лишнюю восьмерку в начале. А почему нет? Что нам сложно отбросить лишние символы что ли!
А вот во втором поле не допускаются русские символы. Хорошо, сообщим об этом пользователю через красный хинт, расположенный под полем. Не заметил — после нажатия на кнопку, мы переведем курсор в проблемное поле, и рядом с ним выдадим более заметное сообщение. Естественно, все это сделаем без перезагрузки страницы, 21-й век на дворе.
Рекомендации по обработке ошибок в полях формы
- Не блокируйте ввод символов в поля.
- По нажатию на кнопку отправки формы выдавайте сообщения об ошибке без перезагрузки страницы. Показывайте сообщение рядом с проблемным полем. Ставьте курсор в проблемное поле.
- Если ошибку можно отследить сразу, без отправки формы, выдавайте сообщение об ошибке набора, при этом не блокируйте набор и не переводите фокус ввода.
Подбирал сейчас авиабилеты на модном сайте Агент.ру, выбрал параметры и главное заполнил поле «Дата вылета». Мне выдало сообщение «выберите другую дату — возможно, на указанную дату нет рейсов по заданному направлению».
Ну скажите, я что один думаю о поездке в масштабе недели плюс-минус пару дней? Видимо разработчиков сайта отпускают на отдых в строго определенный день :)
Решить проблему можно по-разному — сделать диапазон даты вылета или чекбокс «Показать рейсы на этой неделе». Но это все усложняет форму.
Выход очень простой — если рейсов на эту дату нет или их мало, нужно в результатах поиска выдавать список всех доступных рейсов на ближайшие дни. Естественно уведомив, что дата другая.
Маленький пук для программиста и у вас появилась дополнительные заказы.
Вывод
Старайтесь не показывать пустые результаты поиска. Ничего не нашли — извинитесь, предложите скорректировать запрос, но при этом покажите то, что может быть потенциально интересно.
Если бы мы жили в абсолютно честном мире, не было бы ни паролей, ни капчи, ни сертификатов, ни таймаутов сессий. Но правда жизни в том, что всё это необходимо, чтобы обеспечить безопасность клиентов. А повышение безопасности веб-сервисов всегда усложняет интерфейс, и порою это заходит слишком далеко и начинает попахивать маразмом.
Хостинг, на котором находится мой сайт, имеет панель администрирования, защищенную паролем. Этот пароль я сразу поменял на удобный мне, это разрешено. Из этой панели можно поменять пароли для ftp и ssh, но... только на автоматически сгенерированные, на свои нельзя. Как мне объяснили, это для безопасности. Почему при этом можно придумать себе любой мастер-пароль — загадка. В результате этого маразма постоянно борюсь с желанием сохранить пароль к ssh в текстовый файл на рабочем столе.
Мой пароль протух и пахнет
Еще одна любимая тема безопасников — принудительно менять пароли раз в месяц. Среди веб-сервисов сразу вспоминается интернет-банкинг Альфа банка. Несчастные пользователи вендо-доменов тоже вынуждены менять пароль раз в месяц. Стоит ли говорить, что подобными мерами можно добиться только записывания паролей на бумажку, лежащую около монитора (я видел это) и придумывания легкоподбираемых (пусть и длинных) паролей.
На другом моем хостинге пароль для ftp обнуляется каждые три месяца. Приходится каждый раз лезть в админку и менять его... на тот же. Стоит ли упоминать, что у большинства пользователей все пароли хранятся в браузере.
А у вас какой длины?
Да, пароли должны быть достаточно сложными. Но чтобы этого добиться не обязательно запрещать пользователям придумывать пароль самостоятельно. Достаточно запретить пароли меньше 6-8
символов и состоящие из повторяющихся символов.
Почему некоторые сайты ограничивают длину пароля 10 символами и запрещают вводить знаки типа @#$%^& — для меня загадка. Ну не на размере же базы данных они экономят! Вот и попробуйте в Альфа банке придумывать раз в месяц новый пароль не меньше 8 и не больше 10 символов.
Они все равно сделают по-своему
Не ограничивайте пользователей и не считайте их за малых детей (даже если они такими являются). Это все равно бесполезно. Они запишут ваш супер пароль на бумажку и наклеят на монитор.
Вот еще пример из мира операционных систем. Недавно моя домашняя Убунточка с Гномом на борту обновилась и я с удивлением обнаружил, что апплет, которым мы легко и быстро переключались между моей учёткой и учёткой жены больше не позволяет это сделать. Теперь нужно каждый раз идти в окно выбора пользователей и вводить пароль. Раньше это тоже было, но опционально. Естественно для дома я эту опцию ввода пароля отключал.
Можно спорить и отстаивать мнение, что от жены тоже могут быть тайны, но я не об этом. Дело в том, что имеется возможность загружать компьютер без ввода пароля вообще и эта возможность штатная. А переключаться между пользователями мы стали с помощью горячих клавиш, которые работают без настройки — пользователи в Убунте висят на разных консолях, так что Ctrl+Alt+F9 вам в помощь. Я же говорю, что пользователи все равно сделают все по-своему.
Что делать?
-
Позволяйте пользователям самим придумывать пароли. При этом запрещайте создавать пароли меньше 6 символов. В идеале сделайте индикатор надежности пароля. Не ограничивайте максимальную длину пароля.
-
Не ограничивайте срок жизни пароля или сделайте это отключаемой опцией. Если уж очень хочется — напоминайте, что пароль устарел, но не ставьте пользователям ультиматумов.
-
Повышайте безопасность за счёт своего труда, а не за счёт труда пользователя.
Да, бороться с аудитом по безопасности сложно, почти нереально. Но, если не торжествует здравый смысл, торжествует упущенная прибыль. Хотел разместить тут ссылку на поучительную историю о том как Амазон заработал кучу миллионов долларов перестав парить своих пользователей регистрацией (сделав ее необязательной). Но никак не могу найти эту статью, может кто подскажет?
Если вы не хотите, чтобы пользователи что-то делали в вашем интерфейсе, а запретить это вам лень или нету сил, тогда вы пишите объявление типа: «Матерные комменты не писать, ну пожалуйста» или «За нарушение правил форума — бан, смерть и вечное проклятие».
В эту зиму выпало много снега, и несчастные автовладельцы принялись разрабатывать подобные объявления. А те, кто порадивее, те делали серьезную защиту — палки и противотанковые ежи. В память об этом народном творчестве публикую эту небольшую подборку снежных парковок близлежащих дворов (фотки — кликабельны).
Чтобы оценить масштабы бедствия:
Мало создать интерфейс, нужно довести его до состояния, когда им возможно будет пользоваться, а вот это уже на порядок сложнее.
Есть такая компания Макдоналдз. Она американская, а Америка — это такая страна, где уважают инвалидов и считают (на практике, а не в теории) их обычными гражданами, достойными без посторонней помощи сходить на спортивный матч, в магазин или в столовку.
Именно поэтому все русские Макдоналдзы имеют отдельный туалет для инвалидов. А вот сделать крыльцо, ведущее в этот туалет ресторан, доступным для инвалидов — до этого уже руки не дошли. Короче, типичный пример тупого следования заокеанским гайдлайнами, лицемерия и русской экономии:
Назвался груздем — полезай в стандарты
В любом учебнике по веб-дизайну написано, что картинкам нужно проставлять атрибут ALT. Например, для того, чтобы пользователи браузеров для слепых могли узнать, что изображено на фотографии.
Я не пользовался браузерами для слепых, но чую, что ALT в картинках им мало поможет, когда приходится продираться сквозь чащу оформительских таблиц, распорок и прочего внутреннего мусора.
Хотите делать сайты для людей с ограниченными возможностями — следуйте стандартам, используйте семантическую верстку, резиновый дизайн, кастомизируемый размер шрифта и т.п. Тогда и подписи к картинкам пригодятся и TITLE в ссылках будет не лишним.
В заключение хочу показать пример семантической верстки как нужно делать общественные места доступными для инвалидов: версия НТВ, версия РТР.
|
Ах, эти интерфейсы
Этот блог — рассуждения о пользовательских интерфейсах в различных их проявлениях и веб-проектах.
|