Из чего состоит качественный, дружелюбный к пользователю интерфейс? Для себя я выделил 5 составляющих.
- Насколько быстро можно обучиться работе с интерфейсом? Одно дело, когда смотришь на окошко и сразу же понимаешь, что здесь к чему, и совсем другое – когда нужно почитать мануал. Разница во времени – порядки. Этот параметр особо важен для сайтов. Ещё Стив Круг подметил, что сайты никто не изучает. В самом лучшем случае их просматривают, бегло и по диагонали.
- Насколько быстро пользователь может решать свои задачи при помощи интерфейса? Одно дело, когда для выполнения операции нужен один клик, другое – что-то набрать в командной строке. Во втором случае вам необходимо вспомнить название команды, её параметры, да ещё и набрать кучу символов на клавиатуре. Не подумайте, что я противник командной строки, ровно как и не её фанат. Для того чтобы определить, при помощи какого варианта можно решать задачи быстрее, надо взять и посчитать. Посчитать надо нажатия клавиш, количество позиционирований курсора, кликов, двойных кликов, время, которое пользователь будет думать и время, которое будет думать сама система. Модель GOMS вам в помощь. Кстати, время решения задач при помощи интерфейса - единственный параметр, который вам получится посчитать.
- Насколько система защищена от ошибок. Этот параметр делится на два подпараметра:
- Вероятность возникновения ошибки. Если в программе есть какое-то место, где пользователь может ошибиться, он обязательно ошибётся. Только в одних случаях – с большей вероятностью, в других – с меньшей. Так например, если вы сделаете кнопку два на два пиксела, то вероятность того, что пользователь промахнётся по ней гораздо выше, чем если бы кнопка была бы 20 на 20. Также вероятность того, что пользователь промахнётся мимо кнопки (конечно же нормальных размеров, эдак 50 на 20 пикселов) гораздо ниже, чем вероятность того, что он опечатается, набирая команду в командной строке. Очень хороший способ увеличить вероятность ошибки – это заставить пользователя помнить какие-нибудь вещи. А самый популярный способ перегрузить человеческую память – наплодить режимы. Сколько раз вы забывали переключать раскладку клавиатуры? :)
- Последствия ошибки. Если вы промахнётесь мимо кнопки и попадёте на пустое место, это гораздо менее страшно, чем если вы случайно попадёте по кнопке удаления документа, который вы составляли неделю. Особо досадно будет, когда отменить это удаление будет невозможно. Основной способ, при помощи которого можно улучшить данный параметр – сделать в программе undo/redo. Правда, не для каждой операции такой undo/redo можно сделать. Так например, когда уже отформатирован жесткий диск или взорвался реактор ядерной станции, которой вы управляете, сделать undo уже затруднительно. В этих случаях надо всеми возможными способами уменьшать вероятность возникновения ошибки (см. пункт 3.1).
- Насколько программа управляема. Программа должна быть управляемой, подконтрольной, полностью слушаться пользователя и делать только очевидные вещи. Кнопки должны нажиматься, галочки включаться и отключаться, программа должна делать минимум неподконтрольных пользователю вещей. В плохо переведённой на русский язык прграммы «Excel 2007» в контекстном меню можно было встретить два пункта под названием «Вставить». Один из них вставлял новую строку, другой – содержимое буфера обмена. Если я печатаю текстовый документ, смотря на клавиатуру (метод слепой печати я так и не освоил), то радостное окошко программы «Download Master», оповещающее о том, что докачался файлик, не должно вероломно отбирать у меня клавиатурный фокус посреди недопечатанного слова. Если я поставил перенести десяток-другой гигабайт файлов с диска на диск и пошёл на обед, я хочу после обеда получить файлы, перенесённые с одного диска на другой. А не сообщение о том, какой-то файлик внезапно оказался с атрибутом «только на чтение», и вопрос, а действительно ли я хочу перенести этот файлик и подождать ещё полчасика?
- И наконец, эстетическая сторона. Проще говоря, чтоб всё красиво было. Влад Головач в своей книге «Как мыть слона» называет этот параметр сексуальностью интерфейса. Этот параметр я специально сделал самым последним. Он ни в коем случай не должен препятствовать первым четырём, и никогда не должен быть единственным рассматриваемым. Иначе у вас получится красивая позолоченная какашка.
Как видно, из всех параметров количественную оценку можно дать только одному из них. Насчёт остальных можно только говорить в ключе «Если мы расположим элементы вот так, то это повысит скорость обучения». Сказать, что «вот эта вот фишка уменьшит время обучения на полминуты», нельзя. А нельзя потому, что нельзя объективно померить. И это одна из причин, почему обсуждение GUI в большинстве случаев - невероятно холиварное занятие. Вопрос, как снизить остроту таких «священных войн»? Могу посоветовать следующее:
- Учить матчасть. На тему юзабилити написан не один десяток книг, в которых собран опыт целых поколений. Прочитайте всем коллективом хотя бы одну книжку, и количество холиваров уменьшится на порядок.
- Не ударяйтесь в мелочи, пока не обсудите ключевые вопросы. Можно убить целый день, споря о том, каким цветом изобразить кривую на графике в то время как получить от программы этот график без слёз и мата с текущим вариантом интерфейса просто невозможно.
- Если есть возможность – доверьте проектирование интерфеса профессиональному специалисту по юзабилити. Только пригласите его не тогда, когда всё написано, а до того, когда начнёте писать.
Конечно, в этой маленькой статейке невозможно рассказать об интерфейсах всё. Поэтому, читайте книжки, думайте головой, следуйте здравому смыслу и не ссорьтесь :)