Интерфейсы для мастеров

Влад Головач, 2006

Однажды я видел, как профессиональный каменщик строит кирпичную стену. Зрелище было весьма поучительным: каменщик почти ничего не делал, а кирпичи загадочным образом оказывались в стене. Рядом работал его не столь профессиональный коллега: он, напротив, работал. Если первый каменщик просто брал кирпичи и клал их на место (оба работали без помощников), второй каменщик аккуратно накладывал раствор, аккуратно брал кирпич, аккуратно клал его в стену, аккуратно выравнивал и аккуратно же стучал по нему — а в промежутках между операциями суетился и делал множество лишних движений.

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

Этот случай был для меня очень поучителен. Я впервые увидел столь явную разницу между мастерством и профессионализмом. Мастерство было недвусмысленно лучше. Я стал гораздо сильнее ценить практический опыт и стремление учиться, поскольку они — прямейшая дорога к мастерству.

Правда, одних их мало. Помимо опыта и мотивации важны еще два фактора: способности работника и пригодность инструментов к мастерской работе.

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

С инструментом все сложнее. Обычный кирпич сделан в расчете на то, что он будет хорошо составлять часть стены; о работе по его укладке никто не задумывается, так, например, никто не делает кирпичи легче, чтобы для их укладки требовалось меньшая мускульная сила. В случае кирпича это правильно, потому что кладут его несколько секунд, а стоять в стене он должен десятилетиями — но в других областях это соображение применимо не всегда.

В особенности же это неприменимо в случае человеко-компьютерного взаимодействия. Однако перед тем, как обосновать это суждение, я бы хотел определить, что, собственно, помогает становлению мастерства.

Во-первых, разумеется, практика (она же во-вторых, в-третьих и в четвертых).

Затем — уже упоминавшаяся мной в контексте кладки кирпичей нетребовательность к способностям человека. Если человек изначально не подходит для какой-либо деятельности, ему будет как минимум сложнее стать в этой деятельности мастером.

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

Далее идет помощь уже состоявшегося мастера. Некоторым вещам фактически невозможно научиться самому — нужно, чтобы кто-то это показал. Как отвернуть прикипевший болт? Мы с вами скажем, что нужно рычаг побольше, а руки посильнее, но Великий Мастер Болтов знает и другие варианты, включая, но не ограничиваясь, Нагревание, Инъекцию керосина и Равномерное Постукивание. Чтобы научиться этим трюкам самому, без чужой помощи, их нужно изобрести — что, как минимум, маловероятно.

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

Что такое стабильность инструмента

Одним трагичным днем сломался мой стул, очень удобный. Чтобы его починить, нужно было выдолбить паз в деревянной ножке, чтобы поставить дополнительную распорку. Мои мучения в тот день были неисчислимы. Дело в том, что дерево было крепким, а стамеска — очень низкокачественной (предметы такого качества часто презрительно называют муляжами). Стамеска мгновенно тупилась и мне приходилось постоянно ее затачивать. Дело осложнялось еще и тем, что до этого я в последний раз держал в руках стамеску еще в школе, на уроке труда.

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

Конечно, проделав сотни две пазов, я бы стал мастером — но мастером чего? Изготовления пазов или преодоления недостатков стамески? По-моему, ответ очевиден.

Стамеска была нестабильной, отсюда и все мои беды. Если бы стамеска не изменяла свои характеристики во время работы, все было бы иначе:

  • Мне не нужно было бы подстраиваться к ней постоянно. За первые несколько минут работы с ней я бы понял ее и особенности и далее мог бы работать соответственно.
  • Я мог бы тратить меньше ментальных усилий (не говоря уж об усилиях физических). Мне приходилось контролировать и состояние детали и состояние стамески, хотя контроля над состоянием детали было бы вполне достаточно.
  • Мне было бы проще соотносить свои действия с полученным результатом, благодаря чему мне было бы легче научиться работать со стамеской. Каждое свое действие я должен был рассматривать, учитывая вносимые стамеской помехи, что сильно затрудняло анализ результата и, как следствие, обучение.

