Человеческий фактор в программировании
Шрифт:
Ло мере того как цветные дисплеи высокого разрешения начинают преобладать не только в офисах, но и в лекционных и конференц-залах, графика приобретает новое значение. При этом корпоративные спонсоры конференций ошибочно пытаются применять стандартную форму принципа «посмотри и ощути» на всех конференциях, распространяя «шаблоны» для таких презентационных пакетов, как Persuasion и PowerPoint.
Отчасти сложность состоит в том, что шаблоны разрабатывают либо программисты, которые не имеют никакого понятия об эстетике и мало разбираются (или совсем не разбираются) в вопросах передачи информации, либо графические дизайнеры, у которых есть чувство эстетики, но тоже нет глубокого понимания передачи информации. Первые производят все гот же пестрый мусор, который можно увидеть в палитре настраиваемых рабочих столов, а последние создают красивые
Ваши сотрудники, озабоченные хорошим «видом» и хорошим «ощущением», находятся на неверном пути. Восприятие формы зависит от контрастности. Как правило, чем больше контраст, тем легче читать. Уже давно известно, что при нормальном освещении текст удобнее всего читать, если он напечатан черным шрифтом на белом фоне. Светлое на темном (и другие сочетания цветов) читать значительно труднее.
Это поднимает другой вопрос: шрифты. По шрифтам пользовательского интерфейса иногда можно определить возраст людей, занимавшихся его разработкой. Слишком часто в программном обеспечении применяются или устанавливаются по умолчанию шрифты, которые я на» ываю «до 40», — небольшой размер символов и маленький междустрочный интервал. Эти шрифты могут читать только те, кому меньше 40! Проблема усугубляется дисплеями высокого разрешения, поскольку системные шрифты обычно являются растровыми. Не раз я был свидетелем того, как проваливалась демонстрация замечательного программного обеспечения, так как собравшиеся в демонстрационной кабине не могли прочитать текст меню и диаграмм; они только вежливо кивали головами, как будто понимали, что происходит.
Укрепляющаяся гегемония «презентационных пакетов» порождает и другие трудности. Такие пакеты создают, как я это называю, «шестизарядные слайды» — ну, вы знаете: маркер, маркер, маркер, маркер, маркер, маркер. Наглядные пособия должны быть именно наглядными пособиями. Они должны способствовать пониманию и запоминанию, визуально иллюстрировать, расширять или подкреплять комментарии докладчика. Шестизарядные визуальные материалы являются очень слабым и наименее эффективным методом применения потенциально мощного инструмента. От использования красивых цветов мало толку. Возможности цвета и графики необходимо применять для достижения конечной цели передачи информации, а не просто так, волей-неволей следуя дизайнерскому принципу сэра Эдмонда Хилари (Edmond Hillary) — раз уж они есть.
Подобно Сискелу (Siskel) и Эберту (Ebert), я убежден в том, что некоторые компоненты лучше всего воспринимаются в своей оригинальной, нецветной форме. Иногда цветной язык лучше всего переводить в простой чер-но-белый. А что касается цвета хлопка одной ладонью, я думаю, он может быть цвета окна.
Из журнала Software Development, том 1, № 1, январь 1993 г.
38
Совершенствующиеся середнячки
Лыжные трассы бывают трех видов — зеленые, синие и черные — поскольку лыжники тоже бывают трех видов: начинающие, середнячки и эксперты. Я середнячок, был им многие годы и, наверное, буду середнячком всю свою жизнь. Таких как я инструкторы снисходительно называют классическим «совершенствующимся середнячком», подразумевая под этим, что я — человек среднего возраста, который продолжает улучшать свое мастерство, хотя и не достигает больших и быстрых успехов. Я счастлив. Я люблю кататься на лыжах и даже сумел выжить на некоторых ужасных (или прославленных) черных трассах с двумя ромбами, пропуская повороты на более мягкие и спокойные спуски. Но все же, главным образом, я стараюсь держаться поближе к дружелюбным синим квадратам и успокаивающим зеленым кругам.
Катание на лыжах помогает узнать многое о взаимоотношениях между пользователями и системами и о том, как разработчики программного обеспечения могут улучшить эти взаимоотношения. Это было бы жестоким испытанием — учиться катанию на лыжах на каком-нибудь из тех крутых бугристых склонов, которые предназначены для опытных лыжников. Некоторые новички, в основном подростки до двенадцати лет, после легких склонов норовят сразу же отправиться на трассы для могу-ла[Могул — разновидность фристайла, езда по крутым горкам. — Примеч. ред. ], но я всегда подозревал, что они просто-напросто биомутанты. Для начального обучения большинству из нас подойдут широкие и легкие склоны, обозначенные этими милыми зелеными кружочками.
С другой стороны, вы сможете научиться только элементарным приемам, если весь день будете проводить на простых склонах. Рано или поздно, вам придется перейти к более сложным синим и черным (иногда черно-синим) трассам.
Опытные лыжники, эксперты, одолевающие слалом и перелетающие через бугры, внушили нам, что это единственный способ катания на лыжах. Но совершенствующиеся середнячки тоже могут наслаждаться необыкновенными минутами, спускаясь с Небесной долины (Heavenly Valley). Внизу вы видите жемчужину — сияющее бирюзовое озеро Тахо (Lake Tahoe), к востоку — пустыню и коричнево-желтое море, простирающееся до горизонта. Морозный утренний воздух щиплет лицо, а под лыжами скрипит свежевыпавший снег.
Хорошо, но какое отношение это имеет к разработке программного обеспечения? Мечтая о катании на лыжах у Тахо, я хотел рассказать о трехфазной модели пользовательского интерфейса (Constantine, 1994 [13], 1994 [24]). Согласно трехфазной модели, у пользователей системы есть различные потребности на различных стадиях своего развития, а значит, пользовательский интерфейс должен разрабатываться с учетом этих изменяющихся потребностей. Для этого в программном обеспечении необходимо предусмотреть разные виды интерфейса для пользователей с разными уровнями владения продуктом. Каждый из этих вариантов должен иметь свои характерные черты и отдельные технические задачи. Как и сеть трасс на хорошем лыжном курорте, эти компоненты интерфейса должны быть не разделены, а тесно связаны между собой.
В трехфазной модели предусмотрены три интерфейса: интерфейс приобретения, переходный интерфейс и интерфейс производства. Интерфейс приобретения — это система, которую начинающий пользователь видит при первой встрече с продуктом. Хороший интерфейс приобретения позволяет начинающему пользователю сразу приступить к работе. Интерфейс производства дает возможность опытному, полностью подготовленному пользователю с большой эффективностью решать сложные задачи. Между этими двумя интерфейсами находится переходный интерфейс, предназначенный для совершенствующихся середнячков. Они уже прошли стадию медлительного и неуверенного новичка, но еще не стали и, наверное, никогда не станут опытными пользователями, способными при помощи «горячих клавиш» легко и стремительно лавировать между многими приложениями, которые каскадом расположены на экране. Трассы на лыжных курортах для начинающих, совершенствующихся и опытных лыжников различаются, но соединяются между собой. Точно так же в хорошей системе есть трехуровневый интерфейс, позволяющий легко переходить от одного уровня к другому.
Я думаю, что сегодня одной из самых серьезных проблем в разработке пользовательских интерфейсов является преобладающее внимание к гладким склонам программного обеспечения. Потребности опытных пользователей неохотно обеспечиваются с помощью довольно грубых и уродливых «продвинутых» сервисов или кое-как составленного набора горячих клавиш и неудобного средства составления макросов. А «совершенствующиеся середнячки», которые могут быть самой многочисленной и самой важной категорией пользователей, почти всегда игнорируются.
Если система полезна и хорошо разработана, то пользователи перестанут быть в ней новичками. Лишь некоторые из них со временем станут экспертами или очень опытными пользователями, а большинство, вероятно, будет проводить свои дни в качестве совершенствующихся середнячков. Их потребности отличаются от запросов экспертов или новичков; им нужен пользовательский интерфейс, позволяющий постоянно и последовательно увеличивать свои знания о данном программном продукте и улучшать навыки его применения. Такой интерфейс не должен наказывать за незнание. Он не должен неожиданно швырять их на склоны диалогов с двойным черным ромбом, которые понравятся только программисту, пишущему на С++.
В лучшем случае коммерческие программные продукты и инструменты разработки программного обеспечения имеют зеленую трассу и черную — и почти никаких трасс между ними. Переходный интерфейс, помогающий бывшему новичку повышать свою эффективность и приобретать новые навыки, должен разрабатываться как особый набор функций, в котором учитываются знания начинающего и знания, необходимые эксперту. Настраиваемые панели кнопок и инструментов хороши, но недостаточны, поскольку они либо навязывают пользователю стандартный набор (всегда слишком сложный или слишком ограниченный), либо вынуждают его самому определять назначение функций.