Здравствуйте, дорогие мои друзья...и враги.
Сегодня поговорим о наболевшем, о юзабилити. Термин этот стал широко известен не так давно, но употребляют его все подряд, не особо задумываясь о смысле. Если взять определение с википедии, то получится примерно следующее: "юзабилити" - итоговый уровень удобности предмета для использования в заявленных целях.
Введение
На самом деле, уровень удобства достаточно легко оценивать. Для этого предлагаю ввести термин: "система". Под системой будем подразумевать сущность (любого типа), с которой пользователь взаимодействует в данный момент работы. Примеры: текстовый редактор, окошко чата, сайт, консолька, загрузочный экран.
Удобство можно неформально определить примерно так:
- Система должна предоставлять пользователю весь необходимый для достижения его цели функционал.
- Система должна быть проста в использовании (разумеется настолько, насколько это возможно), работа с ней не должна вызвать отрицательных эмоций или раздражения.
- Хорошо, если системой приятно пользоваться, то есть в ходе работы с ней пользователь испытывает положительные эмоции.
С моей точки зрения, юзабилити любой системы можно разделить на три части: пассивная часть, псевдоактивная часть и активная часть. Итак, по порядку.
Пассивная часть
Пассивная часть системы с точки зрения юзабилити - это те "удобства", которые пользователь получает не совершая никаких действий, и при этом система также не совершает никаких действий. Например, чёрный текст на светлом фоне сайта. Эта часть юзабилити, которую пользователь увидит, как только зайдёт на сайт, для этого ему не нужно предпринимать никаких действий. Можно привести пример и не из цифрового мира. Рассмотрим штативы для фотоаппаратов. В хороших штативах на ножках есть специальные поролоновые подкладки, за которые удобно держать штатив в холодную погоду (так как штативы сделаны из металла, без таких подкладок руки очень быстро замерзают на морозе).
К пассивной части обычно относится типографика и дизайн, то есть цветовое оформление, шрифты, расположение блоков и всякая другая фигня, с которой сталкивается рядовой дизайнер делая новый сайт, или разработчик ПО, когда пишет новую программу. С моей точки зрения, эта часть юзабилити очень важна, но никакой магии тут нет. Любой хороший дизайнер назовёт вам сходу десяток правил, следуя которым можно получить неплохой дизайн в конечном счёте.
Псевдоактивная часть системы
Фактически, это то, как система реагирует на действия пользователя. Как себя ведёт сайт если навести мышку на ссылку? Как себя ведёт окошко асечки если закрыть окно диалога, а потом снова открыть? Что сделает банкомат, если всунуть кредитку неправильной стороной?
На эту тему я кстати вспомнил сайт, носящий гордое название "лаборатория юзабилити". Побывав на нём, я понял что его разработчики достойны как минимум мучительной смерти… Как на сайте с таким названием ссылки могут никак не реагировать на наведение мышки? Какое юзабилити, вашу мать? Идите в детский садик, конструктор пособирайте лучше… Это очень важная часть системы.
В отличие от пассивной части, законов тут уже гораздо меньше, обычно разработчикам большинство вопросов приходится решать как-будто впервые…мне сложно объяснить, почему это так. В современном мире больше всего, конечно, заметны продвижения в этой области у разработчиков из команды "вконтакте". Вот эти ребята не боятся экспериментировать! Большинство всяких фейсбуков и твиттеров ограничиваются хорошими дизайнерами (тоже кстати не всегда), и на этом ставят жирную точку. А вот вконтактовцы опираются на прогеров, что при грамотном руководстве, безусловно, даёт очень даже миленькие результаты.
Если говорить о материальном мире, то наличие и отсутствие псевдоактивной части юзабилити можно пронаблюдать, например сравнив наши жигули с каким-нибудь nissan teana. Что сделает иномарка если разогнаться и врезаться в стену? В первую очередь раскроет подушку безопасности. Дальше может связаться с 911 и передать координаты аварии. Этот ряд действий - реакция на действие водителя. В наших машинах он отсутствует, что может оказаться роковым в наподходящий момент.
Кстати, большинство иномарок сейчас проектируют так, чтобы при лобовом столкновении двигатель уходил вниз, а сминающийся металл тормозил движение - это уже пассивная часть юзабилити.
Если говорить о сайтах и о программах, то тут нужно стараться сделать максимально просто, предсказуемо, надёжно и красиво. В своё время мне пришлось переписать половину стиля своего сайта, так как я хотел чтобы ссылки были синего цвета и подчёркивались при наведении - это шло вразрез со старым стилем. Зачем это было нужно? Потому что это привычно, такое действие пользователь ожидает от системы. Ссылочки синие, те на которых мы уже побывали - фиолетовые, при наведении подчёркиваются. И никак иначе. Едем дальше.
Активная часть юзабилити
Вообще говоря, эта часть не всегда отличима от предыдущей, но я всё-таки вынес её в отдельный раздел. Эта часть системы, которая предпринимает собственные действия, дабы повысить удобство использования системы. Простейший пример: если выключить в комнате свет, то на моём ноутбуке включится подсветка клавиатуры.
Давайте рассмотрим любое окно современного чата, будь то чат на сайте, в аське или где угодно. Если пользователь ошибается в сообщении, он обычно пишет поправку к сообщению, начинающуюся со звёздочки. Пример:
- Привт уютная жжшечка!
- *привет
Знакомо, да? Ну казалось бы, это уже фактически международный стандарт поведения. Почему нельзя при отправлении сообщения начинающегося со звёздочки проверять, является ли оно исправлением предыдущего (любой программист-восьмиклассник вам такую проверку напишет), и если является, то вместо добавления нового сообщения исправлять предыдущее. Таким образом вместо вот такого:
- Привт уютная жжшечка!
- *привет
Мы бы получили такое:
- Привет уютная жжшечка!
Сложно? Нет. Охуенно? Да. К сожалению, считается что пользователь самый умный, а система за него ничего делать не должна. В общем-то это не так (кстати ещё один пример - жжшечка сама сохраняет бекапы, пока пользователь создаёт новую запись).
Между прочим, примеры этой части юзабилити есть у современных поисковиков, например гугл меняет слово с опечаткой на правильное, и показывает верные результаты поиска, а яндекс пошел ещё дальше, и умеют делать вот так:
http://yandex.ru/yandsearch?text=vector+push_back&lr=213 (первой строчкой сразу показывают пример использования, да ещё и с подсветкой кода - молодцы!)
Вот, как-то так можно классифицировать юзабилити любой системы.
Распределение ролей в проекте:
- Пассивная часть - дизайнеры.
- Псевдоактивная часть - дизайнеры, программисты, чуваки следящие за поведением системы.
- Активная часть - программисты, чуваки следящие за поведением системы.
Ситуация
С моей точки зрения, с юзабилити всё пока очень плохо (да чего уж там, хуёво всё пока), ибо ситуация тут очень простая: юзверь права голоса не имеет, ибо юзверев много обычно (будь то крутой сайт, или водители "жигулей"), и даже если один будет вякать, или даже прекратит использование системы - ничем это создателям системы грозить не будет.
А разработчикам системы обычно наплевать, ибо если юзеров нет то они думают о том откуда их взять (и редко при этом задумываются о юзабилити), а когда юзверы есть - см. предыдущий параграф. Опять же, даже если система клёвая и юзверы есть - её же в идеале нужно постоянно менять, допиливать, глядя в каком направлении движутся юзверы. Такое в нашем мире встречается и вовсе редко, а жаль.
На эту тему нельзя не вспомнить пример абсолютно похуизма компании epic games при разработке Unreal Engine 3. Где-то в середине 2005 года в UT 2004 возник новый - совершенно потрясающий режим игры, требующий высокого уровня кооператива, точности стрельбы и эффективного управления техникой - VCTF - Vehicle Capture The Flag (захват флага с техникой). Основой режима послужило то, что в силу несовершенства движка, техника физическим движком заключалась в кубики, что позволяло одному игроку сидеть на крыле летающей техники, в то время как второй игрок управлял техникой, и они вдвоём пролетая над флагом его как бы хватали (так называемый MantaRun). Картинка для ясности:
А теперь вопрос: как надо было абсолютно наплевательски не следить за своим продуктом, чтобы сука исключить в следующей версии игры такой режим игры как класс?!!! И ведь я не о двух прогерах с кошкой в деревенской избушке говорю, речь о многомиллионной корпорации!!
И чо?
Возникает логичный вопрос - что делать?
Отвечу честно, я не знаю. Я описал вопрос и высказал своё мнение по данному вопросу. Глобальных способов всё изменить нету, наверное нужно просто пытаться делать лучше то что делаешь, и надеяться, что со временем все начнут делать то де самое. Пока такого не происходит: все останавливаются на пассивной части (сделали хороший дизайн, и ладно), и то не всегда.
P.S. Кстати к юзабилити можно отнести ещё и вопрос стандартов, например USB рулит, а вот всякие HTML и CSS безбожно сакс, ибо где попало работают как попало.
P.P.S. Впрочем, дорогие мои юзверы, обычно разработчиками похуй, а заказчики сами не понимают чего хотят. Так-то.
P.P.S.S. Я возвращаюсь в жжшку =)