Шкурный интерес
Весьма значимым фактором в культуре разработки программного обеспечения является уединенность. Программисты сидят поодиночке. Конкретный код набирается только одним программистом. Код в компьютере по преимуществу невидим, и его практически никогда не читают. Чтение чужого кода походит не на чтение книги, а скорее на чтение чужих конспектов, записанных непостижимой тайнописью. Программирование настолько сложно, что требует целеустремленного сосредоточения и многих часов непрерывной работы. Программисты чутко относятся к этой замкнутости и всему, что с ней связано. Никто не способен проконтролировать, что делает в своем коде программист. Программисты знают, что качество их кода - вопрос, главным образом, их же собственной добросовестности. Начальство может требовать качества, но не будет тратить время и силы на то, чтобы удостовериться в существовании этого качества. Расшифровка кода может отнять больше времени, чем было изначально затрачено на его написание. Программистам известно, что их личные решения и действия оказывают большее влияние на конечный продукт и удовлетворенность пользователя, чем какие-либо другие соображения. В конечном итоге они лично будут ответственны за успех продукта. Они знают, что глубоко заинтересованы в успехе игры.
Одиночество программиста обостряет его ощущение собственной власти. Некоторые испытывают дискомфорт, но еще больший дискомфорт доставляет им передача полномочий тем, кто не столь заинтересован в исходе. К советам маркетологов, руководителей, проектировщиков программисты относятся со здоровой долей скептицизма. Они знают, что приняв совет, который окажется ошибочным, примут всю вину за произошедшее, потому что к моменту наказания советчика уже и в помине не будет.
Когда программистам разрешается самостоятельно выполнять проектирование взаимодействия, это приводит к некачественному проектированию, а кроме того имеет еще и дополнительный эффект: программист теряют уважение к процессу проектирования.
Программисты уже так много раз успешно продирались через процесс проектирования, что привыкли игнорировать его ценность. Когда компания, наконец, нанимает проектировщика взаимодействия, программист само собой, относится к его работе снисходительно.
Это приводит к общему недостатку уважения к проектировщику, к процессу проектирования, и, что прискорбно, к собственно проектированию. Такое неуважительное отношение укрепляет внутрикультурную оценку проектирования как мнения или туманного совета, тогда как на деле это четкое, конкретное и недвусмысленное указание. Поскольку программист, имея на это все основания, считает, что его прихоть имеет вес не меньший, чем чье-то простое мнение, он полагает себя вправе выбирать приглянувшиеся элементы архитектуры из спецификации. Он считает письменную спецификацию не чертежом, но страницей газеты, на которой публикуются письма в редакцию. Некоторые абзацы занимательны, но неверны, другие полезны, но не имеют отношения к делу. К несчастью, программист принимает эти решения, исходя из соображений реализации или собственных предпочтений, а потому решения часто ошибочны.
С другой стороны, каждый программист имеет в запасе ужасные истории о том, как хорошие продукты превращаются в неудачные из-за дурацких указаний, исходящих от руководителей, точно так же не понимающих, чего может хотеть пользователь. Мне вспоминается один высокопоставленный руководящий работник, который ненавидел клавиатуру, а потом требовал, чтобы все программы компании управлялись только мышью. А другой высокопоставленный руководящий работник, неуклюжий в обращении с мышью, заявил, что все программы компании должны управляться только с клавиатуры. Это пагубное проектирование, основанное на личных предпочтениях, вызвало в обеих компаниях взрыв отчаяния.
* * *
Конечно, существуют программисты, сознательно выбирающие злобное и разрушительное поведение, однако, если судить по тем многим программистам, что встречались мне, они столь же редки, как зубы у курицы. Программисты - как пилоты истребителей: после длительного обучения и трудного достижения пика своих способностей они неизбежно начинают считать непрограммистов менее компетентными. Разработчик программного обеспечения уважают других в привычных областях деятельности, но если непрограммист ступает в мир программирования, как описывал Муди, программисты ведут себя покровительственно или даже высокомерно.
Программист имеет все основания презрительно посмеиваться над дилетантами, сующими нос в мир разработки программ. Точно так же, если программист постучится в дверь финансового инспектора и начнет проверять выкладки по возвратам, инспектор сможет с полным правом посмеяться над самонадеянностью и заносчивостью сунувшегося не в свое дело программиста.
Сложность как раз в том, что проектирование взаимодействия и реализация взаимодействия тесно переплетаются в типичном процесс е разработки. Руководитель может попросить изменить поведение программы, но не попросит программиста сменить методы разработки. Но именно потому, что поведение и реализация столь тесно связаны, невозможно посягнуть на одно, не создав впечатления покушения и на второе. Это одна из трудностей, наблюдавшихся Муди в Мiсrоsоft.
Люди, вовлеченные в создание продуктов, основанных на программном обеспечении, хотят, чтобы уж их-то продукты были просты в применении. Как следствие, они постоянно вторгаются на территорию программистов у разработчиков же никогда нет лишнего времени, и такие вторжения могут делать их вспыльчивыми. Многие уединяются и лишь по крайней необходимости общаются с теми участниками команды, которые не занимаются программированием. Тамра Хитершоу-Харт (Таmrа Heathershaw-Hart) поведала мне о своих приключениях в роли технического писателя, которому требуется получать информацию от программистов.
Я обнаружила, что подкуп гораздо эффективнее уговоров. В основном использовала шоколад. Подкуп действовал настолько хорошо, что однажды руководитель группы, пав на колени, публично извинялся передо мной, что забыл уведомить об изменениях в продукте. (Да, свое угощение он все равно получил.) В одной компании пристрастившийся к шоколаду инженер рассказывал мне обо всех изменениях, внесенных его коллегами, чтобы получить и их шоколад. До открытия такого способа подкупа я потратила массу времени сверхурочно, пытаясь выяснить, каким образом изменился продукт. Подкуп же позволил сократить сверхурочную работу раза в два.
Эта история занимательна потому, что, обладая хоть каким-то опытом в деле разработки программного обеспечения, мы немедленно признаем, что она правдива. Услышь вы историю про инспектора, вынужденного подкупать шоколадкой клерка, работающего с дебиторскими счетами, чтобы получить информацию по сегодняшним депозитам, вы бы пришли в изумление, негодование и отнеслись бы к рассказу с недоверием.
* * *
Многие руководящие работники привыкли, что подчиненные немедленно реагируют на любое указание или даже мягкий намек, исходящий от начальства. Они воображают, что программисты (технический персонал) не слишком высоко находятся на тотемном столбе власти, и поэтому Послушно будут следовать указаниям вышестоящих. С точки же зрения программиста руководящий работник в этой игре ничем не рискует, поэтому повиноваться не хочет. Независимо мыслящий разработчик программного обеспечения не изменит свой код просто потому, что кто-то этого потребовал, независимо от важности персоны попросившего.
Если вы хотите изменить существующий код, необходимо, прежде всего изменить сознание программиста. Он заинтересован как в сохранении существующего кода, так и в том, чтобы избежать кажущихся ненужными усилий, направленных на изменение кода. Нельзя просто потребовать, а тем более попросить, но следует представить рациональную, обоснованную причину для изменений. Причем представить в терминах, понятных инженеру, и из уст человека, кровно заинтересованного в исходе.
В высшей степени точный и разоблачающий анализ образа мыслей и поведения программистов приводит в своей книге Пол Глен (Paul Glen)1. Искренне советую прочитать ее всем, кто хочет глубже изучить программистов и их культуру.
- Алан Купер Психбольница в руках пациентов
- Содержание
- Часть 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
- Культурная изоляция
- Шкурный интерес
- Дефицитный образ мыслей
- Обесчеловечивает процесс, а не технология