Таким образом, нестабильность инструмента является его несомненным минусом. Кроме того, благодаря примеру со стамеской, можно дать четкое определение стабильности взаимодействия человека с объектом:

Стабильным я называю взаимодействие, практически не изменяющееся от времени и не требующее от человека часто переключаться с действия на получение обратной связи.

Мое взаимодействие с пресловутой стамеской не было стабильным, поскольку:

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

Нестабильность компьютерных интерфейсов

А теперь самое интересное. Как можно повысить пригодность к мастерству у компьютерных пользовательских интерфейсов?

Напомню, что в целом этому способствуют:

  • практика
  • нетребовательность к способностям пользователя
  • автоматизация
  • помощь состоявшегося мастера
  • стабильность.

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

Помощь состоявшегося мастера, напротив, значительно шире, но здесь говорить о ней не место. Достаточно сказать, что самое разумное, на мой взгляд — взять на себя обязанности мастера и поместить обучающие материалы напрямую в интерфейсе.

А теперь самое интересное — стабильность.

Стабильны ли современные интерфейсы?

Разбираются только Windows-интерфейсы

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

Фокус

В графических оконных интерфейсах есть несколько т.н. фокусов, в частности фокус клавиатурного ввода и фокус оперирования.

  • Фокус клавиатурного ввода определяет, какой элемент управления сейчас активен и какой именно ввод от пользователя сейчас приемлем. Если кликнуть на поле ввода, можно нажать на клавишу Ж на клавиатуре и в поле появится символ Ж. Если сделать то же самое на, к примеру, чекбоксе, клавишу Ж можно жать до посинения, но ничего не произойдет.
  • Фокус оперирования определяет, какое именно приложение сейчас доступно для ввода; если приложение многооконное, фокус оперирования определяет также какое именно окно активно в настоящий момент.

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

Разберем это на примере. Я пишу эту статью в текстовом редакторе. Внезапно работающая в фоновом режиме программа-органайзер решает, что пришло время напомнить мне о том, что я должен ехать на очередную встречу. Бум! Выскочило диалоговое окно с напоминанием, фокус оперирования сместился на него, я, даром что смотрел в это время на экран, так и продолжил печатать слово «адиабатический» — сугубо по инерции. В редактор в результате попал только огрызок слова.

Что я должен сделать в такой ситуации? Многое:

  1. Понять, что произошло.
  2. Оценить, что я должен сделать в ближайшее время. Как правило, это…
  3. Переключиться назад в текстовый редактор.
  4. Вспомнить, что я собирался написать именно слово «адиабатический».
  5. Если я еще помню предложение, которое я собирался написать, написать его. Если не помню, решить, успею ли я еще придумать предложение заново или уже пора бежать.

Если бы новое окно открылось без кражи фокуса:

  1. Я по крайней мере смог бы дописать предложение до конца, после чего…
  2. Переместил бы взгляд на окно напоминания, прочел его содержимое и решил, что мне делать дальше. Как правило, это…
  3. Дописать абзац и поехать на встречу.

Контраст, на мой взгляд, разительный.

Отработка исключительных ситуаций

Сейчас является нормой, когда при любой исключительной ситуации (читай — человеческой ошибке) система переводит пользователя в режим коррекции его действий.

Рассмотрим очередной пример. Пользователь заполняет форму и в поле возраст вводит слово «Вася». Возможно несколько реакций системы (в зависимости от квалификации ее разработчиков; перечислены в порядке убывания вероятности):

