Всё ниженаписанное касается не только и не столько опытных пользователей, сколько выражает обобщённые причины неприязни к современным компьютерам (то есть к компьютерным интерфейсам, так как внешний компьютеров вид не вызывает особых нареканий) со стороны малооптыных пользователей, которые не хотят тратить много времени на получение компетенции.
Итак, три самые ненавистные вещи для пользователей: изменения, неожиданности, разрыв контекста.
Во всех своих рассуждениях я буду основываться на понятии «интерфейс для решения задачи», потому что единственная причина, почему пользователь использует компьютер — потому что он может решить ту или иную задачу, который я и буду называть «интерфейсом».
В качестве альтернативы я буду сравнивать несколько других интерфейсов: автомобиль, пианино, печатная машинка.
Изменения
Компьютеры позволяют менять интерфейс (напоминаю, речь про интерфейс для решения задачи) очень быстро и легко. Появление новых функций ставит программиста/разработчика интерфейса/etc перед проблемой логического переупорядочивания элементов. Например, было три функции в top level, теперь их стало семь, давайте разделим их на две логические группы (3 и 4) — всё ок, никакого хаоса.
С точки зрения пользователя: раньше было три логические функции, теперь они куда-то исчезли, на их месте появились два меню, причём одно действие в первом меню, а оставшиеся два во втором. Ад, ужас, погибель, проклятье программисту.
Почему? Потому что когда человек совместно с компьютером решает задачу, смена интерфейса требует отвлечься от решения задачи и начать заново обучать моторные рефлексы, инстинкты, паттерны поведения и т.д. Другими словами, выпихивает пользователя с позиции опытного пользователя в позицию «пользователя начинающего». Снижая производительность, иногда оставляя с нерешённой проблемой (хотя раньше она хорошо решалась!).
Давайте посмотрим, как эта проблема решается на трёх механических примерах. Смена управления автомобилем происходит вместе с автомобилем. И вызывает у человека довольно значительные проблемы — даже пересесть на другую машину — как минимум попривыкнуть к тормозам. А уж смена автомата на механику — это целое приключение. Впрочем, как и обратно. Решением проблемы смена интерфейса автомобиля является чёткое понимание пользователем объёма того, что ему предстоит переучить.
Аналогичное изменение на пианино — насколько я помню, максимум, который можно увидеть — это наличие/отсутствие модератора, третью педаль (по сравнению с двумя). Всё остальное неизменно уже столетия.
Печатная машинка — самая изменчивая из, особенно в районе вспомогательных узлов. Но и там все изменения носят локальный и хорошо понятный масштаб. «На прошлой печатной машинке у меня была кнопка табуляции, а тут вместо неё группа кнопок T1-T4 сверху». Но основной функционал остаётся опять же неизменным.
Неожиданности
Вождение автомобиля приносит максимальное число неожиданностей по сравнению со всеми другими видами деятельности. Но все эти неожиданности — в контексте задачи. Грубо говоря, выскочившая на дорогу собака — неожиданнность в рамках задачи вождения. А вот внезапный переход с переднего на задний привод в процессе вождения на скорости — это из разряда к счастью не сбывшейся фантастики. У остальных двух задач ситуация почти аналогичная, столкнуться с неожиданной сменой проблемы тоже маловероятно.
А вот во всех современных интерфейсах — запросто. Приводить нелепые и скучные примеры не буду, думаю, все понимают, что любое современное приложение может делать неожиданные вещи. Исчезновение меню, «начало всё портить», «появились странные знаки» и т.д.
Разрыв контекста
И всё это на самом деле означает одно: разрыв контекста. Человека внезапно из его локальной и уютной проблемы внезапно выпихивают в суровое бушующее море абстракций, концепций, моделей и принципов построения, которые он совершенно не понимает и не имеет ресурсов изучать.
Уровней абстракции у современных компьютеров так много, что никто не может помнить и знать их все. Изменение их, неожиданное и вываливающееся на пользователя — это всегда разрыв контекста. Вместо своей задачи пользователь начинает (вынужден) думать о проблемах локальных, связанных с чем-то безумно далёким.
У автомобилей, такое бывает, кстати. И вдруг пошёл дым и машина встала. Человек отрывается от процесса вождения и должен выяснять причины (и срочно действовать). И, вдруг, вместо того, чтобы заводиться, чихает и странные звуки издаёт. Загорелась и мигает куча лампочек. И т.д.
Но в отношении автомобилей чётко известно, что это всё — признаки низкого качества (или ужасной эксплуатации), то есть подобные разрывы контекста явно трактуются как аварийные. Для автомобилей считается признаком высокого качества не делать подобные вещи для пользователя. Аналогично для печатной машинки за зацепляющимися буквами, или для пианино со сползающей настройкой струн.
Почему же для компьютеров разрывы контекста считаются совершенно нормальными? Переставить кнопки местами в диалоге? Как нефиг делать. Упихать всё в пять меню и требовать навести на меню перед тем, как показать его? Как нефиг делать, и ещё гордиться этим. Включить мега-супер-режим просмотра? Элементарно.
Задать вопрос (или просто показать сообщение) в середине работы? Запросто. Самым ярким примером я для себя считаю появление сообщения о том, что осталось всего 15% батарейки поверх приложения навигации, причём с автовыключением экрана через несколько десятков секунд после появления сообщения и требованием ввести пароль для разблокировки. Это при условии, что у водителя руки на руле должны быть, вообще говоря, а не пин-код вводить.
командная строка
И тут, внезапно, я хочу вспомнить про интерфейс командной строки. Вы знаете, почему в нём комфортно? Потому что там почти нет неожиданностей. Проблемы могут быть. Ситуация «не знаю, как» — могут быть. Ситуация «слишком сложно, чтобы сделать» — могут быть. Однако, они все находятся внутри контекста. Без его разрывов.
coreutils (и их предшественникам), то есть командам ls, cp, mv, cat, xargs, head, less, etc — уже несколько десятков лет. Вы можете сесть за консоль и иметь интерфейс, который неизменен, который точно делает что делал последние 20 лет, и который точно сделает то, что скажет пользователь. (да-да, я понимаю, что можно поломать и терминал, с злыми console_codes, и забытые кавычки в могут сильно напрячь, и Ctrl-Z/C не всегда срабатывает...). Но в сравнении с любыми графическими интерфейсами у командной строки есть только один плюс — она не меняется. И не меняет своё поведение по очередному рестайлингу всего и вся. За это она любима профессионалами, которые реже попадают в режим «неопытный пользователь» и которая позволяет совершенствовать моторные навыки без «новый уровень, все скиллы сброшены».
Интересно, сколько лет должно пройти, чтобы такая простая вещь, как неизменный интерфейс, появилась и в графических интерфейсах?
Автор: amarao