"Психбольница в руках пациентов" за 9 минут
Введение
Разработка программного обеспечения (ПО) — самая гибкая отрасль производства, когда-либо существовавшая в истории. Программы не ограничены в сфере применения и могут воплощать в жизнь любые логические инструменты. Хозяева продуктов довольны — продажи идут отлично, и кажется, что нет смысла менять что-то. Парадокс, но сегодня эта сфера имеет целую армию раздраженных клиентов. Часто на рынке появляется «сырой» продукт нового игрока и отнимает долю у гигантов. Как это происходит?
Руководители компаний уверены, что все дело в случайных флуктуациях рынка или в том, что они напичкали свой продукт недостаточным количеством функций. На самом же деле Силиконовая долина оказалась в ловушке старых представлений, годных для времени, когда компьютеры занимали целые здания.
Программисты уверены, что их клиенты просто безграмотны и не владеют базовыми навыками обращения с компьютерами, а менеджеры уверены, что делают все возможное, чтобы сделать продукт удобным. И те и другие не правы, на самом деле индустрии не хватает только одного — грамотного проектирования, которое будет делаться профессионалами. Профессиональное проектирование начинается с клиента — понимания истинно ценных для него вещей и их реализации в максимально удобной форме.
Ни программисты, ни руководители, ни маркетологи не понимают сути проблемы, и это может быть фатально для любой компании, разрабатывающей ПО. Покупатели не задумываясь меняют неудобный продукт на удобный, даже если второй обладает меньшим количеством функций. Индустрии пора повернуться к своим потребителям лицом.
Вот о чем книга Алана Купера, адресованная не только программистам-бизнесменам, но всякому, кто задумал новый продукт или проект.
1. Проблема с программами
Компьютеры так сложны и нелогичны с точки зрения нормального человека, что общение с ними часто приводит к инцидентам вроде потери важных документов или неправильным денежным транзакциям. Люди часто испытывают раздражение и гнев при использовании компьютеров или других устройств, оснащенных программным обеспечением (ПО). Однако проблема плохого ПО опаснее и серьезнее, чем может показаться на первый взгляд. Плохие программы не только невыгодны для бизнеса, но и способны наносить ущерб.
Авиакатастрофы, в которых главной причиной падения называют «человеческий фактор», зачастую являются результатом чрезвычайно сложных и плохо продуманных интерфейсов бортовой электроники — они мало пригодны для использования человеком.
Это часто происходит с техникой, когда она скрещивается с компьютером. Часы, фотокамеры, телефоны, автомобили, банкоматы, вбирая в себя преимущества цифровых продуктов, превращаются в компьютеры и становятся слишком сложными в использовании.
Во всех перечисленных случаях принято возлагать вину на пользователя. Широко распространено словосочетание «компьютерная грамотность», и каждый работодатель требует от кандидата на работу «уверенной работы с ПК». Вместо специалиста в предметной области компании теперь ищут специалистов по работе в Microsoft Office, и это никого не удивляет.
Однако источником проблем является не естественная сложность программ и не инструменты разработки, а общепринятый, традиционный процесс, когда проектирование взаимодействия программы с пользователем отдается на откуп программистам. Это выглядит логичным на первый взгляд, но на деле оказывается в корне неверным. Когда во главе угла инженеры — доминирует инженерный взгляд, а не взгляд конечного пользователя.
Цифровые продукты обладают своей спецификой в силу того, что не имеют физического воплощения. Когда человек видит молоток или музыкальный инструмент, он может быстро понять, как они работают — у этих вещей низкое когнитивное сопротивление. Программные продукты, наоборот, скрыты, неосязаемы. Более того, виртуальные элементы управления могут менять свое поведение в зависимости от контекста. Из-за этого понять, как они работают, бывает крайне сложно даже для «опытного пользователя». Эта особенность программных продуктов и вызывает то, что называется когнитивным сопротивлением.
Когнитивное сопротивление присуще программам, но не является их неотъемлемым свойством. Напротив, его можно значительно снизить, если процессу написания кода будет предшествовать проектирование взаимодействия. Но вместо этого большинство компаний продолжает снабжать программы новыми функциями, не заботясь о легкости их использования. Руководители думают, что улучшают продукт, делая его более «мощным», но они лишь повышают его когнитивное сопротивление, в результате дополнительными функциями люди просто не пользуются.
Когнитивное сопротивление ПО разделяет людей на тех, кто мирится с их сложностью в обмен на возможности, которые они дают, и тех, кому трудности использования доставляют удовольствие. Такие люди склонны оправдывать сложность программ и не считают нужным упрощать взаимодействие с ними. Можно условно назвать эти две категории людей «уцелевшими» и «апологетами».
Подавляющее большинство занятых в индустрии разработки ПО являются «апологетами». Именно поэтому индустрия проявляет слепоту в отношении своих продуктов. Разработчики уверены, что их программы удобны, потому что когнитивное сопротивление для них не является проблемой.
2. Психбольница в руках пациентов
В индустрии разработки программ облик и поведение продуктов определяют программисты. Программисты пишут код (инструкции) для компьютера, а не для пользователя, а потребности компьютера и пользователя противоречивы.
Перед началом написания кода программисты составляют описание продукта, но оно создается в терминах программистов и исключительно в интересах процесса разработки. Такое описание нельзя назвать проектированием взаимодействия — оно не берет в расчет интересы пользователя и не должно этого делать.
Руководители компаний продолжают путать проектирование архитектуры программы и пользовательского проектирования. Нельзя сказать, что программисты виноваты в неудобстве программ: им просто поручают работу, которую они объективно не могут и не должны делать.
Программисты искренне стараются делать свои программы понятными, но у них очень своеобразное представление о понятности и простоте. Программисты настолько подвержены профессиональной деформации, что заметно отличаются от остальных людей.
Для программистов характерна своя особая психология.
1. Программисты с готовностью жертвуют простотой ради контроля. Им комфортнее обращаться со сложными системами, если это позволяет им лучше контролировать их работу.
2. Программисты с радостью променяют успех на понимание. Конечно, понятия успеха и неудачи им не чужды, но возможность разобраться в механизме, устройстве чего-то и получить новые знания для них дороже успеха.
3. Программисты всегда сосредоточены на исключительных ситуациях. Это обусловлено тем, что если программа не будет предусматривать исключительные ситуации, это приведет к сбою. Поэтому для программистов ситуация, которая может произойти в одном случае из миллиона, не менее важна, чем ситуация, возникающая постоянно.
4. Программисты грубы и прямолинейны. Их интеллектуальное превосходство — это предмет гордости.
Хотя со стороны этого не видно, работа программиста весьма эмоционально насыщенна и порождает множество устойчивых культурных феноменов, понятных только программистам. Характерные черты культуры программистов:
1. Для программистов огромную ценность представляет код, написанный таким образом, чтобы его можно было легко использовать в другой программе. Важно не только то, что в следующем проекте надо будет меньше писать, но и то, что таким «модульным» кодом можно делиться с другими разработчиками. Это благотворно влияет на работу программистов целом, но порой наращивает программу рудиментарным кодом или незапланированными функциями, которые по логике программиста «все равно бесплатны». Это одна из причин инертности программ — в новых программах легко появляются плохие паттерны поведения из прошлых программ, потому что в них просто используется старый код.
2. Программисты преклоняются перед техническими умениями, авторитетным человеком для них может быть только более квалифицированный и талантливый инженер. Эта особенность влияет на восприятие программистами дизайнеров и бизнесменов — для них это сплошь некомпетентные глупцы, их можно слушать, но делать все равно надо по-своему, ведь они все равно не понимают всех тонкостей написания программ. Такая же участь ожидает проектировщиков.
3. Программисты работают в одиночестве и чувствуют личную ответственность за свою работу. Программист всегда один на один с кодом — вряд ли кто-то будет досконально изучать результат его работы на чистоту и качество. В то же время он скептически относится к советам других специалистов, потому что понимает, что их не будет рядом, когда что-то пойдет не так, а отвечать будет он. Такая ситуация только усугубляет их чувство контроля над продуктом.
Культура и особенности психологии программистов естественно создают вокруг них сильный барьер, отделяющий их от конечных пользователей результатов их работы. Это приводит к тому, что часто главный программист какого-либо продукта совершенно не представляет своего пользователя, его потребностей и поведения.
3. В чем выгода проектирования
Неправильный процесс разработки — идеальный способ потратить кучу денег впустую.
На рынке существует миф о срочном выпуске продукта на рынок. Якобы чем раньше программа будет готова, тем лучше. Разработку П О принято осуществлять с фиксированным сроком сдачи. Фактически команда разработчиков очертя голову бросается в неизвестность и все время работает в атмосфере горящих сроков. При таком подходе никто не в состоянии определить текущий статус готовности проекта, и в итоге на рынок выходит сырой необдуманный продукт.
Такой подход отчасти обусловлен старыми привычками бизнеса, подходящими для продуктов индустриальной эпохи. Эти правила не подходят для цифровых продуктов, потому что им присуще высокое когнитивное сопротивление. Очевидно, цифровые продукты разительно отличаются от материальных.
Переменные затраты на их производство либо отсутствуют, либо критически малы. Поэтому потенциал улучшения программ лежит только в увеличении прибыли, а не в снижении издержек. Нет смысла экономить на производстве, потому что однажды созданная программа может быть продана бесчисленное количество раз.