Вариант 1. Как только пользователь нажимает на кнопку Сохранить, открывается окно со словами «В одно или несколько полей введена некорректная информация (код ошибки #F4567)». Окно ворует фокус из формы.
Вариант 2. Как только пользователь, введя «Вася» переходит к следующему элементу формы, выскакивает то же самое окно и точно так же ворует фокус.
Вариант 9. Как только пользователь нажимает на кнопку Сохранить, форма перезагружается; в новой форме сверху написано, что «В одно или несколько полей введена некорректная информация (код ошибки #F4567)» и поле возраста подсвечено красным.
Вариант 10. Как только пользователь вводит символ «В», система показывает ему рядом с полем пузырь со словами «Сюда можно вводить только число (от 1 до 130)». Фокус при этом не воруется.
Вариант 11. Попытавшись ввести символ «В», пользователь обнаруживает, что ввести его невозможно. После нескольких попыток пользователь вводит искомый возраст.

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

Чем чаще пользователь изменяет цель своих действий, тем менее стабилен интерфейс.

Игнорирование клавиатуры

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

Как бы хорошо пользователь не владел мышью, любая мышиная операция по числу действий длиннее клавиатурной операции:

  1. Найти взглядом, где расположен курсор сейчас.
  2. Найти взглядом, куда его нужно переместить.
  3. Переместить курсор.
  4. Нажать на клавишу мыши.

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

  1. Не отрывая взгляда от нужной кнопки на экране, протянуть руку и нажать на нужную клавишу.

Вся разница в том, что курсор всегда находится в разных точках экрана, а клавиатура остается неподвижна. Соответственно, клавиатура стабильна, а мышь нет.

Микроскопические элементы управления

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

Согласно всесильному закону Фиттса, клик по маленькой кнопке занимает большее время, чем по кнопке большой. Но откуда берется это увеличение продолжительности? Ответ — время тратится на прицеливание перед и во время движения мыши, т.е. на получение обратной связи. Так что мелкие элементы управления содержат дополнительную нестабильность.

На мой взгляд, мода делать все мелким, родившаяся в тысячелетие маленьких экранов, попросту устарела. Когда среднестатистический монитор имел разрешение 800*600, в ней был несомненный практический смысл, но сейчас, когда разрешение 1024*768 является рабочим минимумом, малюсенькие элементы управления потеряли все свое очарование.

Я убежден, что форма должна быть маленькой по площади только в одном случае — если при ее заполнении пользователь должен видеть данные из другой формы. Если этого не требуется, форме лучше быть побольше, облегчая ее чтение (ничего так не ускоряет сканирование формы взглядом, как обилие с умом примененного пустого пространства) и, главное, наведение курсора.

Злоупотребление окнами

Предположим, пользователь заполняет платежное поручение и доходит до места, в котором ему нужно выбрать контрагента из списка, а контрагента в списке-то и нет, т.е. его надо добавить. Типичное решение — рядом со списком ставится кнопка Новый контрагент…, нажатие на которую вызывает диалоговое окно с формой ввода контрагента.

У этого решения есть, безусловно, некоторые достоинства, но также и недостатки:

  • Модальные окна переводят пользователя в новый режим. Немодальные — увеличивают количество вариантов взаимодействия, что не всегда хорошо (зачем, спрашивается, пользователю изменять размеры окна, если его этот размер уже устраивает?).
  • Нехорошо, если порожденное окно больше по размеру породившего его окна. А значит, возникнут неизбежные проблемы с обеспечением компактности элементов управления (см. выше).
  • Это решение не универсально, поскольку окно может быть только одно: из открывшегося окна нельзя вызывать другое окно (больше одного порожденного окна это mauvais ton).
  • Наконец, самое главное: окно разрывает деятельность пользователя. Изначально пользователь заполнял платежку, окно же временно переведет его на деятельность «создание контрагента». Этот разрыв плох сам по себе (деятельность надо беречь), но для стабильности он просто катастрофичен.

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

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

В обоих случаях окна не нужны.

Заключение

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

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

Второй способ, превращение работника в мастера, пусть и в ущерб менее способным или мотивированным работникам, кажется мне не только более прагматичным, но также и более моральным. Что нечасто случается.

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

Вот поэтому я и выступаю за стабильность.


Изначально опубликовано в блоге Usethics.

Show your support

Clapping shows how much you appreciated Влад Головач’s story.