Глава 12
В отчаянных поисках эргономики
Взрывное распространение на массовом рынке продуктов, основанных на программном обеспечении, как в области универсальных компьютеров, так и специализированных устройств, преобразовало аудиторию пользователей. В прежние времена это была небольшая группа великодушных обожателей технологии. Сегодня же это огромное множество нетерпеливых, подавленных, не сведущих в технике потребителей. Наверное, каждый, кто связан с разработкой программного обеспечения, да и кто не связан, наблюдал, как в болезненном раздражении кричат пользователи, и чувствовал потребность чем-то помочь. Многие специалисты пошли вперед, полные решимости исправить ситуацию. У всех замечательная подготовка, у большинства отличная репутация и у многих длинные списки первоклассных клиентов. Вместе же они произвели больше тепла, чем света; их продуктам, основанным на программном обеспечении, не достает самой малости – они не являются объектом желания. Результатом стало замешательство по поводу выбора действенных способов преодоления недовольства пользователей. В этой главе я попытаюсь распутать этот клубок и показать, какую пользу может приносить та или иная специализация, и как это согласуется с целеориентированным проектированием взаимодействия.
Последовательность
Вероятно, важнейшим аспектом проектирования является последовательность событий в процессе разработки. С первых же дней разработки программного обеспечения последовательность событий была такая: программирование, устранение дефектов, доводка. Сначала программирование, устранение дефектов, доводка. Сначала программист пишет программу, затем в пошаговом режиме проходит ее в поисках непреднамеренных ошибок, внесенных при ее создании. Затем он исправляет эти ошибки, и наконец, программа готова к сдаче.
Совершенно естественно, что инженеры воспринимают любую новую дисциплину с большей готовностью, если она не нарушает привычный порядок действий. Существует метод, известный как «юзабилити-тестирование», который вырос до существенных масштабов и заключается в эмпирическом исследовании реальных взаимодействий пользователей с продуктом. Основная причина широкого признания такого тестирования в бизнесе высоких технологий в том, что оно легко встраивается в существующую последовательность. Юзабилити-тестирование по большей части связано с наличием работоспособной программы, поэтому, разумеется, необходимо ждать, пока программа не будет готова к запуску. Так юзабилити-тестирование проводится параллельно устранению дефектов, что удобно. Программистам удобна такая дополнительная форма тестирования, поскольку она не нарушает существующую последовательность действий.
Как я уже говорил, создание кода по отношению к проектированию – все равно что заливка бетонной смеси в строительстве. Независимо от профессионализма проектировщика и применяемых методов, если создание кода уже началось, воздействие проектирования окажется пренебрежительно мало. Фундаментальная предпосылка включения проектирования взаимодействия в процесс разработки программ заключена в предшествовании проектирования программированию. Очевидно, что я защищаю целеориентированное проектирование, однако любой системный процесс проектирования, предшествующий программированию, будет эффективнее любого процесса, следующего за программированием.
Проектирование взаимодействия до начала программирования означает коренные перемены в процессе разработки программного обеспечения. Естественно, такие перемены затрагивают программистов, и они видят для себя угрозу. До этого они были первыми, а следовательно, и самыми важными. Если другая дисциплина предшествует программированию, означает ли это, что специалисты другой дисциплины более важны? Это не так, и подробности ожидают читателей в следующей главе.
Как профессионал, работавший с программным обеспечением, я занимался программированием, изобретением, тестированием, документированием, проектированием, продажей, поставкой и поддержкой. Я могу утверждать, что среди этих задач программирование – задача самая сложная и предъявляющая к исполнителю самые высокие требования. (Я говорю о профессиональном программировании, о создании программ, пригодных для коммерческого распространения. Известно, что сложность программы растет экспоненциально в зависимости от размера кода. В институте почти всем приходится писать небольшие, по сотне-другой строк, программы. И многие пользователи для выполнения своей работы пишут программы примерно такого же размера. Однако общий объем кода коммерческого приложения легко может превышать пятьдесят тысяч строк, поэтому сложность этих приложений выходит за пределы понимания большинства смертных.) Даже если другие специалисты об этом не догадываются, то у программистов нет сомнений, что их вклад в дело намного больше, чем, чей бы то ни было еще.
Миф о непредсказуемости рынка, рассказанный в главе 3 «Пустая трата денег», – еще одна причина, по которой последовательность «программа, тест, доводка» так прочно закрепилась в индустрии. Если мы не можем знать, чего захочет рынок, зачем тратить время на предварительное проектирование взаимодействия? Просто пишем код и выбрасываем на рынок, а там уж видно будет. Кроме того, такой подход избавляет нас от какой-либо ответственности за неудачи.
И несмотря на эти все проблемы, жизненно важно, чтобы более думающие люди изменили существующую последовательность, поместив проектирование перед программированием.
Юзабилити-тестирование
Любой процесс, основанный на наблюдении, должен играть второстепенную роль по отношению к творчеству. Программисты творят, дисциплина эргономики молчаливо передает бразды правления программистам, говоря: «Вы создадите это, а затем я протестирую и увижу, насколько хорошо вы справились.» Однако в скоростном мире высоких технологий созданный продукт немедленно выходит на рынок. Тестирование постфактум уже не может сильно повлиять на продукт.
На мой взгляд, юзабилити-методы похожи на наждачную бумагу. Если вы делаете стул, наждачная бумага может сделать его более гладким. Если вы делаете стол, наждачная бумага и его сделает более гладким. Но никакая шлифовка не позволяет превратить стол в стул. И тем не менее, мне приходится видеть, как тысячи людей из лучших побуждений прилежно шлифуют столы методами эргономики, пытаясь получить стулья.
Юзабилити-тестирование до программирования
Нет сомнений, что юзабилити-тестирование до начала программирования возможно, однако природа и ценность процесса в этом случае меняется радикально. Такого рода тестирование сравнимо с чистым исследованием, которое больше подошло бы для университетской среды. Один коллега из крупной компании, разрабатывающей программное обеспечение, провел классический юзабилити-тест, одновременно выявивший сильные и слабые места такого предварительного тестирования. Он хотел определить эффективность строки состояния внизу окна программы. Он предложил участникам выполнить безобидное задание при помощи электронной таблицы. Каждые пять минут в строке состояния появлялось сообщение: «К вашему креслу снизу приклеена банкнота в $50. Возьмите ее!» За целый день тестирования ни один из более чем десяти участников не попытался взять купюру.
Осознать, что пользователи не обращают особого внимания на содержание популярной в среде программистов строки состояния, само по себе полезно. Однако это не проливает свет на скрытые проблемы: что есть состояние, заслуживающее внимания пользователя? Следует ли вообще отображать что-либо? В каком месте? Эти проблемы проектирования, как и раньше, остаются нерешенными.
Интеграция юзабилити-тестирования в процесс проектирования
Профессиональная литература переполнена подробными советами о том, как проводить тесты, но мало кто говорит о возможностях тестирования на стадии, когда продукт еще не существует. На практике необходимо создать и протестировать какую-то видимость программы. Обычно макет принимает форму быстро созданного прототипа или «кукольного театра», созданного из бумажных вырезок или других низкотехнологичных материалов.
Вы можете многое узнать, наблюдая за реакцией пользователей на спектакле кукольного театра, однако без предварительного проектирования может оказаться, что тестируется не совсем то, что нужно. Кроме того, присутствие человека, проводящего тестирование, оказывает серьезное влияние на такую форму тестирования: здесь любое слово, кивок и даже взгляд могут исказить результат.
Чтобы получить наиболее осмысленные результаты, необходимо провести крайне дорогостоящее сравнительное тестирование – создать две программы и каждую протестировать. И даже в этом случае вы узнаете лишь, что один вариант лучше другого. Вы не узнаете, каких высот можете достичь на практике.
Толковое юзабилити-тестирование может выявить неверные предположения проектировщика. Всегда лучше демонстрировать результаты проектирования пользователям и перепроектировать итеративно, чем вообще этого не делать. Некоторые новые технологии, такие как распознавание голоса, настолько плохо изучены, что даже результаты простейшего юзабилити-тестирования могут иметь огромную ценность.
Едва ли не самым ценным вкладом тестирования является присутствие программистов, когда они из-за полупрозрачного зеркала вынуждены наблюдать, как пользователи сражаются с их программами. Программисты испытывают шок и крайнее недоверие, они ругаются: «Вы тестируете каких-то недоумков!» Юзабилити-тестирование – меткий камень в огород упрямых разработчиков программного обеспечения, который показывает им, что проблема действительно существует. Оно может послужить той же цели и в случае с руководителями.
Перефразируя рекламу зубной пасты, можно сказать, что юзабилити-тестирование представляет собою эффективный способ предотвратить кариес в случае добросовестного следования советам профессионалов и практике целеориентированного проектирования. Главное – помнить, что другие факторы могут оказывать еще более сильное воздействие.
Многопрофильные команды
Сопротивление разработчиков программного обеспечения всему, что грозит изменить знакомую последовательность событий процесса разработки, привела к рождению многочисленных извилистых логических построений в сообществе проектировщиков. Широко обсуждается мысль о том, что проектирование должны осуществлять команды, включающие представителей многих дисциплин.
Согласно этой гипотезе, команда, включающая представителей пользователей, программистов, менеджеров, маркетологов, специалистов по юзабилити, даст лучшие результаты. По моему опыту, метод «круглого стола» не эффективен. Цели и заботы участников различаются, а участник, цели которого имеют наибольший вес, часто хуже всего приспособлен для выражения своих забот. Хуже того, программисты, в любом случае обладающие абсолютной властью над программными артефактами, неизбежно берут на себя управление командой, обычно с заднего сиденья.
Круглый стал не дает желаемых перемен. Подход демократичный, полидисциплинарный, многокультурный, никого не оставляющий за бортом, но неспособный исправить ущербную последовательность, продолжающую отравлять взаимодействие.
Проектирующие программисты
Первыми «добровольцами» в борьбе с проблемами несведущих в технологиях пользователей стали сами программисты. Полная неприспособленность их культуры и инструментов для решения данной задачи не имела никакого значения ввиду отсутствия других кандидатов. Словно случайные свидетели, которым не повезло оказаться поблизости от места катастрофы, программисты получили задание организовать скорую помощь для интерфейсов лишь потому, что занимались родственными вещами. Программисты – ничто без своего энтузиазма, и они гордятся своей компетенцией, поэтому сложность проектирования взаимодействия привлекла их, и они приложили к решению задачи значительные усилия. Так появилась язвительная шутка: «Проектирование – то, чем программисты занимаются двадцать минут перед тем, как начать писать код».
В этой книге я неоднократно показывал, что усилия программистов были обречены с самого начала. Как говорит По Бронсон, они считают отсутствие критики комплиментом, поэтому их оценка собственной производительности невероятно высока, и многие из них продолжают держаться за роль проектировщика взаимодействия. Словно безумные короли, программисты не желают сдавать захваченную территорию, даже если оккупация неприятна, невыгодна, нежеланна и непригодна для защиты.
Если вы программируете профессионально, то вы – программист независимо от того, чему можете научить, что протестировать или спроектировать. Как нельзя быть немножко беременной, так нельзя немножко заниматься программированием.
Многие разработчики все еще не признают существования серьезной проблемы («просто пользователи должны больше учиться»), но есть и такие, кто отчетливо видит всеобщее разочарование и финансовые убытки от широко продаваемых танцующих медведей. Хорошо, что группа последних растет, как растет и желание большинства компаний-разработчиков обращаться за сторонней помощью.
В действительности большинство программистов неплохо справляется с проектированием, а многие из тех, кто не способен это делать, осознают свои недостатки и стараются не практиковать проектирование. Огромное «но»: когда программисты проектируют, их усилия практически всегда основываются на уникальной индивидуальности хомо логикус. Конечный результат – сложные в применении и негодные продукты, которые, как правило, нравятся только другим программистам.
Откуда вы знаете?
Многие специалисты по юзабилити считают, что невозможно понять, насколько удобно взаимодействие, пока не проведено тестирование. Поэтому они постоянно спрашивают: «Откуда вы знаете?» Однако я заметил нечто весьма любопытное. Задавая этот вопрос, они вовсе не играют в адвоката дьявола. Они спрашивают по той простой причине, что не могут опознать качественно спроектированные взаимодействия.
По меньшей мере четыре крупные компании, с которыми мне приходится работать, давно общаются с профессиональными эргономистами. Эти компании решили вложить средства в юзабилити. Они наняли профессионалов для создания лабораторий, проведения исследований, обнаружения вероятных проблемных областей и выдвижения догадок относительно улучшения эргономики. Программисты прилежно вносили изменения в программы, но мало что изменилось. Разве что программистам приходилось работать намного больше. После нескольких итераций программисты просто сдались, то же самое сделали большинство менеджеров. Они поняли, что процесс очень дорогостоящий и требует больших затрат времени, однако фундаментальную задачу не решает.
Проектировщики взаимодействия полагаются на свой опыт, на подготовку и суждения, что позволяет давать точные оценки. Они используют специальные принципы, идиомы и инструменты для каждой ситуации и, наряду с этими средствами, используют еще прочие источники информации. Откуда знает рентгенолог, изучив рентгеновский снимок, что человеку требуется операция? Рентгеновские снимки настолько сложно интерпретировать, что неспециалисты просто не могут себе представить, как такое возможно. А подготовленные врачи делают это все время. Откуда судья знает, виновен ли подсудимый? Откуда инвестор знает, что настало время покупать? Эти профессионалы, возможно, делают ошибки время от времени, однако их работа основывается не на догадках.
Мне приходилось видеть, как уважаемые специалисты по юзабилити попадают «в молоко». Они разрабатывали изощренные тесты для выделения отдельных реакций пользователей на существующие программы, а затем изучали таблицы с результатами, чтобы обнаружить дефекты интерфейса. Когда их точный научный метод вскрывал проблемную область, они скатывались до дилетантских рассуждений: «Что ж, полагаю, мы можем перенести эту кнопку вот в этот диалог» или «Думаю, если мы добавим здесь кнопку, пользователю будет удобнее».
Вполне можно сказать: «Я не знаю», однако попытка угадать ответ обречена на провал. Что еще хуже – вид человека, гадающего с отсутствующим взглядом, вызывает у программистов, людей, кровно заинтересованных в результате, однозначную реакцию. Вас списывают со счетов, как шарлатана.
Руководства по стилю
Сотрудничество дизайнера Шелли Ивенсон (Shelley Evenson) и ученого Джона Райнфранка (John Rheinfrank) в исследовательском центре компании Xerox в Пало-Альто в восьмидесятые годы дало жизнь ряду важных идей в области визуальных коммуникаций. Они создали своеобразный словарь, «язык визуального проектирования» для всех фотокопировальных аппаратов Xerox: зеленый цвет обозначал оригиналы, синий принадлежности, а красный – зоны обслуживания. Схожие нетекстовые подсказки весьма полезны в интерфейсах, обладающих высоким когнитивным сопротивлением. Такие подсказки содержатся в «руководствах по стилю», содержащих примеры и предложения по использованию.
Многие разработчики программного обеспечения и их руководители, раздраженные многочисленными проблемами взаимодействия, не отказались бы иметь подобное руководство, описывающее, какой интерфейс должен быть у продукта. Многие корпорации разработали руководства по стилю интерфейсов для всех внутрикорпоративных приложений, а многие поставщики программного обеспечения предлагают подобные руководства сторонним разработчикам, занятым производством совместимых программ.
Руководства по стилю могут помочь, но они не решают проблем взаимодействия, с которыми связано целеориентированное проектирование. Эти проблемы решаются в каждом конкретном случае по-своему. Разные приложения нужны пользователям для разных целей, и каждый элемент взаимодействия в продукте должен относиться к чему-то определенному. Общий визуальный язык и последовательные органы управления способны помочь, но только их для решения проблемы будет мало.
Конфликт интересов
Потребуй Билл Гейтс публично от всех прочих компаний прекратить разработки в области проектирования взаимодействия, эти компании просто прогнали бы его со сцены. Однако документ Microsoft, озаглавленный «Interface Style Guide» (руководство по стилям интерфейсов), требует именно этого и является одним из самых сильных конкурентных преимуществ Мiсrоsоft.
Microsoft и Apple продвигают руководства по стилям интерфейсов, превознося их мощь и пользу, и на первый взгляд может показаться, что эти компании являются самым компетентным источником подобной информации. Однако интересы владельцев платформы конфликтуют с интересами разработчиков программного обеспечения.
Оба создателя платформ применяют скрытую форму принуждения, пытаясь заставить производителей придерживаться стандарта. Независимый разработчик программного обеспечения, не следующий рекомендациям руководства по стилю, не сможет заявить о «совместимости с платформой», лишая свой продукт важного плюса с точки зрения маркетинга. Таким образом, большинство компаний, создающих пользовательские приложения, готовы следовать рекомендациям разработчика платформы.
Требуя, чтобы независимые разработчики следовали описанным принципам, разработчики платформ исподтишка подавляют инновации.
Тем временем сами разработчики платформ вольны экспериментировать и давать ход новшествам, сколько пожелают. Они могут без угрызений совести пренебрегать собственными руководствами по стилям. Разумеется, никакие другие компании не нарушают эти руководства столь же часто и откровенно, как сами Microsoft и Apple.
Я не выступаю за сожжение руководств по стилю и за хаос в интерфейсах. Просто говорю, что к руководствам следует относиться так, как сенатор относится к лоббисту, а не так, как автомобилист к полиции.
Законодатель знает, что лоббист действует из корыстных соображений, он вовсе не третья сторона, не заинтересованная в вопросе.
Фокус-группы
Многие отрасли обнаружили ценность фокус-групп, позволяющих узнать, что нравится и что не нравится потребителям в различных продуктах. Но какими бы полезными ни были фокус-группы для проникновения в мысли потребителей о самых разнообразных продуктах, для бизнеса программного обеспечения они могут быть источником проблемы. Самая большая сложность состоит в том, что большинство людей, включая и профессиональных пользователей программ, не представляют, что может и чего не может программное обеспечение. Поэтому если участник фокус-группы просит включить какую-то возможность, этот запрос часто носит оттенок недальновидности. Пользователь просит того, что считает вероятным, возможным, разумным. Сознательно потребовать чего-то маловероятного, невозможного, неразумного – значит просто выставить себя дураком, а люди не делают этого добровольно.
Насс и Ривз из Стэнфордского университета изучали реакцию людей на компьютеры и получили убедительные свидетельства того, что собственная оценка людей таких реакций ненадежна. Они пишут:
«Многие распространенные методы, особенно фокус-группы, основываются на предположении, что люди способны к интроспекции в отношении [интерактивного] опыта. Мы считаем, что такое предположение часто неверно».
Ларри Кили говорит, что «пользователи отвергнут новые идеи, если вы их предложите». Поэтому фокус-группы – сомнительный инструмент для создания сколько-нибудь новаторских продуктов. В большинстве продуктов, основанных на программном обеспечении, достаточно передовых решений, чтобы фокус-группы потеряли всякий смысл.
Фокус-группы могут быть эффективными для определенных категорий продуктов, однако ошибочно будет доверять им в надежной оценке продуктов с высоким уровнем когнитивного сопротивления.
Визуальное проектирование
В книге «About Face» я показал, почему вовсе не графическая основа графического пользовательского интерфейса (ГПИ) сделала его доминирующей формой взаимодействия с компьютером. Скорее, дело было в жестко ограниченном словаре новых интерфейсов. Эта ограниченность и дала ГПИ (в английском варианте GUI (Graphical User Interface)) такое преимущество перед прежними зелеными экранами. Качественный дизайн может стать хорошим вкладом в качество интерфейса, однако многие игроки отрасли все еще приписывают дизайну ценность, которой он попросту не обладает.
Я только что вернулся с конференции COMDEX в Чикаго, где судил конкурс по проектированию и созданию прикладных программ для внутрикорпоративного использования. Одно из первых мест заняла программа управления продажей билетов для ежегодного съезда любителей авиации в Висконсине. Кассовый терминал – сердце системы – преднамеренно был сделан неграфическим. Небольшой текстовый экран был необыкновенно строгий, прямоугольный, эстетически примитивный. Однако программа уверенно вышла в лидеры, поскольку при проектировании пристальное внимание уделялось особым потребностям команды добровольцев, занятых продажей билетов; у этих добровольцев была ответственная, но простая работа, причем работу эту надо было выполнять быстро и с минимальной подготовкой. Графические интерфейсы замечательно подходят для информирования руководителей о положении дел в целом, но у пользователей описываемого терминала таких потребностей не было, поскольку каждый следующий клиент из очереди не имел ничего общего со всеми остальными клиентами в очереди. Видеть картину в целом в требования к программе не входило. Простого текстового экрана вполне хватило, чтобы продукт завоевал награду. Об этом уроке забывают многие профессионалы.
Одна из характерных особенностей ГПИ заключается в их способности отображать растровую графику. Можно запросто делать программные интерфейсы, насыщенные сочной графикой, как в игре Myst. Поэтому многие дизайнеры и художники с радостью наложат грим из привлекательной растровой графики на лицо вашей программы. Однако графические дизайнеры редко задумываются о сопутствующем взаимодействии.
Этот интерфейс – одна из тех бесполезных «красивостей», которые вы получаете вместе с новыми компьютерами, и он – до самой последней копейки – стоит тех денег, которые вы заплатили. Его назначение как-то связано с телефоном или приводом CD-ROM, точно не могу сказать. Интерфейс, несомненно, прекрасен, особенно если вы технофил, влюбленный во всякие примочки, однако способ работы с программой непостижим. Это пример того, что мы называем «росписью по трупам». Программисты взяли интерфейс, не подлежащий использованию из-за фундаментальных дефектов в поведенческом проектировании, и завернули его в привлекательную обложку.
Поставщики устройств, похоже, особенно увлечены таким подходом, ведь программа шла в комплекте с моим новым компьютером. Подозреваю, дело в том, что интерфейс метафорически следует представлениям о классном аппаратном обеспечении.
Мы часто видим красивые продукты, эстетика которых великолепна, а функциональность или способы взаимодействия неадекватны назначению. Причина не в том, что продукт не проектировался, а в том, что он проектировался дизайнером, а не проектировщиком взаимодействия, имеющим инструменты для борьбы с когнитивным сопротивлением.
Промышленный дизайн
Другая область, к представителям которой обращаются за экспертизой, это промышленный дизайн. Эта хорошо развитое и сформировавшееся ремесло создания трехмерных объектов, приспособленных для вашего взгляда, вашего тела и особенно для ваших рук. В целом промышленные дизайнеры достигают отличных результатов, и упрекать их можно разве что в недостатках, но не в проступках. Они обучаются созданию кнопок, регуляторов и органов управления, которые легко увидеть, нащупать, применить. Однако они не подготовлены специально ни к разрешению проблем когнитивного сопротивления, ни к сотрудничеству с разработчиками программного обеспечения. Кнопки мгновенно опознаются как таковые (для примера возьмите систему дистанционного замка из главы 2 «Когнитивное сопротивление»), даже на ощупь. Их физическое назначение интуитивно понятно, однако логическое назначение (метаназначение) остается неясным, как прежде.
Каждый из пяти пультов на моем кофейном столике в отдельности сделан хорошо, но все вместе они делают мой домашний развлекательный комплекс практически бесполезным. Обладая привлекательным внешним видом, эти пульты бесполезны, если требуется переключить канал или заглушить звук в темноте. Дизайнеры, создавшие эти пульты, удовлетворили требования разработчиков развлекательных систем, но не удовлетворили потребности пользователя в качественном взаимодействии.
Легко понять, почему менеджеры продуктов путают промышленный дизайн с проектированием взаимодействия. Промышленные дизайнеры тоже имеют дело с интерфейсом между людьми и продуктами высоких технологий. Они тоже облегчают людям применение высокотехнологичных штуковин. Кнопки можно легко найти и нажать, но это не означает, что пользователь поймет, какую именно кнопку следует нажимать. Это проблема когнитивного сопротивления, а не промышленного дизайна.
Классная новая технология
И последний претендент на трон проектирования взаимодействия – сама технология. Microsoft, в частности, усиленно навязывает эту ложную панацею. Например, Мiсrоsоft утверждает, что интерфейсы упростятся, как только разовьются технологии распознавания голоса и рукописного ввода. Уверен, что это глупость. Каждая новая технология всего лишь добавляет возможностей для приведения пользователей в отчаяние – при помощи систем более быстрых и более мощных.
Ключ к более качественному взаимодействию кроется в уменьшении неопределенности между компьютерами и пользователями. Обработка естественных языков никогда не даст такого эффекта, поскольку значения слов в человеческой речи весьма расплывчаты. Наше общение столь часто основано на нюансах, жестах и интонациях, что появившиеся системы распознавания слов еще очень долго не смогут (если вообще смогут) научить компьютеры интерпретировать значения наших фраз.
Технология распознавания голоса определенно принесет пользу многим продуктам. Но, полагаю, было бы излишне оптимистично надеяться, что какая-то новая технология сможет просто спасти нас, сделать то, что до сих пор не было сделано. Технология требует проектирования взаимодействия для создания законченных решений для пользователей, независимо от того, какое сочетание технологий используется.
Итерации
Расхожая истина о разработке программного обеспечения гласит, что добиться качественного взаимодействия можно только поэтапным улучшением. Приверженность юзабилити-тестированию во многих крупных компаниях, в частности в Microsoft, привела к распространению этой идеи. Конечно, итерации – важный элемент качественного проектирования: продолжаем работать, пока не получим правильное решение. Однако многие разработчики поняли идею иначе: плюем на проектирование и просто пересчитываем в темноте все кочки, какие есть на дороге.
В 1986 году компания Мiсrоsоft поторопилась на рынок с первой версией Windows, которая была столь смехотворна, что заслуженно стала предметом шуток. Шесть месяцев спустя Мiсrоsоft выпустила версию 1.03 и исправила некоторые дефекты. Годом позже Microsoft выпустила версию 1.1, а затем версию 2.0. На каждом этапе развития продукта разработчики пытались разрешить проблемы, созданные в предыдущей версии. Наконец, четыре года спустя после выпуска первой версии, Мiсrоsоft представила Windows 3.0, и все перестали смеяться. Мало какие компании в этой индустрии имеют такое упорство и финансовые возможности, позволяющие выдержать четыре года публичного унижения и добиться, наконец, приемлемого результата. При этом все наблюдают, как лидер де-факто слепо спотыкается практически до победного конца, после чего делают очевидный вывод о том, что именно так и нужно действовать.
Однако создание всех этих промежуточных версий дорого обошлось компании. Если бы Microsoft достигла уровня качества Windows 3.0, пропустив пару промежуточных версий, она сэкономила бы миллионы на разработке и поддержке, при этом заработав дополнительные миллионы на продажах – на более раннем этапе жизни продукта. Позиция, защищающая неизбежность создания многочисленных версий продукта, – весьма дорогостоящее убийство здравого смысла.
Стратегия Мiсrоsоft основана на изморе. Говоря военным языком, враг может быть равен вам в умении сражаться (и даже превосходить вас), но, обладая огромным численным перевесом, вы можете просто обмениваться жертвами, пока у противника не закончатся войсковые соединения; в терминах производства программного обеспечения это означает: выбрасывайте на рынок некачественный продукт, пусть даже это танцующий медведь, а затем слушайте жалобы и стоны своих клиентов. Доводите до ума то, что им не нравится, и выпускайте обновленную версию. После трех или четырех версий открытые очаги болезней пользователей потухнут, а качество достигнет какого-то приемлемого минимума, поддерживаемого широкой функциональностью, после чего расти уже не будет. Итеративный подход не позволяет создавать замечательные продукты.
Стратегия измора не просто дорого обходится и заставляет тратить уйму времени, она омерзительна, потому что негуманна по отношению к пользователям компьютерных технологий. К несчастью, эта стратегия неплохо служит Мiсrоsоft. Компания не устает выпускать сырые, непродуманные, плохо сконструированные и спроектированные продукты на потеху индустрии и осмеяние наблюдателей, как пристрастных, так и беспристрастных. Однако пока специалисты отпускают язвительные замечания, Мiсrоsоft продолжает поддерживать свои первые попытки вторыми, третьими, четвертыми, пятыми, наконец, одиннадцатыми версиями. Такие продукты, как Windows, ActiveX, Word, Access, Windows NT и многие другие, в конечном итоге стали гигантами соответствующих рыночных ниш.
Стратегия измора эффективна, только если применяется компаниями, обладающими железобетонным именем, кучей времени, выдержкой игрока в покер и неисчерпаемыми финансами. До сих пор ни один участник компьютерной индустрии не проявил все эти качества на уровне, соответствующем уровню Мiсrоsоft.
Впечатляющий коммерческий успех Мiсrоsоft плох тем, что многие не столь крупные компании пытаются повторить ее успех, действуя такими же методами. В долгосрочной перспективе подобная стратегия часто заканчивается плачевно, что показал пример Netscape, однако она продолжает традицию надругательства над конечными пользователями.
Игрока, применяющего стратегию истощения, вполне можно победить, но только не подобным подходом. В конце концов, независимо от уровня вашей компании, денег у Microsoft больше. Следует наносить массированные удары по слабому месту Microsoft, а именно в области процесса разработки, ставящего программирование перед проектированием взаимодействия. Мiсrоsоft дважды ущербна в том смысле, что многие люди в компании занимают должность «проектировщика» и выполняют функции, связанные с проектированием. Как показывают выдержки из книги Фреда Муди (см. главу 8 «Отмирающая культура»), культура Мiсrоsoft уже привязалась к неэффективному «проектированию постфактум». Любая компания, готовая заниматься реальным проектированием взаимодействия, сможет побить Мiсrоsоft.
Глава 13
Управляемый процесс
Полагаю, большинство менеджеров, руководящих созданием продукции, основанной на программном обеспечении, в действительности не имеют четкого представления о том, как распознать лучший и наиболее успешный продукт и как создавать такие продукты. Как следствие, они руководствуются своим страхом, а значит, шутят с огнем. Они действуют ловко, но не владеют ситуацией и рискуют обжечься, отвлекшись даже на секунду. В этой главе я расскажу о дилемме, перед которой оказывается технический руководитель, и покажу, как укротить огонь при помощи проектирования.
Кто на самом деле самый влиятельный?
Как понять, чьему совету следовать, а чей можно игнорировать? Мне приходилось встречать руководителей, поведение которых не сильно отличалось от поведения собак на перекрестке. На забитом автомобилям и перекрестке эти собаки яростно лают, пытаясь бежать сразу во всех направлениях. Руководство говорит: «Пусть будет похоже на Outlook 98». Маркетологи говорят: «Хотя бы на уровне конкурентов». Отдел продаж говорит: «Этот клиент требует вот такую функцию». Программисты говорят: «Необходимо сохранять совместимость – делаем, как в последней версии». Кому верить?
Руководители разработки продукта стараются соглашаться со всеми участниками процесса. Влияние программистов несоразмерно, потому что они владеют кодом, а потому их целям отдается обычно наибольший приоритет. Но есть и еще одна группа, потребности которой, казалось бы, имеют высший приоритет. Это клиенты. В конце концов, сколько бы участников ни вносили свои предложения, только клиент держит в руках чек. Ни один деловой человек не оставит это без внимания!
Смертельная спираль: на поводу у клиента
Приняв этот чек, вы превращаетесь в компанию, «ведомую клиентами». Идея звучит симпатично и широко реализуется, однако является ошибочной. Вы начинаете откровенно играть с огнем. В восьмидесятые годы IBM очень гордилась статусом компании, ведомой клиентами. Тогда IBM владела практически всем компьютерным бизнесом, в масштабах более серьезных, чем сегодня Microsoft, однако сейчас, оставаясь крупной компанией, IBM – лишь одна из многих, но никак не лидер.
Обычно новая компания основывает свой первый продукт на каком-то технологическом новшестве. Этот первый продукт проектируется, исходя из внутренних представлений о том, как все следует делать. На этом этапе клиенты компании еще не проявляют большой заинтересованности, поэтому их советы бессвязны. Но как только продукт появляется на рынке, заинтересованность клиентов начинает увеличиваться, поскольку они вкладывают в продукт свое время и энергию. Естественно, что от них приходят запросы по изменениям и добавлениям.
Существует большая разница между тем, чтобы выслушивать клиентов, и тем, чтобы за ними следовать. Выслушивать разумно. Подразумевается, что вы накладываете свой собственный фильтр на услышанное. Следовать требованиям клиента – плохо. То есть просто делать все то, что говорит клиент. Уже не вы играете с огнем, огонь играет с вами.
Как только производитель продукта позволяет своим клиентам диктовать, какие возможности будут в продукте, происходит очень серьезная, но практически незаметная перемена. Компания перестает быть производителем продуктов, изобретающим вещи, которые можно продавать клиентам, и становится обслуживающей компанией, выполняющей работу по запросам клиентов. Каждый в компании ощущает эту тонкую перемену и реагирует совершенно верно, выступая за интересы клиентов сильнее, чем за какие бы то ни было другие.
Сегодня многие компании, создающие корпоративное программное обеспечение, такие как Oracle и SAP, в начале девяностых пережившие взрывной рост в ходе замены старых архитектур новыми клиент-серверными, заново испытывают кошмар клиентского управления, идя по стопам IBM. Представив новую технологию, эти так называемые ЕRР-компании (Еnterprise Resource Planning, планирование ресурсов предприятия) стали прислушиваться к своим клиентам. Они начали добавлять возможности, затребованные клиентами, не соотнося их с более масштабными долговременными планами.
Мне приходилось слышать от руководителей, что никакие изменения не вносятся в их продукты, пока этого не потребует клиент. Каждый клиент ведет дела немного иначе, чем все остальные, и каждый требует, чтобы ЕRР-компания внесла изменения и добавила возможности, соответствующие именно его способам ведения дел.
В ложно понятом стремлении быть полезной, компания, слепо идущая на поводу у клиентов, вынуждена делать уступки.
Компания одна, а клиентов у нее будут десятки и сотни. Если реагировать на всех (или хотя бы на самых крупных), кто возьмет на себя труд урегулирования этих противоречивых требований?
Многие из знакомых мне руководителей в области высоких технологий имеют опыт инженерной разработки и часто раньше работали программистами. Можно точно сказать, что они занимают свои посты потому, что очень хорошо знают программистов и испытывают к ним симпатию. Как показано в главах 7 «Ноmо Logicus» и 8 «Отмирающая культура», программисты в поисках ответа обращаются к функциям и возможностям. Когда клиент приходит с перечнем возможностей в одной руке и чеком в другой, технический руководитель не способен сопротивляться такому сочетанию. Вот еще одна причина, по которой столь многие организации, создающие продукты, ведут с заказчиками торги за функции, – чтобы управлять сроками разработки. Они играют с огнем, а управление, основанное на жестких сроках сдачи, гарантирует, что скорость этой игры будет только нарастать.
Концептуальная целостность – важное достоинство
Приняв чек, вы отдаете бразды правления клиенту. У клиента могут быть деньги, однако клиент не обладает двумя важнейшими качествами: 1) он не заботится о ваших интересах и 2) не знает, как проектировать ваш продукт.
Продукты, создающиеся под дудку клиентов, не обладают ясным замыслом. Такие продукты не имеют качества, которое идеолог программного обеспечения Фредерик Брукс называет «концептуальной целостностью, всепроникающим видением программы», которое, по его мнению, и есть главный ингредиент успеха. В отсутствие концептуальной целостности могут случиться две вещи: клиенты начинают контролировать проектирование вашего продукта, а вы перестаете это делать. Неважно, насколько у клиента благие намерения, он не обладает способностью воспринимать ваш продукт, как единую концептуально целостную сущность. Четкое видение ситуации – это одно из главных достоинств, и большинство компаний с трудом могут сфокусироваться на собственном бизнесе, что уж говорить о вашем. Даже выкрикивая противоречивые приказы, клиенты ожидают, что вы самостоятельно выберете правильные.
Если продукт разрабатывается под дудку покупателя, он мутирует от версии к версии, вместо того, чтобы расти упорядоченно. В конечном итоге продукт состоит из несовместимых фрагментов и случайно подобранных возможностей, продукт становится, по выражению Джона Зикера (John Zicker), «собачьим завтраком». Каждому клиенту приходится продираться через продукт, находя возможности, которые ему нравятся, избегая возможностей, которые ему не подходят, и все без исключения клиенты находят, что пользоваться продуктом становится все сложнее и сложнее с каждой новой версией. Некоторые известные компании создают продукты настолько сложные, что даже решение простейших задач требует многомесячной подготовки. Появляются целые бизнес-направления для установки, настройки, сопровождения, обучения работе с этими монстрами. Клиенты могут покупать собачьи завтраки, но вряд ли кто-то сможет влюбиться в данный продукт. Такой продукт не хотят покупать, что, как я показывал в главе 5 «Нелояльность клиентов», делает вас весьма уязвимой мишенью конкурентов.
Фаустова сделка
Такой переход от компании, ведомой определенным видением, к компании, идущей на поводу у клиентов, можно рассматривать как превращение производственной компании в обслуживающую. В замечательной книге «Managing the Professional Service Firm» (Управление компанией профессиональных услуг) Дэвид Майстер рассуждает о проблеме следования за клиентами в контексте иных услуг, услуг по консультированию. Разумеется, сфера услуг значительно отличается, и Дэвид применяет иную терминологию. Он противопоставляет продажу умения решать проблемы и продажу прошлого опыта. Эти варианты он называет, соответственно, «мозг» и «седая голова» (опыт).
Продавать мозг сложно. Человек, нанимающий вас в качестве мозга, должен вам очень сильно доверять, поскольку ожидает, что вы проделаете нечто, в чем ваша компетенция еще не доказана. Продавать опыт проще. Потенциальный клиент может увидеть, что вы уже прежде решали подобные проблемы, а значит, справитесь и с его трудностями.
Большинство начинающих консультантов продают «мозг» своим коллегам, то есть людям, доверительные отношения с которыми уже установлены. Как только консультант решает проблему клиента, то начинает приобретать опыт, что приводит к наплыву клиентов. Новые клиенты будут все менее знакомыми, изначально доверяющими консультанту все меньше. Поэтому они будут предлагать консультанту работу, требующую знаний и опыта. В конце концов, нового клиента привлек именно опыт; именно такое задание клиент склонен дать непроверенному исполнителю.
С приобретением репутации растет число клиентов, привлеченных опытом консультанта, и консультант обнаруживает, что опыт позволяет зарабатывать больше и легче. В конце концов, он ведь делает все ту же работу, что и раньше.
По мере того, как консультант все меньше продает свой интеллект и все больше – опыт, исчезают именно те качества, которые и делали консультанта ценным. И он начинает отставать. Услуга, которую он теперь предлагает, уже связана не с блестящим решением проблем, а лишь с приземленным решением задач. Популярность консультанта снижается, и его собственные клиенты начинают давать ему все более унизительные задачи. Они начинают посматривать в сторону других консультантов, идущих далеко впереди, на тех, кто продает интеллект.
Это та же смертельная спираль, в которую попадает тот, кто идет на поводу у клиента, только теперь это компания, предоставляющая услуги.
Сделаем выводы. Идущий на поводу у клиента получает легкие деньги сразу, но перестает расти и ставит крест на собственных перспективах. Он отказывается от своей роли лидера.
В этой игре тайно участвуют все. Клиентам она весьма удобна. Новые клиенты приходят и говорят: «Добавьте вот эту возможность в свой продукт, и я его куплю». Это проверка, позволяющая узнать, предоставляете ли вы услуги нужного характера. Отдел продаж вкладывает огромные усилия в такие крупные продажи, и кажется, что добавление одной маленькой возможности – небольшая цена за установление отношений с новым покупателем. Прибыль манит.
Решение, предложенное Майстером, очевидно: больше участвовать в проектах, задействующих мозг. В контексте услуг необходимо убеждать существующих клиентов, привлеченных вашим опытом, давать больше задач для мозга, и Майстер подробно описывает, как это делать. Это означает, пишет он, что придется отказываться от легких заработков на опыте в пользу более тяжелых и не столь прибыльных проектов для мозгов. Переводя решение Майстера в область разработки продуктов, мы обнаруживаем, что все запросы клиентов – это задачи для опыта, тогда как все задачи для мозга появляются внутри компании. Иными словами, ваша задача как руководителя разработки продукта – удержаться на передней линии, избегая при этом смертельной спирали, в которую вас увлекают клиенты. Ответы следует искать внутри себя, делать то, что вы делали, когда только начинали бизнес.
И это означает более тщательное прогнозирование, принятие ответственности, затраты времени, удержание управления.
Прогнозирование
Чтобы сохранить конкурентные преимущества, необходимо рассматривать краткосрочные прибыли в перспективе. Убедитесь, что ваши люди понимают, что краткосрочное планирование равносильно закладке тикающей бомбы в собственное сердце. Краткосрочной перспективы следует избегать, несмотря на возможные расходы.
Долгосрочное прогнозирование означает отказ от некоторых очень привлекательных сделок. Делать это сложно, но необходимо для выживания в будущем. По моему опыту, такие сделки редко когда действительно теряются. Если вы обладаете достаточной уверенностью, чтобы отвернуться от клиента, предлагающего деньги, клиент, вероятнее всего, больше будет вам доверять и подвергнет переоценке свои запросы. Однако такие поступки требуют воли.
Принятие ответственности
Необходимо как можно раньше обрести баланс. Нельзя руководствоваться, например, такими соображениями: «Пару лет всего с ближним прицелом поработаю, а потом переключусь на долгосрочное прогнозирование». Необходимо найти баланс в первый же день. Отложить можно ближний прицел, а вот долгосрочное планирование откладывать нельзя.
Здесь речь идет о корпоративной культуре, и в уже принятое такой культурой краткосрочное планирование очень тяжело внести изменения. Рискованно не идти к прибыльной пропасти, каковой является следование запросам клиентов, – вы вызовете огонь на себя. Черпайте мужество в том, что поступаете верно.
Затраты времени
Многие высокотехнологические компании считают за правило выпускать новые версии программ каждый год. Некоторые выпускают версии еще чаще. Это означает, что основная масса программистов работает в годичных циклах, и любая работа должна пройти путь от идеи, через проектирование, через программирование, через тестирование, к рыночному воплощению в пределах этого года. Для каких-либо новаций в проектировании этого времени недостаточно, поэтому большинство компаний стараются совместить проектирование с программированием. Как я уже подробно рассказывал, если скрестить проектирование и программирование, получается просто программирование.
Удержание управления
Самое главное для руководителя разработкой – отнять контроль над процессом у бушующего огня. Необходимо укротить этого зверя, приняв сопутствующие травмы, как неизбежность. Если выживете, то сможете начать перестраивать процесс таким образом, чтобы обрести баланс между интеллектом и опытом и сохранить в будущем это преимущества.
Поиск основы
Большинство компаний проводят очень аккуратное планирование и анализ финансовых и операционных сторон функционирования бизнеса. Что же касается продукта, они считают, что перечень возможностей – достаточно качественное планирование, хотя оно совершенно таковым не является. Разработка программного обеспечения – процесс слишком сложный, слишком дорогостоящий, слишком тяжелый, чтобы бросаться в него без тщательного планирования и прогнозирования. В контексте разработки программного обеспечения «тщательное планирование» может означать лишь проектирование взаимодействия, которым, как мы установили, довольно часто пренебрегают.
Одной из побочных выгод целеориентированного проектирования является набор персонажей: перечень конкретных типов пользователей. Этот документ оказывается значительным подспорьем при необходимости реагировать на запросы пользователей. Прежде всего, определите, какому персонажу может послужить новая возможность, а затем – является ли этот персонаж одним из ведущих. Если так, можете отнестись к запросу всерьез. Если нет, добавление этой функции приведет к отставанию, независимо от того, сколько денег вы получите. Если к вам в офис придет клиент и предложит $100000, чтобы вы выбросили свою систему бухгалтерского учета или подожгли ящики с бумагами, сделаете ли вы это?
Семь раз отмерь
Если компания идет на поводу у клиентов, это четкий симптом того, что руководители разработки продуктов верят в миф о непредсказуемом рынке. Но они не знают, хороша или плоха возможность, необходима она или же не нужна. Они просто передают бразды правления клиентам: «а почему бы и нет?» Сами они определенно этого не знают. Если клиент говорит: «Добавьте в функции разводной гаечный ключ для левшей», руководитель считает, что клиенту, наверное, что-то известно, чего он сам не знает. Руководитель верит, что именно эта возможность может волшебным образом принести продукту ошеломительный успех.
Обратная сторона медали – руководитель не имеет представления и о том, какие возможности следует убрать. Когда внешние силы ограничивают расписание, руководитель должен пожертвовать какими-то возможностями, однако понятия не имеет, какие возможности жизненно необходимы, а какие – попросту «подливка».
Разрешить непроектировщикам выкидывать возможности? Все равно, что разрешить пассажиру перерезать провода в самолете. Такая вивисекция делается наугад или основывается на каких-то не имеющих к делу отношения качествах вроде цвета изоляции или расстояния от кресла этого пассажира. Могут быть перерезаны и нужные провода. Можно просто отключить свет для места 22А, а можно вывести из строя двигатели. Проектировщики же режут возможности так, как режет создатель самолета: не затрагивая те провода, которые нужны для полета.
Производство фильмов
Производство фильмов – занятие непомерно дорогостоящее, как и создание программного обеспечения. Голливуд снимает фильмы дольше, чем мы производим программы в Кремниевой Долине, и нам есть чему поучиться у них. Действительно дорогостоящая часть – это непосредственная съемка фильма. Все эти камеры, сцены, техники, актеры ежедневно съедают многие тысячи долларов. Хорошие фильмопроизводители четко контролируют эту стадию и заранее планируют все подробнейшим образом. Тратя время и деньги на создание подробных раскадровок и съемочных расписаний, они экономят кучу времени и денег во время съемок.
Процесс создания фильма можно разбить на три крупных стадии: подготовка, производство, доводка. На стадии подготовки появляется и дорабатывается сценарий, выполняются работы по дизайну, нанимаются актеры и персонал для съемок, находятся инвесторы. На стадии производства зажигаются софиты, включаются камеры, режиссеры выкрикивают указания, актеры играют роли. На стадии доводки происходит монтаж фильма, запись звукового сопровождения и проработка маркетинговой кампании. Эти стадии достаточно хорошо соответствуют стадиям разработки программного обеспечения.
На стадии подготовки руководители занимаются проектированием взаимодействия для продукта, нанимают программистов и находят инвесторов. На стадии производства зажигаются мониторы, компиляторы включаются в работу, руководители выкрикивают указания, а программисты пишут код. На стадии доводки отлаживается код, пишется документация, прорабатывается маркетинговая компания.
Важная особенность этого трехстадийного процесса: подготовка позволяет минимизировать длительность стадии производства. Зеленый свет началу съемок стоит невероятно дорого, поэтому экономия нескольких дней съемки может возместить многие недели работы на стадиях подготовки и доводки. Подготовка к съемке занимает год и более, интенсивные съемки – пару месяцев, а доводка – еще многие и многие месяцы.
Более того, по мере роста технической сложности фильмов (что получится, если скрестить фильм с компьютером?) все меньше остается производственной работы, которую можно выполнить без тщательного предварительного планирования. Если планируется дуэль кинозвезды и созданного на компьютере пришельца на лазерных мечах, эта дуэль будет сниматься на фоне синего экрана и в действительности не состоится, поэтому все действия актера вплоть до мельчайших движений и направления взгляда следует спланировать.
Создатели фильмов знают, что у них будет лишь один шанс сделать все верно, поэтому никогда не забывают о стадии подготовки. В мире компьютерной разработки многие руководители считают, что смогут все починить в следующей версии, поэтому давление в области планирования снижается. Это предположение обходится ужасающе дорого.
Сегодня создавать программы так же сложно, как фильмы, однако процесс разработки по преимуществу игнорирует этот факт. Мне встречаются в основном команды разработчиков, которые тратят несколько дней или недель (максимум) на планирование и проектирование, затем от 6 до 18 месяцев – на программирование, затем всего пару месяцев занимаются отладкой, тестированием и документированием. Подозреваю, нам многому следует научиться у киноиндустрии. Если бы мы больше времени тратили на стадию подготовки, на проектирование, то смогли бы сэкономить массу дорогостоящего времени программистов.
Стадия подготовки в киноиндустрии – самая дешевая. Затраты на создание раскадровки дорогостоящей погони со взрывами и специальными эффектами не очень велики. Чтобы внести радикальные изменения, достаточно ластика, карандаша и какого-то времени. Тщательная детализация на бумаге экономит миллионы в тот момент, когда включается камера, а в автомобили набиваются каскадеры и взрывчатые вещества. Подготовка – это инвестиции во время, которое экономит наличные средства и повышает вероятность успеха.
Если режиссер передумал и хочет взорвать вертолет вместо поезда, то на стадии подготовки сделать это просто и обойдется недорого. Подобные изменения во время съемки практически самоубийственны. Создатели фильмов это знают, а потому не торопятся во время подготовки, а во время производства следуют этим планам.
Для уже существующих продуктов цикл искажается еще больше. Ежегодное обновление возможностей для уже вышедшего на рынок продукта может вообще не оставлять времени на предварительное проектирование. Руководитель разработки продукта просто ведет перечень возможностей, запрошенных клиентами, и каждый год без лишних церемоний вручает этот список программистам.
Как и в случае производства фильмов, стадия тщательного проектирования продукта в процессе разработки может дать огромные преимущества. Создавая на бумаге подробный план для продукта, мы исключаем многочисленные неопределенности в программировании, а также существенно снижаем риски, обычно сопутствующие выпуску продукции, основанной на программном обеспечении.
Хорошая сделка
Руководство должно взять на себя ответственность и включать проектирование в процесс до того, как начато программирование. Если проводить аналогии, проектирование взаимодействия – это архитектура, а не дизайн интерьеров. Проектирование взаимодействия определяет, куда будет залит бетон фундамента, точно так же, как и самый подходящий материал для занавесок или портьер на окна. Проектировщики взаимодействия должны получить моральные полномочия диктовать форму и конституцию продукта программистам. Это приведет к серьезным культурным сдвигам, но после таких перемен программисты станут счастливее, а вы получите выгоды от значительно более совершенного продукта.
В обмен на такую власть сообщество проектировщиков взаимодействия также должно принять определенную ответственность. Во-первых, проектировщики должны войти в число лиц, кровно заинтересованных в исходе игры. Они должны сойти с боковой линии, откуда сейчас дают советы программистам, разрешая тем принять полную ответственность за успех продуктов. Недостаточно просто иметь правильные идеи. Необходимо добиться применения этих идей на практике, и единственный способ это сделать состоит в том, чтобы проектировщики взаимодействия встали ближе к точке риска. Программисты приближаются к этой точке с каждой строкой кода.
Кроме того, проектировщики взаимодействий должны фиксировать свои предложения в письменной форме.
Документируйте замысел, чтобы дать ему жизнь
Один из действительно жестких уроков, которые мне пришлось усвоить за прошедшие годы, таков. Хорошее и даже отличное проектирование бессмысленно, если не воплощается в жизнь. И оно никогда не воплощается в жизнь, не будучи описанным подробно, точно и со всеми деталями, причем в терминах, имеющих смысл для программистов. Описание должно быть письменным, включать исчерпывающие подробности, сопутствующие свидетельства и примеры. Оно должно быть напечатано и переплетено во множестве экземпляров. Его следует лично представить команде разработчиков. Вице-президент разработки в этот момент должен присутствовать, кивать и улыбаться. Еще лучше, если это будет президент компании.
Необходимо, чтобы проектировщики писали, кадрировали, анимировали, прототипировали свои решения настолько полно и подробно, чтобы программисты могли считать эти решения чертежами и писать на их основе код. Необходимо описывать достаточное количество ситуаций, давая разработчикам уверенность в том, что решение достаточно надежно, чтобы дожить до реализации.
Проектирование в письменной форме подобно плану сражения. Каждый знает свою роль, обладает критической и своевременной информацией. Все могут действовать сообща и гармонично, создавая продукт, ориентированный на конкретного пользователя.
Программисты прибегают к довольно действенной «пассивно-агрессивной» тактике. Не вступая в конфронтацию, призванную разрешить вопрос, они избегают внимания к нему и втихую предпринимают – или не предпринимают – определенное действие. Как пассажир, который направляет каноэ, исподтишка наклоняясь то влево, то вправо. Одна из моих любимых бизнес-аксиом – «если этого нет на бумаге, значит, это не существует» – в мире проектирования программного обеспечения верна, как нигде. Если что-то не записано, более чем вероятно, что это будет неправильно истолковано или опущено. Дело в том, что мотивация программистов очень сильно расходится с мотивацией пользователей. Недостаточно исключить диалоговое окно из описания, проектировщик обязан явным образом указать, где программист не должен по собственной инициативе добавлять лишнее окно. Программистам нравятся диалоговые окна. Они считают, что оказывают пользователю услугу, добавляя в свободные минуты пару дополнительных диалоговых окон. А пользователи эти окна ненавидят, потому что диалоги их изматывают и снижают производительность.
Проектировщик взаимодействия, как архитектор, сдает набор чертежей, регламентирующий продукт, который должен быть создан. Но, несмотря на сходство, между чертежами и проектировочными документами есть и большие различия. Чертежи обладают большей емкостью. Единственная линия чертежа может обозначать стену из ста тысяч кирпичей. Когда речь идет о взаимодействии, емкость улетучивается. На описание поведения ста страниц кода может уйти сто страниц документа. С минимальной долей шутки я заявляю, что достаточно детализированная спецификация неотличима от кода, эту спецификацию реализующего. В идеальном мире разработчики будут предоставлять проектировщикам целый год для проектирования, а затем программистам три месяца на создание кода. В сегодняшнем мире все наоборот.
Из этого следует, что проектировочный документ должен, это неизбежно, опускать некоторые моменты. Проектировщик должен иметь не только чувство качественного проектирования, но и понимать, что именно сейчас важно. Проектировщик взаимодействия должен решать, какие части программы необходимо спроектировать, а какие можно оставить на откуп программистам.
Все мои проектировочные документы построены по принципу спирали, как газеты. Заголовок новости содержит всю значимую информацию. Первый параграф повторяет новость более подробно. Следующие три параграфа повторяют новость еще раз, еще более подробно. В оставшейся части статьи, которая может занять несколько колонок, содержится вся история в мельчайших подробностях. Все это позволяет читателю получить необходимое, не разгребая ненужные детали.
Проектирование влияет на код
Многие ошибочно полагают, что проектировщики взаимодействия делают дизайн интерфейса пользователя. Без дизайна интерфейса, несомненно, не обойтись, однако в процессе проектирования интерфейс играет второстепенную роль, примерно как упаковка продукта. Дизайн интерфейса должен выполняться после того, как определено назначение и поведение интерактивного продукта. Некачественный продукт в красивой и красочной упаковке – продукт по-прежнему некачественный.
Специалистов по дизайну интерфейса обычно приглашают в момент, когда работа над продуктом завершена или близится к завершению, возможности для проектирования в основном уже упущены, и здесь усилия проектировщика – не важно, насколько героические – имеют ограниченное действие.
Проектирование взаимодействия может радикальным образом изменить процесс реализации, хотя это не означает, что проектирование затрагивает только вопросы реализации. К примеру, программисты могут ожидать, что проектировщик опишет внешний вид важного диалогового окна. А проектировщик может пожелать заменить это окно чем-то другим, например панелью инструментов. При этом он не интересуется программной реализацией диалоговых окон и панелей инструментов.
Поскольку проектировщик взаимодействия может оказать серьезное влияние на создание тех или иных фрагментов программы, в то же время избегая деталей реализации, мы считаем проектирование процессом определения продукта. По сути дела, проектировщики определяют внутреннюю часть продукта путем определения внешней. Взаимодействие с пользователем описывается очень подробно и очень точно, тогда как вопросы реализации остаются на совести программиста.
Проектировочные документы приносят пользу программистам
Помните вопрос «Когда проект готов?» из главы 3 «Пустая трата денег»? Основное назначение документов, созданных проектировщиком взаимодействия, в том, чтобы ответить на него. В общих чертах проектировочный документ – это надежный механизм контроля процесса программирования. Он – то же самое, что сценарий и раскадровка для производства фильма, он проясняет для всех участников принципы работы, материалы, необходимые для создания и применения, а также условия, выполнение которых позволяет сказать, что работа завершена. Как правило, в процессе разработки труднее всего контролировать этап написания кода, более других связанный с рисками, поэтому непонимание «готовности» обходится довольно дорого.
Прозрачный документ помогает руководству компании точнее понять, что создает компания, и таким образом сконцентрировать усилия предприятия в нужном направлении. Руководство получает в свое распоряжение более точное определение продукта, подходящее для инвесторов, партнеров, сотрудников и коллег. Это гарантирует, что все рабочие усилия компании направлены на достижение одной цели.
Программистам нужен сильный и умный лидер. В конце концов, они сильные и умные, они предпочитают, очевидно, чтобы их возглавляли равные по рангу, а не нижестоящие. Как утверждает Джерри Вайнберг (Jerry Weinberg), всем известно, что «плохих руководителей найти проще, чем хороших программистов». Это ставит хорошего программиста более выгодное положение, несмотря на номинальный авторитет руководителя в корпоративной иерархии.
Руководитель разработки продукта слаб, если не способен точно и убедительно описать то, что создает его команда. Как правило, руководство выражает свои желания с помощью ничего не значащих критериев фиксированных сроков сдачи и с помощью торговли функциями. О слабости таких инструментов мы уже говорили. Лишь программистам доподлинно известно, как будет выглядеть законченный продукт, поэтому они в большей степени властны над проектом, чем руководитель.
Я работал с программистами, которые испытывали неприязнь к выполнявшей проектирование сторонней компании. Они знали, что моя работа заключается в «проектировании» и что это самая творческая и самая интересная часть их работы. Однако поработав с нами, они поняли, что мы не только не отнимаем у них работу, но и делаем ее более качественной.
Недавно мне довелось побывать на одном собрании, где присутствовали язвительные программисты клиента, не предупрежденные о нашей роли. Один седобородый программист по имени Фред выступал особенно энергично. Стоило нам высказать идею или представить какой-либо способ отображения информации для пользователя, Фред нападал на нас. Он очень умен и излагал свои мысли четко и громко. Всякий раз когда мы демонстрировали слайд, иллюстрировавший изменение взаимодействия, он закатывал глаза, снисходительно улыбался и отпускал замечание по поводу того, что мы не осознаем, «каких героических усилий это потребует» от него и от его команды. Он все время давал понять, что наши решения не облегчают, а осложняют его работу.
Под конец, когда собравшиеся стали разбредаться, нашей команде удалось поговорить с Фредом наедине. Мы объяснили ему, что наша задача сделать программу проще и мощнее с точки зрения конечного пользователя, и что мы полностью осознаем: наши решения требуют серьезных дополнительных размышлений на уровне программирования. Мы настаивали, что нас интересует только конечный пользователь. Внезапно на лицо Фреда нашло выражение потрясения. Он воскликнул: «Вы бросаете мне серьезный технологический вызов!» Его отношение полностью изменилось, как только он осознал, что мы принесли ему грааль всех программистов – сложную проблему, достойную решения.
Никоим образом не пытаясь ему угрожать, мы дали ему то, чего он больше всего желал: шанс еще раз проявить себя, как самого умного, самого изощренного, самого опытного программиста. Его отношение изменилось, как только он осознал, что мы отняли лишь запутанный человеческий аспект программирования, который ему так не нравился, а ему осталось лишь одолеть чисто алгоритмическую начинку программы. Мы стали для него благодетелями, а не врагами.
Проектировочные документы идут на пользу маркетингу
В большинстве некомпьютерных предприятий на этапе определения продукта работают профессиональные маркетологи. В бизнесе программного обеспечения маркетологов исключили из процесса. Здесь им достаются лишь запросы новых возможностей. Если они требуют исправления дефектов, программисты попросту швыряют им в лицо жесткий график проекта с вопросом: «И как я могу что-то исправить, если вы не даете мне времени?» Руководитель отдела маркетинга не смеет потратить это драгоценное время, потому что не просто нарушит этим график, но и покажет всем, насколько график лжив, и программисты в будущем смогут безнаказанно заваливать все сроки. Маркетологи знают, что список функций – слабый механизм, и часто стремятся к участию в процессе определения продукта. К сожалению, маркетологи, похоже, неспособны давать указания, которые показались бы программистам полезными или осмысленными.
Одно из наиболее важных преимуществ усиленного процесса проектирования, а также доскональной документации, как части этого процесса – польза, которую извлекают маркетологи. Маркетологи рассказывают проектировщикам, какие потребности или желания пользователей надеются удовлетворить. Проектировщики взаимодействия изучают таких людей, чтобы определить их цели и создать набор персонажей. Точные определения персонажей пользователей – важная часть проектировочной документации, и эти определения становятся точкой фокусировки усилий по маркетингу. Программисты работают только с кодом, но персонажи одушевляют этот код. Маркетологи работают с каналами, рынками, средствами массовой информации, реселлерами, но персонажи одушевляют все эти сущности. Наконец, у программиста и маркетолога появляется общая точка отсчета.
По существу, проектировщики взаимодействия играют роль посредников для профессиональных маркетологов. Проектировщик – это человек, способный переводить с языка маркетологов на язык программистов. Когда у маркетологов нет четкого понимания, они могут описать свои заботы проектировщикам, а те разовьют мысль в терминах персонажа. Затем проектировщик сможет перевести проблему в спецификацию взаимодействия. Более того, маркетолог увидит, как выполняются его запросы, и может быть уверен, что ему не придется искать покупателя для голого инженерного продукта.
Разработка персонажей пользователей – дело, как правило, очень знакомое профессиональным маркетологам. Они часто выполняют подобные упражнения, определяя персонажи покупателей продукта. При этом изучаются каналы распространения и демография вместо целей и сценариев, поэтому персонажи обычно получаются иными, однако всегда оказывается, что они полезны маркетологам для планирования. Маркетологи получают возможность четко изложить покупателю, каким образом продукт облегчит жизнь пользователям.
Проектировочные документы помогают в разработке документации и технической поддержке
Любой технический писатель скажет вам, что качественное проектирование избавляет от необходимости писать невероятные объемы документации. Чем меньше сложного взаимодействия, тем меньше пространных объяснений. Авторы документации получают возможность больше времени потратить на более высокие уровни взаимодействия. Вместо того чтобы, за руку водить пользователя по запутанным джунглям непонятного интерфейса, они могут выйти на другой уровень и потратить силы на более интересные пользователю вопросы решения проблем предметной области. Вместо рассказа о том, где хранятся файлы системы инвентаризации, документация может поведать о принципах инвентаризации, что определенно принесет больше пользы.
То же верно и для технической поддержки. Чем лучше проектирование, тем меньше звонков от пользователей. Как показало проектирование сканера Peacock, описанное в предыдущей главе, проектировочный документ радикально снижает потребность в технической поддержке.
Проектировочные документы помогают руководителям
Из всех участников наибольшую выгоду от проектировочных документов получают руководители разработкой продуктов. Упреждающее описание того, что необходимо создать, ускоряет весь процесс разработки, делает его более взвешенным, менее рискованным, менее дорогостоящим. Эффективность процесса разработки повышается, и он больше не управляется клиентами.
Прежде всего, проектирование означает большую предсказуемость. Проектирование продукта означает, что фаза программирования будет более предсказуемой. Кроме того, и успех продукта становится легче прогнозировать и оценивать. Это два наиболее рискованных и дорогостоящих аспекта разработки программных продуктов. Они сокращают стоимость производства и побеждают миф о непредсказуемости рынка. Эд Форман, вице-президент по разработке продукта Elemental Drumbeat, говорит:
«Выгоды от услуг проектирования измеряются сэкономленными месяцами напряженной работы».
Проектировочные документы выгодны компании в целом
Какова сущность построения успешного бизнеса? Все участники должны работать вместе для достижения одной цели. Любая неразбериха или разлад в целях рассеивает усилия двояко. Во-первых, вы теряете усилия тех, кто идет в неверном направлении, а во-вторых, их усилия сдерживают тех, кто пытается идти в нужном направлении. Если один человек в каноэ гребет в противоположном направлении, команда уже не может всерьез претендовать на призовое место. Успех требует гребли в одном направлении, и любая сила, отвлекающая внимание одного человека, наносит вред всем.
Более того, точно осознавая, что вы делаете, вы избежите траты сил на то, чего вы точно не собираетесь делать. Ни одна компания не может себе позволить тратить силы на вещи, не относящиеся к делу.
Избавляясь от управления, ориентированного на фиксированные сроки сдачи, и торга по поводу функций продукта, документальное описание продукта направляет все внимание компании на его качество, которое неизбежно радикально повышается. Качество, в свою очередь, умножает запасы самого бесценного актива компании: лояльности клиентов.
Кто отвечает за качество продукта?
Если за качество продукта отвечает каждый, это означает, что за качество продукта не отвечает никто. Слишком уж легко предположить, что решением проблемы качества займется ваш коллега, пока вы работаете над чем-то еще. Программисты несут ответственность за уничтожение всех дефектов кода. Отдел продаж отвечает за закрытие сделок, а маркетологи – за упаковку и позиционирование. Однако в настоящий момент нет лиц, отвечающих за качество и пригодность продукта. Иногда этим лицам не хватает инструментов, чтобы обнаружить и разрешить проблему.
Иногда не хватает умения, чтобы выразить решение. Иногда у них нет авторитета, достаточного для того, чтобы их решение было реализовано. Как мы видели в предыдущих главах, написание кода подрывает способность программиста думать о целях пользователя. Руководителям разработки и без того есть чем заняться, они не могут концентрироваться на деталях поведения продукта. Маркетологам не хватает технической подготовки, и это снижает их способность общаться на технические темы, а значит, подрывает доверие к ним со стороны программистов. При отсутствии тщательно документированного проекта нет надежды на его правильную и эффективную реализацию.
Главная рекомендация этой книги: за качество продукта в конечном итоге должен отвечать проектировщик взаимодействия. Необходимо разрешить ему определять содержание и поведение программы. Он должен работать со списком функций, и даже график разработки, в основном, должен быть на его совести. Он защищает пользователя и должен обладать властью над всеми внешними аспектами продукта.
За всю эту власть проектировщик взаимодействий получает и ряд очень серьезных обязанностей. Без такого сочетания авторитета и ответственности программисты не будут уважать проектировщиков и вернут себе контроль над продуктом. Проектировщики должны быть кровно заинтересованы в успехе. Мандат доверия команды проектирования взаимодействия включает проектирование реальных, простых в применении, привлекательных продуктов, позволяющих пользователям достигать практических целей, не отказываясь от целей личных. Более того, проектировщик взаимодействия должен создавать исчерпывающие письменные спецификации, исходя из которых программисты и будут строить продукт. Проектировщик взаимодействия должен предоставить маркетологам прозрачные описания пользователей и того, как продукт удовлетворяет потребности этих пользователей. И самое важное – он принимает на себя ответственность за качество конечного продукта.
Включение проектирования в процесс
В предыдущей главе мы видели, что многие профессионалы, предлагавшие свою помощь в проектировании взаимодействий, не добились успеха. Речь шла о юзабилити-специалистах, промышленных дизайнерах и других, кто пытался и не смог решить эту проблему. В настоящее время в индустрии не существует группы, способной решить эту проблему.
Ряды проектировщиков взаимодействий медленно пополняются, и здесь следует иметь в виду, что важнее правильно подготовить процесс разработки к включению проектирования, а не нанять самых талантливых проектировщиков взаимодействий. Самое важное – принять решение, что программированию будет предшествовать проектирование. Самый блестящий проектировщик мира ничем не поможет, если продукт на следующей неделе переходит на стадию бета-тестирования.
Многие империи, производящие программное обеспечение, выросли на усилиях очень молодых и очень неопытных программистов. Вероятно, они получали свободу действий в вопросах программирования, а сочетание невероятной ответственности с безграничными полномочиями часто становится плавильным тиглем, рождающим великие вещи. Те же правила действуют в проектировании взаимодействия. Если человек получает ответственность за качество продукта и соразмерные полномочия, то он может принять на себя эту ношу независимо от своего опыта. Если взять подходящего человека и дать ему полную власть над качеством и поведением продукта, вы получите продукт намного, намного лучший, чем если этого не сделать. Проблема не в людях, но в процессе. Разумеется, при прочих равных всегда лучше нанять специалиста с подходящим опытом. Однако если специалисты не вписываются в бюджет или просто не существуют, менее опытные проектировщики все равно лучше, чем совершенно неподконтрольные программисты.
Что значит быть «подходящим человеком»? Лучше всего подойдет человек, отдаленный от процесса реализации продукта настолько, чтобы он мог легко ставить себя на место пользователя. Это может быть и программист, но определенно не из числа тех, что будут создавать эту программу. Иначе возникает слишком большой конфликт интересов.
Откуда берутся проектировщики взаимодействия
Как бы там ни было, вам необходимо выбрать проектировщика взаимодействий. Начав искать, вы обнаружите разочарованных проектировщиков взаимодействия практически в каждой высокотехнологической компании: это технические писатели, к которым программисты обращаются за помощью; менеджеры продуктов с полками, заставленными книгами по дизайну интерфейсов; эргономисты, заговаривающие о более ранней интеграции в разработку; маркетологи, подчеркивающие, что прикупили стереосистему с минимально возможным количеством кнопок; программисты, которые пишут очень мало кода, но с которыми стремятся работать другие программисты. В действительности, когда в компании станет известно, что какой-то проект начнется с фазы проектирования взаимодействия, наверняка кто-то вызовется отвечать за качество продукта.
При найме проектировщика на полный рабочий день хороший кандидат не обязательно назовет себя проектировщиком взаимодействия. Вам нужны люди, понимающие, какие ограничения накладывает техническая сторона дела, и горящие желанием проектировать, и таких людей, обладающих самой разнообразной подготовкой, можно найти в самых различных средах. Нанимая людей в свою группу проектирования, я прошу их пройти испытание на конкретной задаче, поскольку знаю, что сведения в резюме бывают весьма разнообразные. В моей студии несколько проектировщиков в прошлом были техническими писателями, руководителями разработки, сотрудниками технической поддержки, дизайнерами. Многие из моих проектировщиков имеют степени в гуманитарных областях, но есть также люди со степенями в физике, архитектуре, информатике и промышленном дизайне.
Опыт работы в технической поддержке или документировании дает проектировщикам перспективу для оценки потребностей типичного пользователя. Менеджеры продуктов знают о нуждах и заботах программистов в процессе разработки. Дизайнеры и промышленные дизайнеры страстно увлечены элегантным дизайном и обладают способностью такой дизайн создавать. Проектировщики с гуманитарным образованием, работавшие в области высоких технологий, сочетают познания в технологии со способностью ясно выражать свои мысли.
Создание команд проектировщиков
Обсуждение способов организации и управления командой проектировщиков может занять целую книгу. Здесь же я затронул лишь некоторые методы проектирования, чтобы прояснить, что имею в виду под «проектированием», но не пытался изложить методологию проектирования целиком. Тем не менее, мой опыт управления командами проектировщиков дал возможность выделить несколько ключевых принципов.
Команды должны быть небольшими. Чтобы продвигаться вперед, проектировщикам необходимо общее видение. Для каждого продукта я отряжаю команду из двух или трех человек, которым время от времени могут помогать и содействовать другие специалисты. В сложных проектах могут возникать ситуации, когда у продукта появляется несколько различных интерфейсов, и в этот момент можно разделить проблему на несколько частей: каждой отдельной команде по части. Но до этого момента у семи нянек дитя будет без глаза.
Изолируйте команду от руководителей и программистов. На старте проекта проектировщикам будет необходимо поговорить с другими людьми, работающими над продуктом, чтобы получить четкую формулировку проблемы и дать определения персонажам. После этого проектировщикам требуется независимость в исследовании тупиковых путей; так они получают наилучшие решения, и делать это могут только в уединении.
Назначьте человека, отвечающего за документирование работы команды. Все участники вносят вклад в создание документации, но у нее должен быть «владелец», придающий эффективность процессу.
Дайте команде время, чтобы собраться с мыслями. В разгаре проекта, когда основные проблемы уже решены, имеет смысл ответить на конкретные вопросы команды. В начале проекта команда должна тщательно все продумать и представить свои соображения в виде стройной концепции. Когда моя студия полностью прорабатывает структуру продукта для клиента, мы предоставляем документацию и свои проекты с неформальными контрольными точками по мере необходимости. На первой презентации мы очерчиваем проблему, представляем персонажи и описываем, какие задачи должно решить проектирование. На каждой из последующих презентаций мы более подробно описываем проект продукта.
Управляемый процесс, сосредоточенный на проектировании вместо программирования, позволяет компаниям избежать игры с огнем высоких технологий. Они заранее могут узнать, что должно понравиться пользователям и как это обеспечить. Они будут знать, когда процесс разработки завершен, а у специалистов различных дисциплин появится единое, объединяющее видение продукта.
Глава 14
Мощь и удовольствие
Чтобы ваш бизнес получил все выгоды от проектирования взаимодействия, эту дисциплину необходимо сделать составной частью процесса разработки. Ее нельзя добавить задним числом.
В предыдущей главе я писал, что проектирование необходимо излагать на бумаге, прежде чем начнется создание кода. Однако в кипящем котле разработки продукта программист по-прежнему имеет возможность игнорировать проектировочный документ, независимо от качества документа. Такое развитие событий весьма вероятно в пассивно-агрессивной культуре разработки программного обеспечения, где инженеры считают любые проектировочные вводные не более чем советом, которому можно следовать, если позволяет рабочая нагрузка и есть желание.
Следует четко и ясно дать понять всем участника проекта, что проект – это чертеж, которому необходимо следовать, а не просто предложение. Если приверженность проектированию не демонстрируется энергично и открыто, разработчики будут предполагать, что лишь на них возложена ответственность за создание успешного продукта.
Есть только один способ эффективно передать эту мысль. Высшее руководство компании должно недвусмысленно заявить всем менеджерам по проектированию и разработке, что программисты освобождаются от ответственности. Оно должно дать понять, что за качество продукта отвечает теперь команда проектировщиков, и проектировщики наделяются полномочиями требовать, разумеется, под присмотром руководителей.
Программисты вольны импровизировать внутри программы, но любой аспект взаимодействия с пользователем, имеющий четкое определение, должен быть реализован строго по описанию. Описание можно подвергать сомнениям, но нельзя в одностороннем порядке игнорировать или переиначивать. Предписания проектировщиков не следует считать советом, который можно воспринимать частично или видоизменять.
На команду проектировщиков возлагается ответственность за все, с чем вступает в контакт пользователь. Не только за программное, но и за аппаратное обеспечение. Следует принимать во внимание и сопутствующие программные модули, такие как программы установки.
Это, вероятно, наиболее радикальное требование, выполнение которого необходимо для успешного проектирования, причем такое, которое требует наибольшей культурной адаптации. Позже в этой главе мы обсудим культурные вопросы более подробно. А сейчас рассмотрим пример компании, успешно включившей проектирование в процесс разработки.
Пример налаженного проекта
Моя студия проектирования недавно завершила работу над одним из самых успешных проектов. Клиент – небольшая компания Sun Healthcare Systems, Inc., создающая программное обеспечение для управления всевозможными аспектами работы учреждений системы здравоохранения.
На первых встречах я старательно объяснял заказчику важность персонажей и рассказывал о том, какую роль мы им отводим в процессе проектирования. К нашему большому удовольствию и удивлению, команда SHS восприняла эту концепцию очень благосклонно. На первое проектное совещание они принесли собственный набор из десятка уже определенных персонажей. Нам все же пришлось потратить время на изучение предметной области, чтобы проверить качество персонажей и доработать их, зато полностью исчезла необходимость убеждать разработчиков и маркетологов в применимости персонажей, как инструмента.
Бизнес SHS приводит эту компанию к тому, что Мишель Борк (Мiсhеl Воurque) из компании Clinidata, расположенной в Монреале, называет «Клиническим водоворотом». Кабинеты врачей попали в число первых объектов компьютеризации в малом бизнесе, однако преобразованию поддалась лишь финансовая часть. Та же сторона, где врач взаимодействует с пациентом, упрямо сопротивлялась пришествию цифровой эры, и остается одним из последних бастионов некомпьютеризованного мира.
Усилия SHS в основном направлены на администрирование, но существенная часть задач оказывается прямо в этом водовороте. Мы участвовали в небольших проектах других компаний, работающих в этой области, но в самом центре водоворота мы еще не были. Возможность работать над столь серьезным и сложным проектом нас сильно воодушевила.
Воодушевились и в компании SHS, но для начала сообщили нам, что масштабы бизнеса настолько велики, что компания сомневается в нашей способности эти масштабы осилить. SHS считала, что ее бизнес просто слишком велик и сложен для понимания. Для нас это был вызов, и мы приняли его с готовностью.
Проект был большой. Мы выделили пять ключевых персонажей. Ни в одном из прошлых проектов не бывало больше трех. Поначалу мы с подозрением отнеслись к такому числу, однако, пересмотрев результаты, поняли, что SHS действительно пытается охватить огромный сегмент рынка здравоохранения. Разумеется, создание программного обеспечения сразу для пяти ключевых персонажей – слишком крупный проект. В SHS это поняли, поэтому продукт проектировался и создавался поэтапно, по одному персонажу на этап.
Дэвид Вест (David West), вице-президент по разработке и наш связной в SHS, помимо прочего снискал доверие и уважение других сотрудников этой растущей организации. Маркетологи знают, что он действует в их интересах. Знают это и программисты. Знают, что он суров, но справедлив. Он подобен камню в бурлящих водах разработки. Он верен процессу проектирования, и другие разработчики стали доверять нашей работе, воспринимать ее всерьез, как спецификацию.
Когда SHS вступила в контакт с Соорег Interaction Design, ее отдел разработки программ был организован в соответствии с уже имевшимся программным продуктом. А продукт имел два модуля – клинический и финансовый.
Проведя исследование и разработав персонажи, мы быстро поняли, почему существующая система не способна удовлетворить медиков. Если даже не учитывать серьезные проблемы взаимодействия, деление между информационными подсистемами (клинической и финансовой) было надуманным. Это порождало лишнюю бумажную работу, которую пользователь был вынужден выполнять, чтобы обойти недостатки системы обработки данных. Каждый пользователь обитал на собственном островке данных, поскольку два модуля системы не были взаимосвязаны.
Мы рекомендовали создать объединенную медицинскую карту пациента, содержащую как клиническую, так и финансовую информацию для консолидированной базы данных, а также модульный пользовательский интерфейс, позволяющий каждому персонажу получать доступ к информации, необходимой для решения ее задач. В результате SHS перепроектировала базу данных, лежащую в основе продукта. И что примечательно, реорганизовала сотрудников отдела разработки в соответствии с этой новой архитектурой! Разработчики сформировали две новые группы. Одна из них работала с архитектурой медицинской карты и базой данных, а вторая – с интерфейсами персонажей. Все дальнейшие программные спецификации и документы в SHS будут содержать имена персонажей для четкого определения функций.
Программисты SHS поступили мудро, откладывая программирование до завершения работ по проектированию. Дэвид и команда SHS хорошо понимали, что простой программистов обходится недешево, но гораздо дороже обходится заливка бетонной смеси программного кода не там, где требуется.
Программисты работали над логикой базы данных, не затрагивающей взаимодействие с пользователем. Кроме того, они разбили проект на несколько фаз, среди которых был и перевод существующей версии продукта на более высокий уровень. Таким образом, программистам было чем заняться, и конфликтов с долгосрочными стратегическими планами не возникало.
Для того, чтобы гладко синхронизировать нашу работу с работой программистов, мы разделили процесс на несколько крупных частей.
Мы договорились, что на начальном этапе проектирования будем уделять внимание лишь двум персонажам из пяти ключевых, а к трем остальным вернемся позже. Опять же, это позволило вести проектирование в опережающем темпе, и в то же время разработчики не сидели без дела.
Осознанное проектирование взаимодействия
В большинстве компаний проектирование основного продукта или услуги считается важнейшим умением. В мире высокотехнологических продуктов, основанных на программном обеспечении, считается (и ошибочно), что проектирование продукта находится в компетенции инженерного персонала. В действительности акт творения состоит из двух частей: проектирования и программирования. Готовность разрешить проектировщикам взаимодействия работать с важнейшим элементом бизнеса наряду с инженерами требует значительных культурных перемен.
В любой компании, независимо от ее специализации, сотрудники знают, что имеют определенные обязанности. Так, в компании, производящей катушки для динамиков, руководитель производства знает, что хотя его задача заключается в покупке лучшего сырья по наинизшей цене, он не сможет подписать контракт с поставщиком, пока не получит одобрение совета компании. Руководитель производства не очень разбирается в юридических вопросах контрактного дела, однако знает, что не стоит создавать трудности своей компании, пренебрегая советом профессионалов в области контрактов и сделок. Даже не разбираясь в контрактном деле, точнее, как раз поэтому, руководитель знает, что необходимо привлечь юриста.
Приемщик в грузовом доке, обладая самым низким рангом, знает, что уполномочен расписываться лишь за грузы, доставка которых уже оговорена, но не уполномочен расписываться за иные.
Основатель и президент компании, выпускающей катушки, также вполне осознает необходимость участия юристов на всех уровнях. Он не имеет профильного юридического образования, а потому советуется с помощником, прежде чем подписывать какие-либо документы.
Ни один из этих людей не обладает специальными знаниями в области юриспруденции, но каждый полностью осознает важность участия юриста. Никто в компании ничего не подпишет, пока юристы не подтвердят, что это можно сделать. Сама по себе компания осознает необходимость в таком присмотре и даже, временами, вмешательстве.
Такое осознание, распространяющееся на всю компанию, верно и для других областей.
Когда катушечной компании потребовалось новое производственное здание, она наняла стороннего профессионала, архитектора. Руководитель производства и президент хорошо разбираются в особенностях производственных мощностей, однако знают, что их понимание нюансов конвейерной работы и строительства зданий поверхностно. Никому в этой компании и в голову не придет расширять производство, не посоветовавшись сначала с архитектором. Архитектор переводит потребности пользователей в термины, понятные строителям.
То же верно и для рекламы. Руководитель отдела маркетинга не будет просить рабочего описать выгоды продукта для брошюры или для профильного отраслевого журнала. Каждый в компании, независимо от опыта, понимает, что реклама – дело профессионалов, и что специалисты по рекламе могут обеспечить компании отличный пиар. Разумеется, эти специалисты могут быть сотрудниками компании, как могут быть и наняты в рекламном агентстве. Оба варианта хороши.
Приведенная аналогия не идеальна. Ни архитектура, ни юридическая консультация для производственной компании не лежат в сфере основного занятия. Однако программирование – это создание продукта, а именно создание продукта, как правило, и считается занятием компании. Учитывая непосредственное влияние продукта на бизнес, можно ожидать, что любая компания будет вдвойне осторожна, чтобы бразды правления не попали в плохие руки, – еще более осторожна, чем в случае с рекламой, архитектурой или приобретением чего-либо.
Мы должны сделать так, чтобы в компании поняли: проектирование взаимодействия представляет собой область, требующую профессиональных навыков, и что интерактивные продукты нельзя просто конструировать инженерными способами, их следует еще и проектировать, чтобы добиться успеха на открытом рынке.
Польза от перемен
В мире программного обеспечения так много апологетов, а их влияние настолько велико, что власть этой касты ослабевает очень медленно. Но эта власть ослабнет обязательно. Для этого достаточно, чтобы люди поняли: технологии не обязательно должны быть бесчеловечными. Чем чаще пользователи будет сталкиваться с программами, не унижающими их человеческое достоинство, тем быстрее они будут терять терпение, встречаясь с иными программами, которые оскорбляют и раздражают их. Они пинками погонят танцующих медведей прочь.
Когда пользователей таких продуктов было немного, все они были и непосредственными участниками процесса, а потому понимали, насколько революционна эта технология. По мере проникновения технологии во все сферы жизни всё меньше причастившихся осознают, насколько это достижение велико. Они не готовы простить продукту некачественное взаимодействие только потому, что создание этого продукта отняло много сил.
Следование за технологией кажется идеей неплохой, однако результатом обычно становятся утомляющие продукты, более сложные наследники тех, что уже были созданы. Проектирование взаимодействия позволяет вырваться из этого круга и создавать продукты, которые делают то, что никогда раньше не делалось.
Проектирование взаимодействия делает продукт привлекательным, награждая уникальным рыночным преимуществом – преданностью покупателей. Если покупателя осчастливил ваш продукт, этот человек надолго останется клиентом вашей компании и вашего брэнда. Если же ваш продукт – очередной танцующий медведь, клиенты будут оглядываться в поисках более простых и дружелюбных альтернатив.
Проектирование взаимодействия может сократить затраты времени на разработку продукта. Если вы заранее знаете, что именно следует создавать, то потратите меньше времени на поиски верного пути.
Создание правильного продукта – всегда итеративный процесс. Чтобы добиться точности в деталях, требуется несколько попыток. Проектирование взаимодействия позволяет значительно уменьшить количество итераций. Выпуск каждой новой версии продукта сопряжен с огромными затратами, поэтому, уменьшая количество версий с четырех до двух, вы экономите массу денег и времени.
Процесс разработки удешевляется, если версий становится меньше и код выбрасывается не в таких количествах. Программисты часто жалуются, что наши проекты требуют создания более сложного кода, и зачастую они правы. Однако в целом размер кода получается обычно меньшим. Стоимость кода не сильно растет с увеличением сложности, однако значительно растет с увеличением объема. Каждую лишнюю строку кода необходимо тестировать, отлаживать и поддерживать.
Почему они не едят пирожных?
Я живу и работаю в Кремниевой Долине, штат Калифорния. Практически все знакомые мне люди вовлечены в индустрию высоких технологий. Мы все обеспечены, образованны, географически и социально мобильны, замечательно управляемся с компьютерами, сотовыми телефонами, видеомагнитофонами, банкоматами и всеми прочими представителями зверинца продуктов, основанных на программном обеспечении. Когда я обедаю в Crescent Park Grill или Spago, посетители за соседними столиками все время обсуждают клиент-серверные архитектуры и веб-интерфейсы. Восхитительное место для жизни, но оно не дает представления о большинстве жителей этой страны, не говоря уже обо всей планете. Здесь, в Долине, наши оценки качества высокотехнологических продуктов могут искажаться легко и радикально. Мы забываем, насколько сложно в действительности применять эти продукты.
Десять лет назад консультант по розничным продажам Сеймур Меррин (Seymour Merrin) сказал, что нам проще было убедить покупателей, что программами легко пользоваться, чем сделать так, чтобы программами было легко пользоваться. Высказывание Меррина было циничным, однако он также выражал удивление, что нам сошла с рук столь наглая ложь. Сегодня его слова все еще справедливы, но рост высоких технологий не оставляет возможности и дальше выезжать на одном цинизме – нам требуется настоящее решение.
Люди знают, что компьютерами очень трудно пользоваться, однако предполагают, что тому есть причины. Большинство считает, что лучше уже и быть не может.
Простые пользователи, не вовлеченные в индустрию компьютеров, приходят в крайнее раздражение из-за сложных в применении продуктов, тогда как люди, занятые созданием продуктов, в массе своей удовлетворены состоянием дел. Программистам не кажется, что компьютерами сложно пользоваться, поэтому они готовы терпеть некоторые вещи, пока есть возможность поиграть в технологические игры, создавая новых классных танцующих медведей.
Что до остальных из нас, мы получаем программы, соответствующие требованиям, а требовали мы до сих пор очень немного. Разработчики программ засыпают нас штучками, примочками, возможностями, которые нам не нужны, которые мы никогда не применяем, но вынуждены оплачивать. Мы требуем, чтобы программы не сбоили, поэтому программы подвергаются исчерпывающему тестированию и, как следствие, обладают разумной надежностью. Мы требуем новых версий немедленно, и компании выпускают версии с безумной скоростью. Но, не задумываясь о том, что жизнь может стать лучше, мы не требуем, чтобы продукты стали мощными и приятными, поэтому продукты и остаются слабыми, угнетающими.
Время от времени у потребителей появляются призрачные надежды, что следующая волна технологии, скажем, распознавание голоса, сделает программные продукты простыми в применении. Надеяться на это наивно и неумно. Мне грустно видеть, как апологеты грубо подыгрывают таким надеждам.
Программное обеспечение уместно сравнить с пластилином – оно может принимать любую форму, какая будет угодна авторам. Они не создают простые в применении программы не потому, что это невозможно, а потому, что не умеют. Чтобы не признавать этот неудобный факт, они заявляют, что лучше сделать просто невозможно «по техническим причинам». Пользователи компьютеров, программистами не являющиеся, вынуждены соглашаться со специалистами и страдать, или же не соглашаться со специалистами и – вот именно – все равно страдать. Не будучи специалистами, они не способны предлагать собственные решения, поэтому к ним относятся, как к бесполезным нытикам.
Штат Детройт производил гигантские хромированные прожорливые автомобили и лицемерно утверждал: «Мы даем потребителям то, что им нужно». Во время нефтяного кризиса семидесятых японцы вышли на рынок с экономичными небольшими автомобилями и нанесли Детройту удар, который не забудется никогда. Сегодня автомобильная индустрия Америки проявляет гораздо большее уважение к желаниям потребителя и уже не осмеливается утверждать, что все знает лучше.
Япония захватила позиции на автомобильном рынке, выполнив желания пользователей, о которых те и не подозревали. При этом потребители способны отличить хорошую вещь от плохой, если им дадут ее увидеть. Точно так же высоты в проектировании программного взаимодействия сегодня остаются свободными, они не захвачены никем. Мiсrоsоft уязвима не меньше, чем General Motors в 1974 году.
Массовый рынок потребителей, не знакомых с технологическими тонкостями, охотно принимает простые в применении продукты, что и подтверждает взрывной рост среды Web. Люди, привлеченные простотой ее использования, точно так же оценят качественно спроектированные продукты, делающие сложные вещи простыми для пользователей.
Потребители, не знакомые с тонкостями технологии и не принадлежащие к анклавам вроде Кремниевой Долины, не будут требовать изменений просто потому, что не могут образовать сплоченную группу. Разумеется, хорошее от плохого они отличают, но только после того, как хорошее и плохое появляется на полках магазинов.
Изменения произойдут только тогда, когда люди, принимающие участие в процессе и способные повлиять на ранние стадии развития продуктов, заинтересуются решением этой проблемы. Программисты вовлечены в конфликт интересов, а потому мой призыв адресован апологетам в самом сердце этой индустрии высоких технологий. Современные бизнесмены вовлечены в жизнь этой индустрии, хотят они того или нет. Вряд ли еще остались в мире предприятия, не вставшие на путь внедрения информационных технологий.
Ни один из современных нам продуктов, основанных на программном обеспечении, не способен дать мощь и удовольствие от применения людям, не входящим в число одержимых технологией. Инженерное же сообщество просто сообщает, что пользователям придется получить «компьютерное образование». Полагаю, в историю эта фраза войдет наравне со знаменитым и снисходительным: «Почему они не едят пирожных?» Марии-Антуанетты. Французская революция дала народу хлеб, а грядущая революция проектирования даст народу технологию.
Изменить процесс
Большинство разработчиков программного обеспечения и технических руководителей делают то, что делают, потому что верят в процесс, однако при этом не считают процесс догмой. В них достаточно прагматизма, чтобы принять изменения, когда они увидят, насколько эффективно проектирование взаимодействия. По моим наблюдениям, наглядная демонстрация выгод проектирования вызывает у этих людей желание интегрировать проектирование в процесс разработки.
Разработчики программного обеспечения известны способностью менять свои убеждения. Конечно, они инженеры, их мышление навсегда останется инженерным, однако они воспринимают новые (и даже контрастирующие) подходы, если доказана эффективность этих подходов.
Двадцать лет назад в бизнесе программирования считалось нормальным, что разработчики самостоятельно тестировали свой код. Более того, программист мог естественным образом предполагать, что только он сам способен достаточно надежно протестировать собственный код, только он сам может знать обо всех слабых местах и пыльных углах, куда следует заглянуть.
Удивительно, но факт: в те времена все знали, что программисты, хотя им и приходилось заниматься тестированием, как один ненавидели это занятие и сожалели о потраченном на него времени и силах. Однако программисты выполняли работу по тестированию, поскольку честно верили в свою роль в процессе, как и в необходимость агрессивного тестирования.
В последние два десятилетия все в этой индустрии постепенно осознали, что эту часть работы могут выполнять подразделения профессиональных тестеров, освобождая от нее программистов. Поначалу программисты отнеслись к идее скептически, но затем оценили ее. Тестерам же, к нескончаемому удивлению большинства программистов, действительно нравилось тестирование. Они получали удовольствие, создавая новые и еще более изощренные инструменты для испытания продуктов, находя слабые места и пробелы, тестируя специальные и вероятные случаи. Конечно же, скрупулезное изучение продукта профессиональными тестерами намного лучше. Программисты обнаружили, что не просто избавились от большой и неприятной составляющей своей работы; теперь эта работа выполнялась более надежно, своевременно, более продуманно и организованно. Современная доктрина разработки программного обеспечения гласит, что правильное отношение числа тестировщиков к числу программистов – один к одному. Сегодня уже не найти программиста, который настаивал бы, что является лучшим тестером своего кода.
Мы увидим подобный постепенный переход, когда проектирование взаимодействия станет частью процесса разработки. Наибольшие дивиденды получат те последователи проектирования, которые раньше других начнут применять этот подход.
Цели у разработчиков программного обеспечения и проектировщиков взаимодействия общие: и те и другие хотят, чтобы продукт стал успешным. Просто их инструменты и термины для измерения успеха коренным образом различаются.
Если у программиста нет убедительных доказательств, он всегда отступает под защиту своей подготовки, опыта, интуиции. Интуиция подсказывает, что функций должно быть как можно больше. Опыт подсказывает, что нельзя позволять дилетантам вмешиваться в чувствительный, сложный, тонкий процесс разработки со всякими причудами и догадками. Подготовка подсказывает, что интерфейсы следует конструировать, основываясь на своих представлениях.
Проектировщик взаимодействия не может прямо критиковать эти мотивы. Разработчики мыслят слишком рационально, чтобы променять свой опыт на чужое мнение. Проектировщик должен показать им новый взгляд на проблему, должен показать им, что этот взгляд эффективен и совместим с уже существующими идеями.
Независимо от твердости позиции проектировщика взаимодействий, весьма маловероятно, что он обладает лучшим пониманием внутреннего устройства программы, чем программист. Иными словами, он не может смотреть на проблему глазами программиста. Чтобы добиться успеха, он должен иметь другую точку зрения.
Точность и полнота проектировочной спецификации – вот точка соприкосновения проектировщиков и программистов. Когда проектировщики дают абсолютно верные решения, программисты начинают доверять и полагаться на них.
* * *
В одном из номеров еженедельника «Business Week» за 1998 год ведущий колонки Стивен Уайлдстром поднял тему раздраженных пользователей компьютеров. Ответы читателей поразили его полярностью мнений, их количеством, накалом страстей. Он сделал вывод:
У компьютерной индустрии множество озадаченных, раздраженных, несчастных клиентов. Это гораздо более серьезная угроза благосостоянию сектора высоких технологий, чем азиатский кризис, ошибка двухтысячного года и большинство других угроз.
Он процитировал весьма знакомые нам болезненные жалобы уцелевших: «Моя машина заставляет меня думать, что я идиот!» и такие же знакомые вопли апологетов: «Пользователи не знают, чего хотят, а когда знают, то каждый хочет своего. Пусть лучше читают руководства и изучают программы». Стивен завершил колонку так:
В этих излияниях чувств кое-кого не хватает. Мне написали инженеры, программисты, гуру юзабилити. Однако проектировщики продуктов и маркетологи, принимающие ключевые решения по аппаратной и программной части, подозрительно промолчали. Да у вас тут полно злых клиентов. Как вы собираетесь отвечать?
И действительно, как вы собираетесь отвечать?