- •Алан Купер Психбольница в руках пациентов
- •Содержание
- •Часть I. Компьютерная безграмотность 27
- •Глава 1. Загадки века информации 27
- •Глава 2. Когнитивное сопротивление 44
- •Часть II. Масштабные издержки 68
- •Глава 3. Пустая трата денег 68
- •Глава 4. Танцующий медведь 89
- •Об авторе
- •Благодарности
- •Предисловие научного редактора
- •Предисловие
- •Введение Книга-обоснование
- •Инженер, сведущий в бизнесе, либо бизнесмен, сведущий в технологии
- •ЧастьI. Компьютерная безграмотность Глава 1. Загадки века информации Что получится, если скрестить компьютер с самолетом?
- •Что получится, если скрестить компьютер с фотокамерой?
- •Что получится, если скрестить компьютер с будильником?
- •Что получится, если скрестить компьютер с автомобилем?
- •Что получится, если скрестить компьютер с банком?
- •Компьютер позволяет легко попасть в беду
- •Коммерческое программное обеспечение тоже страдает
- •Что получится, если скрестить компьютер с военным кораблем?
- •Техноярость
- •Индустрия в «несознанке»
- •Мотивы создания этой книги
- •Глава 2. Когнитивное сопротивление
- •Поведение, не связанное с физическими силами
- •Проектирование1- слово емкое
- •Отношения между программистами и проектировщиками
- •Большинство программ проектируются случайным образом
- •Проектирование «взаимодействия» против проектирования «интерфейса»
- •Отличительные черты продуктов, основанных на программном обеспечении
- •Танцующий медведь
- •Стоимость дополнительных возможностей программного обеспечения
- •Апологеты и уцелевшие
- •Наша реакция на когнитивное сопротивление
- •Демократизация власти потребителя
- •Виноват пользователь
- •Программный апартеид
- •ЧастьIi. Масштабные издержки Глава 3. Пустая трата денег
- •Управление, ориентированное на крайние сроки сдачи
- •Что такое «готово»?
- •Закон Паркинсона
- •Продукт, вечно не готовый к выпуску
- •Поздний выпуск - не беда
- •Торг за набор функций
- •Кто главный? Программисты
- •Возможности не всегда нужны
- •Итерации и миф о непредсказуемости рынка
- •Скрытые издержки некачественного программного обеспечения
- •Дороже разработки по обходится только разработка плохого по
- •Стоимость возможностей
- •Издержки прототипирования
- •Глава 4. Танцующий медведь
- •Если это проблема, то почему ее до сих пор не решили?
- •Жертва бытовой электроники
- •Чем плохи почтовые клиенты
- •Чем плохи программы для планирования
- •Чем плохи календари
- •Массовая веб-истерия
- •Что не так с программным обеспечением?
- •Программы забывают
- •Программы ленивы
- •Программы скупы на информацию
- •Программы не гибки
- •Программы возлагают вину на пользователей
- •Программы не несут ответственности
- •Глава 5. Нелояльность клиентов
- •Привлекательность
- •Одно сравнение
- •Время выхода на рынок
- •ЧастьIii. Как есть суп вилкой Глава 6. Психбольница в руках пациентов
- •Вождение на заднем сиденье
- •Подготовка катастрофы
- •Компьютеры против людей
- •Учим собак быть кошками
- •Глава 7. НоmoLogicus
- •Авиационный тест
- •Психология программистов
- •Программисты пожертвуют простотой ради контроля
- •Программисты обменяют успех на понимание
- •Программисты сосредотачиваются на исключительных ситуациях
- •Программисты ведут себя грубо и прямолинейно
- •Глава 8. Отмирающая культура
- •Культура программирования
- •Повторное использование кода
- •Общепринятая культура
- •Культура программирования в Мicrоsоft
- •Культурная изоляция
- •Шкурный интерес
- •Дефицитный образ мыслей
- •Обесчеловечивает процесс, а не технология
ЧастьIi. Масштабные издержки Глава 3. Пустая трата денег
Выбросить на ветер миллионы долларов не так легко, как кажется, однако некачественный процесс разработки – вполне подходящий инструмент для этой задачи. Дело в том, что в разработке программного обеспечения не хватает одного ключевого элемента: трудно понять, когда проект «готов». Не имея этого жизненно важного знания, мы слепо уповаем на произвольные сроки сдачи. Мы теряем миллионы в стремлении пересечь финишную черту как можно быстрее – лишь для того, чтобы обнаружить, что финишная черта оказалась миражом. В этой главе я попытаюсь развеять дорогостоящее заблуждение о возможности управления, ориентированного на фиксированные сроки сдачи.
Управление, ориентированное на крайние сроки сдачи
Некоторые странные традиции, принятые в Кремниевой долине, можно отнести на счет скорости выхода продукта на рынок. Часто предполагается, что немедленный выпуск продукта гораздо лучше, чем более поздний. Этот императив применяется в качестве оправдания предельно амбициозных сроков сдачи и нервного истощения сотрудников на работе. Следует скрыть более серьезные страхи. Сдача в три месяца продукта, раздражающего пользователей и приводящего их в ярость, совсем не лучше, чем сдача продукта, приятного для пользователей, в шесть месяцев – и всем деловым людям это прекрасно известно.
Причина одного из самых глубоких страхов руководителя в том, что он не знает, примет ли рынок продукт. Неспособность руководителя оценить завершенность продукта порождает другой страх. Если не принимать во внимание предельно ясные свойства вроде «работает на заданной конфигурации» и «не сбоит», руководители обычно не имеют четкого понимания состава законченного продукта.
Следствие этих двух страхов таково, что если программа «не сбоит», то не так уж и важно, как долго ее будут делать - три месяца или шесть, за исключением того, что в последнем случае стоимость разработки кошмарно увеличивается из-за лишних трех месяцев программирования. Когда программисты уже принялись за работу, деньги начинают таять очень быстро. Следовательно, логика подсказывает руководителю разработки, что самое важное - как можно раньше начать и как можно раньше завершить написание кода.
Добросовестный руководитель быстро нанимает программистов и незамедлительно сажает их за работу. Он смело устанавливает дату завершения - через несколько месяцев после начала разработки, и команда, очертя голову, несется к финишной линии. Но если при этом продукт никто не проектирует, то два страха нашего руководителя остаются в силе. Он не смог узнать, понравится ли пользователям продукт, так что успешность продукта на рынке действительно остается тайной. Он также не установил, как должен выглядеть «завершенный» продукт, так что тайной остается и степень его завершенности. Позже я покажу, как проектирование взаимодействия способно исправить такое положение вещей. Сейчас же я продемонстрирую, насколько основательно фиксированные сроки сдачи подрывают процесс разработки, превращая неуверенность руководителя в неизбежно сбывающиеся предсказания.
Что такое «готово»?
Имея на руках конкретное описание завершенного программного продукта, мы можем сравнить наше творение с этим описанием и понять, готов ли продукт.
Существует два типа описаний. Мы можем создать подробное и полное вещественное описание продукта либо описать, какой реакции конечного пользователя на наш продукт необходимо добиться. Скажем, в традиционной архитектуре чертежи являются первым типом. Если же планируется создание фильма или нового ресторана, описание сосредотачивается на ощущениях, которые мы хотели бы передать своим клиентам. Для продуктов, основанных на программном обеспечении, обязательно использовать комбинацию обоих типов.
К сожалению, большинство программ не имеет точных описаний. Зато каждая характеризуется длинным перечнем функций, похожим на перечень ингредиентов. Магазинная корзина с мукой, сахаром, молоком и яйцами - совсем не то же самое, что пирог. Пирог получается лишь тогда, когда выполнены все инструкции рецепта, и результат выглядит как знакомый нам пирог, обладает таким же запахом и вкусом.
Обладая нужными ингредиентами, но не знанием о пирогах и выпечке, эрзац-повар будет впустую ковыряться на кухне безо всякой гарантии результата. Если мы потребуем, чтобы пирог был готов к шести часам, добросовестный повар, разумеется, принесет нам блюдо в назначенное время. Но будет ли эта стряпня пирогом? Мы знаем лишь, что продукт появится во время, а вот хорош ли он будет, остается тайной.
На традиционных строительных работах мы понимаем, когда работа завершена, потому что знаем, как выглядит «сделанная» работа. Мы знаем, что здание завершено, потому что выглядит и функционирует точно так, как задано в чертежах. Если срок сдачи объекта - первое июня, то наступление июня не всегда означает, что здание готово. Степень завершенности здания может быть определена лишь его сравнением с планом.
Без чертежей строители программ не могут четко осознавать, что делает продукт «завершенным», поэтому они выбирают возможную дату завершения и, когда она наступает, объявляют, что продукт готов. Уже первое июня, следовательно, продукт готов. «В тираж» - говорят они, и срок сдачи становится единственным признаком завершенности проекта.
Программисты и бизнесмены не дураки и не бестолочи, поэтому продукт не будет идти совершенно вразрез с реальностью. Он будет работать хорошо, без сбоев, и обладать достойным набором возможностей. Продукт будет работать достаточно хорошо в руках людей, глубоко заинтересованных в его хорошей работе. Не исключено даже, что продукт подвергался тестированию на практичность и удобство применения (юзабилити-тестированию). При этом посторонних людей просили поработать с продуктом под внимательным наблюдением специалистов по юзабилити (Usability Professionals)1. Но даже будучи весьма разумными, эти предосторожности не позволяют ответить на фундаментальный вопрос: станет ли продукт успешным?