Один из самых сильных факторов, оказывающих влияние на проектирование программного обеспечения, – это, как я его называю, «ограниченное мышление». В основе этого фактора лежат две взаимодействующие силы. Тот факт, что индустрия программного обеспечения достаточно молода, известен многим, но именно из-за молодости эта индустрия не склонна к самоанализу. Нас так занимает ассимиляция новых технологий, что мы не находим возможности осознать то неправильное представление, сложившееся о более старых технологиях. В результате в индустрии программного обеспечения остается множество мифов и неувязок, которые даже не подвергаются сомнению.
Это удивительно, но тот простой и вполне очевидный факт, что в настоящее время компьютеры стали в разы производительнее, быстрее и при этом дешевле, чем всего лишь несколько лет назад, еще до конца не прижился в практике разработки программного обеспечения. Как следствие, большинство программных продуктов не слишком приспособлены под решение пользовательских задач. Вместо этого они «бросаются» на защиту центрального процессора, ошибочно полагая, что он перегружен. В итоге кто оказывается перегружен, так это пользователь. Вот что говорит об этом подходе Билл Могридж, идеолог проектирования: «Будь милосерден с микрочипами и беспощаден с пользователями».
Невероятный технологический прорыв последних десятилетий превратил высокопроизводительные настольные компьютеры по весьма приемлемым ценам в обычное явление. Теперь каждый студент или домохозяйка могут обзавестись настолько мощным устройством, которому в 1974 году мог позавидовать даже корпоративный центр обработки данных General Motors. Несмотря на это мы все еще применяем для создания большинства программ все те же инструменты, технологии, методы и мыслительные парадигмы, свойственные миру «ограниченного мышления». Разработчики все еще по привычке задаются вопросами: «Сможем ли мы соблюсти все требования? Будет ли отклик достаточно быстрым? Чем мы можем пожертвовать, чтобы добиться большей эффективности?» При этом совсем не уделяется внимание вопросам, которые подошли бы здесь куда больше: «Будет ли это понятным пользователю? Можем ли мы представить эту информацию так, чтобы это имело смысл? Достаточно ли ряд этих инструкций отвечает потребностям пользователя? Какая информация важна для пользователя более всего?»
За очень редким исключением, процессоры большинства компьютеров работают вхолостую, то есть пребывают в бездействии. Конечно, ряд вычислительных процессов действительно требует задействовать ресурсы, однако это происходит далеко не так часто, как убеждают нас в этом производители аппаратного обеспечения, стремящиеся продать нам все новейшие, мощнейшие и величайшие технологические чудеса. Совершенно не в их интересах, чтобы пользователь знал, что его процессор будет бездействовать 75–80 % времени, а подвергаться сильной загрузке лишь на краткие промежутки его функционирования.
Всего каких-то 20–30 лет назад компьютеры обладали такой незначительной производительностью и при этом стоили так дорого, что любая здравая идея ограничивалась малой мощностью головного компьютера. В те времена приоритетным направлением компьютерных наук была разработка технологий, способных уменьшить нагрузку на ограниченные вычислительные ресурсы. Так, для снижения нагрузки применялись такие специально спроектированные технологии, как реляционные базы данных, таблица символов ASCII, файловые системы и язык программирования BASIC. Для программного обеспечения тех лет характерно стремление к высокой производительности в ущерб всем прочим соображениям, в том числе легкости в использовании программы. Однако не стоит забывать, что единожды написанный код обладает поистине природной жизнестойкостью, а потому большая часть этого старого кода, созданного для слабых компьютеров, сегодня лежит в основе программ для современных, высокопроизводительных систем.
С той поры как на экраны вышел фильм Чарли Чаплина «Новые времена» (Modern Times), широко распространилось суждение, что технологии делают нас бесчеловечными. Я крайне не согласен с такой позицией. Задолго до возникновения технологий тираны, варвары и иные воинствующие племена лишали своих жертв человечности посредством кулаков и камней. Не нужно обладать изощренными инструментами, чтобы ожесточить своего человекоподобного товарища, – для этого достаточно одного взгляда или пинка. Совсем не технологии делают нас бесчеловечными, а технические специалисты, вернее, те процессы, которые они применяют для того, чтобы создавать свои бесчеловечные продукты.
Очевидно, что чем больше потенциал технологии, тем больший вред способен нанести некорректный процесс. Верно и обратное: при правильном подходе к проектированию те же технологии могут превратиться в великий дар человечеству. Сами по себе высокие технологии могут пойти любым путем, но именно человек, который эти технологии направляет, определяет конечный эффект от них.
Интерактивные системы необязательно всегда бесчеловечны, и, чтобы этого не произошло, мы должны перестроить процесс разработки, с тем чтобы в приоритете оставались люди, которые эти технологии используют. Первое, самое важное изменение в этом процессе, которое мы способны совершить, – это выполнять проектирование интерактивных продуктов строго до момента начала их программирования. Второе важное изменение – это привлекать к процессу проектирования специально обученных для этого специалистов, проектировщиков взаимодействия. В ходе нескольких следующих глав я продемонстрирую, каких высот можно достичь, следуя этим шагам.