Интерфейс: новые направления в проектировании компьютерных систем. Д.Раскин 2003

О ЧЕМ И ДЛЯ ЧЕГО ЭТА КНИГА

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

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

Кто успел предложить на рынок что-то новое, "ранее не жратое", тот и получит основную прибыль. О каком качестве может идти речь?! Затраты на производство экспоненциально растут при малейшем росте требований к качеству. Следовательно, качество всегда приносится в жертву - до тех пор, пока продукт не опустится ниже определенной планки (которая из года в год снижается). Производители программного обеспечения находятся в особо выгодном состоянии - как правило, в соответствии с политикой лицензирования их невозможно привлечь к ответственности. Их никто не контролирует столь сильно, как, скажем, производителей военной техники, лекарств или продуктов питания. Да если и в этих областях общественность периодически взбудораживается громкими скандалами, то стоит ли говорить о качестве софта?

Таким образом, рыночно-конъюнктурные соображения, определяющие лицо (лицо ли?) современной технологической стадии цивилизации, рано или поздно ее, эту цивилизацию, и погубит! Есть ли возможность противостоять пагубной тенденции? Разве остановят людей, сознательно наносящих вред потребителю и в целом массе других сопланетников, моральные или религиозные соображения? Отнюдь! Единственную надежду я возлагаю на общественное мнение. Вероятно, для этого придется создать моду на качество, которая постепенно должна перейти в законодательную плоскость (как, наконец-то, это происходит с экологией).

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

С таким положением дел я, как и Раскин, категорически не согласен. Я почитаю надежность и эргономичность важнейшими качествами технического продукта. Я хочу просто работать, а не тратить свое время и нервы на борьбу с глюками техники имярек. Я не считаю нормальным, что купленная за $3000 среда программирования микроконтроллеров не работает под Windows-2000, в то время как нужная ей Windows-98 не желает работать на моем "слишком новом" компьютере. Я не считаю нормальным, что мой сотовый телефон зависает при наборе СМС так, что приходится вытаскивать аккумулятор. И я не желаю тратить время и деньги на поиск и установку бесконечных прошивок и патчей, каждый из которых с вероятностью 90% испортит не меньше, чем исправит. Однако самое ужасное, что потребитель с самого детства приучается считать все это нормальным!

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

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

О НАДЕЖНОСТИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

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

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

По первому вопросу Раскин справедливо и настоятельно утверждает, что данные пользователя (его овеществленный труд) есть самая большая ценность, которая ни при каких обстоятельствах не должна быть потеряна.
Теперь вспомните, как часто Вы теряли набранный кусок текста при необъяснимой фатальной ошибке Microsoft Word (tm)? Несмотря на наличие полезнейшей опции "автосохранение изменений", я еще не встречал ни одного пользователя, который бы не отмечал, что при использовании этой опции Word слетает с завидной стабильностью от версии к версии; причем заметно чаще, чем при ее отключении.

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

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

Хорошее ПО должно поощрять автоматические навыки работы, что возможно только в том случае, когда интерфейс является стабильным (не изменяет свой вид по каким-то неочевидным для пользователя правилам). Маленький, но яркий контрпример - задержка показа полного меню в пресловутом Word-е. Ниже - более подробно.

О МОДАЛЬНОСТИ ИНТЕРФЕЙСА

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

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

ОБ ЭРГОНОМИЧНОСТИ ИНТЕРФЕЙСА

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

Раскин предлагает методику расчета эргономичности интерфейса, основанную на подсчете количества элементарных движений для выполнения тех или иных действий. Хотя она и небесспорна, я впервые встречаю такую методику в литературе.

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

О МАСШТАБИРОВАНИИ ИНТЕРФЕЙСА

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

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

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

Легкое масштабирование изображения привычно пользователям CAD-систем и является еще одним шагом вперед в деле эргономики интерфейса. Об ииспользовании такой технологии для представления любой информации и дальнейшем развитии этой технологии и говорит Раскин.

Разумеется, реализовать эти простые идеи в широкой массе коммерческого софта будет не особо легко.
Но и особых технических препятствий к этому не видно, компьютеры нынче мощные пошли, и грех растрачивать их ресурсы на фоновый просмотр фильма вместо полноценной работы. Дерзайте и творите!

И НЕМНОГО О ФУНКЦИОНАЛЬНОСТИ

По собственной неосторожности я сломал верой и правдой служивший 20 лет ГДР-овский миксер. Пошел покупать новый, но не мог найти ничего похожего.Описывал ту функциональность, которая мне нужна, но продавцы меня не понимали. Они говорили: "Так не бывает. Вам нужен вовсе не миксер, а целый кухонный комбайн. Или несколько отдельных специализированных устройств".

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

Более свежий пример - невозможно найти ни одного сотового телефона, в котором были бы реализованы одновременно все функции - обязательно чего-нибудь да не хватает (хотя очевидно, что технических проблем в этом нет никаких). Я таки нашел подходящий смартфон (Motorola MPX-100),
ждал его полгода, пока не сообщили, что он не будет выпущен - продавцы не проявили заинтересованности в этой слишком хорошей модели. Естественно - кто же тогда будет покупать другие модели! (Забавно, что сегодня сообщений с этой формулировкой в интернете не нашел - тоже симптоматично ;)

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

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

И эта последняя цель мне представляется самой важной и благородной.

Донской Алексей Николаевич
http://simulators.narod.ru

Комментарии

Молодца

Полностью согласен!!! Респект автору!

Изображение пользователя zeroed.

Спасибо!

Спасибо за эту статью!

Я начал делать одну программу где-то полгода-год назад, уже точно даже сказать не могу. Начало было очень хорошим, но вот потом все пошло наперекосяк.

Теперь я понял почему это произошло. Начиналось все для себя и интерфейс был максимально простой: была кнопка открыть файл, пару чекбоксов и кнопка сделать действие. Но потом я решил что было бы неплохо сделать программу общественно полезной и начал разрабатывать "дизайн". Естественно опираясь на текущее мировоззрение в области приложений и глядя на word, проводник и прочее прочее прочее: в общем все то, к чему "привык" пользователь.

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

И вот проект лежит себе на жестком диске и ждет своего "звездного" часа.

Теперь я понял что должен сделать! Будет большая кнопка открыть. Пользователь открыл файл. Кнопка исчезает, появляется окно с чекбоксами, предоставляющее настроить результат, и последнее окно - кнопка выполнить.

Дополнительно кнопки назад и вперед которые будут сохранять свое состояние.

ВСЕ.

А ведь больше ничего не надо. :)

Еще раз, спасибо. Думаю, скоро мир увидит мое творение ;)

Изображение пользователя Alexey_Donskoy.

Пожалуйста... к размышлению...

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

Раньше всё было элементарно: мышеклик правой кнопкой - контекстное меню - свойства - диалоговое окно настройки параметров, где всё можно выбрать, окинуть взглядом ещё раз, чтобы проверить, и нажать Ok. Хотя, конечно, не всё идеально. Например, чем отличается "Ok" от "Применить", я не понимаю до сих пор ;)

Помнится также, что раньше стоял дополнительный интерфейс управления (вот только не помню, от ATI или как раз наоборот). С ним было ещё удобнее - кликнул по значку в трее и выбрал нужную настройку в контекстном меню. Практически идеал.

Сейчас у меня на столе стоит ноутбук с Вистой и с ATI Catalist Control Center. Мало того, что этот монстр постоянно лезет в Интернет (за мои деньги, между прочим!), и что он там делает, и как это влияет на мою безопасность и приватность... ну да ладно... речь сейчас не об этом. Вот теперь, когда кликнешь на значок в трее, в контекстном меню уже нет конкретных настроек, приходится открывать этот Контрол Центр... А там - запускается мастер, который предлагает разные задачи в очень непонятных и странных формулировках. Затем ведёт меня к цели одному ему известным путём... В результате не я им управляю, а он - мной! С чего бы мне это должно нравиться?

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

Теперь ещё о модальности интерфейса, где Раскин, конечно был прав, но тоже не всегда. Зачастую единственным способом избавиться от явного наличия состояний программы представляется размазывание процесса во времени (как Вы описали). При этом, конечно, убирается неопределённость и убирается необходимость (пользователю) отслеживать состояние программы, но появляется необходимость отслеживать путь выполняемого процесса (последовательность диалоговых кадров). Так вот, такая альтернатива значительно хуже. Поскольку обычно состояние можно отобразить явно (что давно умеют делать даже в самых примитивных игрушках). А вот путь прохождения процесса - показать явно гораздо труднее. И, если его надо будет держать в памяти, то модальность программы фактически многократно увеличивается!

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

В "Цитатник":
- одно окно лучше, чем много;
- пространственное развёртывание рабочей области (например, набора каких-либо настроек) лучше, чем временнОе (например, последовательность вопросов с вариантами выбора).

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

Изображение пользователя zeroed.

А был ли мальчик?

:)

Спасибо за развернутый ответ. Я понял вашу мысль. Но вот теперь я не понял к чему же призывает книга автора. Надо наверное почитать.

Изображение пользователя Alexey_Donskoy.

Был ;) Убедитесь!

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

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

Изображение пользователя zeroed.

Тыц

Безусловно, спасибо за это. Мне нравятся ВСЕ ваши статьи. :)

Может и про кризис напишите и про безсистемное управление и про повальную скупку доллара? :)

Изображение пользователя Alexey_Donskoy.

Кризиса не будет!

Нельзя написать про то, чего нет ;)
Не будет кризиса в России ;)
Будет время перемен, как говорят умеющие слышать Мир люди.
В такое время открывается много новых возможностей, как в социальной, так и в духовной сфере.
Возможность умножить капитал. Для кого-то - вырастить новый бизнес, для кого-то - духовно вырасти самому.

О-о-о-чень

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