Книга: Человеческий фактор в программировании

35 Сложность и прогрессирующий функционизм

35

Сложность и прогрессирующий функционизм

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

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

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

]. Решившись на такой шаг, я столкнулся с раздражающей необходимостью переключаться между текстовым редактором и пакетом инструментов, работающих под DOS, и графическим Windows-инструментом. Как и рецидивирующий артрит, это не смертельно, но причиняет постоянную боль. Для более гладкого взаимодействия с коллегами, многие из которых переходили на один и тот же текстовый редактор в Windows/Macintosh, я клюнул на одно из предложений провести апгрейд. Чтобы ощутить смысл термина «апгрейд», представьте себе подъем дороги, которая тянется… вертикально вверх![Автор обыгрывает слово «upgrade» (англ.); grade — здесь: уклон, подъем; up — вверх. —]

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

Прогресс

По дюжине версий на счету популярных текстовых редакторов, но проще в освоении они не стали. Такой призыв на слуху, но все сводится лишь к сокращению времени, необходимого для начала работы. Едва ли не каждый может создать что-либо полезное в первые же минуты после инсталляции. Затем вы упираетесь в стену. Лучший из современных текстовых редакторов существенно сложнее для изучения, мастерского овладения, нежели его предшественники на СР/М и Apple. Забытые жемчужины прошлого, такие как Electric Pencil и Spellbinder, с высот своих восхищают нас, пользователей пусть более мощных, но и чересчур громоздких программ.

Отчасти причина кроется в том, что первые текстовые процессоры, в основном благодаря добавленным функциям, выросли в текстовые редакторы, которые, в свою очередь, превратились в «текстовые издательства» с еще большими возможностями. Далее системы высокого класса, такие как WordPerfect и Word for Windows, стали почти неотличимы от полноценных настольных издательских программ с точки зрения их возможностей, хотя средства и методы у них довольно разные. Эти системы битком набиты фенечками и фитюльками, и нужно приложить немало усилий, чтобы заставить их работать в нужное время и в нужном месте.

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

Успешность продаж

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

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

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

Прогрессирующий функционизм часто приводит к разбросу взаимосвязанных операций или пунктов выбора по разным частям пользовательского интерфейса. После четвертой или пятой редакции внесение десятков «добавлений» и «исправлений» приводит к тому, что пользовательский интерфейс покрывается слоем небольших довесков, разнообразных переключателей и приложений к меню. Со временем форма интерфейса все больше отражает внутренние программные ограничения. В ней проявляются трудности, с которыми сталкивались программисты при поиске места для размещения функций. Бывалые пользователи, чьи пальцы загрубели и искривились за многие годы применения этих функций, настолько привыкли к ним, что редко задумываются перед нажатием Ctrl-F5-C–C. Таким образом, они поощряют недобросовестных поставщиков программного обеспечения к еще большему интерфейсному варварству, поскольку новые функции не должны мешать применению старых.

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

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

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

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

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

Дарвиновский дизайн

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

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

Оглавление книги


Генерация: 1.229. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз