Александр (alexandrpavlov) wrote,
Александр
alexandrpavlov

Вежливость программы

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

  1. Вежливая программа интересуется мной
  2. Вежливая программа относится ко мне уважительно
  3. Вежливая программа обходительна
  4. Вежливая программа ведет себя разумно
  5. Вежливая программа предвидит мои потребности
  6. Вежливая программа отзывчива
  7. Вежливая программа не склонна делиться своими личными проблемами
  8. Вежливая программа в курсе происходящего
  9. Вежливая программа проницательна
  10. Вежливая программа уверена в себе
  11. Вежливая программа всегда сосредоточена
  12. Вежливая программа покладиста
  13. Вежливая программа дает мгновенное удовлетворение
  14. Вежливой программе можно доверять

1. Вежливая программа интересуется мной

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

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

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

К примеру, в записной книжке моей почтовой программы одиннадцать человек с именем Дэйв. С большинством из них я общаюсь редко, но среди этих людей мой лучший друг Дэйв Карлик (Dave Carlick), которому я постоянно отправляю сообщения по электронной почте. Когда я создаю новое сообщение и набираю в поле адресата неоднозначное имя «Dave», то ожидаю, что программа на основе моего поведения в прошлом сделает вывод, что я имею в виду Дэйва Карлика. Если я захочу отправить сообщение другому Дэйву, Дэвиду Фору, например, то наберу «Dave F», «D4», «David Fore» или что-то подобное, чтобы указать на необычность своего выбора. Но нет, программа каждый раз открывает диалог, заставляя меня выбирать, какого из одиннадцати Дэйвов я имею в виду. Программе на меня наплевать, она считает меня незнакомцем, хотя я – единственный известный ей человек.


2. Вежливая программа относится ко мне уважительно

Любой работник сферы обслуживания относится уважительно к своим клиентам. Он понимает, что клиент всегда прав, и должен получить то, что желает. Когда в ресторане метрдотель провожает меня к столику, я считаю его выбор столика предложением, а не приказом. Высказав вежливый протест и выбрав другой столик в пустом ресторане, я ожидаю, что мое желание удовлетворят немедленно. Получив отказ, я, вероятно, уйду и выберу другой ресторан, где мои желания ставятся выше желаний метрдотеля.

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



3. Вежливая программа обходительна

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

Если делаю заказ в ресторане, должно быть очевидно, что мне понадобится также нож, вилка, ложка, стакан воды, соль, горчица и салфетка.

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


4. Вежливая программа ведет себя разумно

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

Неподходящие функции в неподходящих местах – вот клеймо продуктов, основанных на программном обеспечении. Отличный пример недостаточно здравого смысла – беспроводной ключ моего автомобиля. Приводившаяся ранее цифра «примерно $500» – хорошая иллюстрация возможности применения здравого смысла в интерфейсе.

Ходит много страшилок о том, как клиенты подвергаются оскорблениям со стороны иррационально рациональных компьютерных систем, постоянно присылающих чеки на сумму $0,00 или на $8943702624,23. Кошмары служб поддержки преимущественно отошли в небытие благодаря продуманной изоляции клиентов от компьютерных систем, однако сотрудникам компаний по-прежнему приходится взаимодействовать с такими системами. Сотрудники получают за это деньги, поэтому не склонны громко жаловаться, да и жаловаться обычно некому – служба поддержки клиентов обычно сотрудникам недоступна.


5. Вежливая программа предвидит мои потребности

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

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


6. Вежливая программа отзывчива

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

Мой компьютер обычно функционирует в видеорежиме, дающем разрешение 1024х768. На презентациях мне приходится временно уменьшать разрешение до значения 800х600, соответствующего более низкой разрешающей способности видеопроектора. Многие из моих программ, включая Windows 2000, реагируют на уменьшение разрешения изменением размеров и вида окон, а также их положения на экране. Однако я всегда и довольно быстро меняю разрешение компьютера обратно на 1024х768 точек. При этом окна, автоматически изменившиеся при переходе на более низкое разрешение, не восстанавливают свои настройки, подходящие для более высокого разрешения. Необходимая для этого информация существует в компьютере, но программа просто не восприимчива к моим очевидным потребностям.


7. Вежливая программа не склонна делиться своими личными проблемами

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

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

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


8. Вежливая программа в курсе происходящего

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

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

При поиске в Интернете с помощью типичной поисковой машины я никогда не уверен в степени актуальности возвращаемых ссылок, что делает поиск бесполезным. Я щелкаю по интересующей меня ссылке и получаю только мерзкое сообщение «404 Link Not Found» (документ по ссылке не найден). Почему бы поисковой машине не проверять периодически каждую ссылку? Если ссылка умерла, то бесполезную запись можно выбросить из индекса базы данных, чтобы я не тратил свое время впустую.

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


9. Вежливая программа проницательна

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

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

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


10. Вежливая программа уверена в себе

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

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

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

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


11. Вежливая программа всегда сосредоточена

Если я заказываю салат в хорошем ресторане, мне приносят хороший салат. В плохом ресторане учиняется допрос: «Со шпинатом, Цезарь-салат или овощной? С луком? С гренками? С тертым сыром? Пармезан или романо? Полная порция или к обеду? Соус французский, итальянский, масло с уксусом, Тысяча Островов? Соус на тарелке? Подавать до или после главного блюда?» Даже самый требовательный гурман не настолько озабочен салатом, чтобы подвергаться такой мариновке, однако интерактивные системы ведут себя подобным образом постоянно. Приложение Adobe Photoshop печально известно своей способностью забрасывать пользователя многочисленными отвратительными и ненужными вопросиками, причем каждый появляется в отдельном диалоговом окне.

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

Выбор ведь тоже можно предлагать различными способами. Можно расставлять варианты, словно на витрине. Мы разглядываем витрину в свое удовольствие, изучая, выбирая или не обращая внимания на выставленные товары. Другой способ: варианты вываливаются на нас, словно недружелюбный допрос таможенником при пересечении границы: «У вас есть, что декларировать?». Таможеннику известно, что можно закрыть глаза на что угодно, однако раскрытие контрабанды может иметь более чем просто неприятные последствия. Мы не знаем о последствиях вопроса. Будут ли нас обыскивать? Если мы знаем, что обыска не избежать, то не станем лгать. Если знаем, что обыска не будет, то испытаем соблазн протащить через таможню лишний блок Marlboro.


12. Вежливая программа покладиста

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

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

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

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

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

Эту человеческую способность выполнять действия непоследовательно или до удовлетворения предварительных условий я называю «покладистостью». Покладистость обычно становится одной из первых жертв компьютеризации, а ее отсутствие – главная причина нечеловечности цифровых систем. Это естественный результат применения модели реализации. Программисты не видят причин для создания промежуточных состояний, поскольку компьютер в них не нуждается. Однако человек нуждается в возможности слегка изменять систему.

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

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

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

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

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


13. Вежливая программа дает мгновенное удовлетворение

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

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


14. Вежливой программе можно доверять

Между друзьями устанавливается доверие благодаря взаимозависимости и готовности жертвовать собой. О каком доверии может идти речь, когда компьютеры ведут себя странно и с неохотой работают на пользователей? Я доверяю кассирше в банке – ведь она улыбается и знает мое имя. Но при этом всегда пересчитываю деньги, полученные от банкомата, просто потому, что не доверяю этой тупой машине.

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



Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 0 comments