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