Книга: Deadline
Назад: Глава 20. Необходимые церемонии
Дальше: Глава 22. Сделка года

Глава 21

Выход на финишную прямую

Она появилась после десяти месяцев отсутствия так же неожиданно, как исчезла. Просто однажды дверь в ее кабинет оказалась открытой. И она, как прежде, сидела на своем диванчике у окна и смотрела, как на улице идет дождь.

Первым желанием мистера Томпкинса было… впрочем, он и сам не знал, что было его первым желанием, так как на смену ему моментально пришло второе. «Где, черт возьми, ты пропадала?» — хотел он спросить спокойным тоном, но у него ничего не вышло.

— Вебстер… — Она посмотрела на него с застенчивой улыбкой.

— Черт возьми, Лакса, пока тебя не было, тут такое творилось! Ты хоть бы позвонила разок за все это время!

— Я вернулась, Вебстер. — Она встала и пошла ему навстречу.

— Ну и где ты пропадала? — повторил он.

— На Бермудах. По крайней мере в последнее время. Как тебе мой загар?

— Отвратительно. Лакса, я действительно на тебя зол. Серьезно.

— А я-то думала, что он соскучился.

— Я зол, рассержен, разочарован, раздражен, сердит, разгневан, взбешен, я просто в ярости, я…

— Так ты скучал по мне. Я тоже скучала по тебе, Вебстер, — сказала Лакса и поцеловала его.

Мистер Томпкинс непроизвольно отступил на шаг. Наконец он снова обрел дар речи.

— И ты думаешь, что это все извиняет? — уже тише спросил он. Конечно же, это все извиняло.

— Вебстер…

Он снова почувствовал, что начинает злиться.

— Мы так о тебе волновались! Мы даже не знали… А тут все вообще встало с ног на голову. Твоя помощь пришлась бы очень кстати.

— Мне уже все известно. Бэллок?

— Да, черт возьми. Бэллок. Хоть бы посоветовала мне, как себя с ним вести.

— Можешь о нем больше не беспокоиться, дорогой. Я уже избавила вас от Бэллока.

— Ты?

— Да, я. Он уехал и в обозримом будущем здесь не появится.

— И чем же мы обязаны такому невероятному везению?

— Стечение обстоятельств. Бедняга подхватил где-то редкий вид герпеса.

— Надеюсь, это серьезно.

— Не представляет угрозы для жизни, а так — премерзостное заболевание.

— Не тот ли это вид герпеса, который поражает… э-э-э… определенные органы?..

— Боюсь, что именно этот. У него как раз случился приступ. Сильнейшая боль, я думаю. Впрочем, он уже на пути в клинику, где о нем позаботятся. Клиника находится в Атланте, там этот вид герпеса лечат запатентованным спо­собом.

— Боже мой… но ты уверена, что он будет долго лечиться? — Самое главное, чтобы зловредный министр не выздоровел раньше чем через девять месяцев, до окончания контракта.

— Целый год. Конечно, боль пройдет гораздо раньше — как только они начнут курс лечения. Но уехать оттуда он не сможет, потому что ему нужно будет посещать процедуры. Так что, я надеюсь, больше Аллэра мы не увидим.

И тут мистера Томпкинса осенила ужасная мысль:

— Постой-ка! Как же так получилось, что это совпало с твоим появлением? Неужели эта болезнь и твой приезд?.. — он не закончил и молча уставился на нее.

Она улыбнулась:

— Неужели мне придется рассказать тебе всю правду? У меня есть отвратительная привычка — ничего не могу с ней поделать. Вебстер, я подсыпаю людям в напитки всякую всячину.

— Значит, герпес попал к нему…

— С лимонадом. Он его обожает. За время путешествия я приобрела чудо-порошок. Вчера вечером я насыпала его в лимонад Бэллока — всего-то щепоточку, — а сегодня утром он уже верещал от боли. Тогда я позвонила в Джорджию, в ту самую клинику. Телефон мне дал тот же человек, который продал порошок. Ну да это неважно. Я позвонила, и сейчас Аллэр уже летит в Атланту на корпоративном самолете, а я сразу же выехала из Корзака сюда, в Айдриволи.

— Все шесть команд А уже давно зомби, — говорил мистер Томпкинс. — Они уже давно скончались, просто из-за определенных политических соображений мы поддерживали в них видимость жизни. А теперь, поскольку наш обожаемый министр Бэллок отсутствует…

Аристотель Кенорос захихикал.

— …то политических соображений больше нет. И теперь мы можем сделать то, на чем Белинда настаивала еще несколько недель тому назад: распустить команды А.

— Я говорила «распустить», Вебстер, но ты не можешь использовать это слово как официальный термин. И вообще, нам надо быть осторожнее и прежде, чем что-то предпринимать, четко продумать, как мы будем объяснять это нашим разработчикам.

— Я понял, Белинда. Итак, нужно представить все таким образом, чтобы никто из наших ребят не потерял лицо. Проекты А, конечно, зомби, но люди, которые над ними работают, — вовсе нет. У них есть чувства, у них есть профессиональная гордость. Как нам все это подать? У тебя есть идеи, Мелисса?

— На самом деле ты их спасаешь, Вебстер. Они все прекрасно знали с самого начала, что только одна коман­да выйдет победителем и выпустит готовый продукт. Коман­да PMill-A, к примеру, уже знает, что стать первой из трех ей не удастся. Думаю, что и остальные команды А не тешат себя надеждами на успех. Так что нам надо представить это как спасение ценных профессиональных ресурсов. Мы снимаем их с ненужной работы и переводим туда, где их участие действительно нужно и даже необходимо.

— Да, что-то в этом роде, — поддержал коллегу Гэбриел Марков. — Нельзя сейчас просто взять и распределить людей из команд А по командам Б и В. Если мы так поступим, то половина сотрудников воспримет это как второе поражение. — Он подошел к доске для рисования. — Я предложил бы создать новые команды под руководством наших шести главных руководителей проектов и укомплектовать их сотрудниками из всех трех групп, в том числе и команд А.

Все собравшиеся молча созерцали диаграмму.

— Это только начало, — сказал им мистер Томпкинс. — Гэбриел, ты только что изобразил вариант архитектурных изменений всей нашей системы. Мы проектируем и создаем программы, но сами мы — тоже живая система. И ты только что перепроектировал ее. Я хотел бы, чтобы мы воплотили тот вариант архитектуры системы, который принят в командах Б и В. — Он обернулся к Кеноросу. — Аристотель, ты нам поможешь?

— О’кей, босс, — весело улыбнулся тот. — Ну-ка, ребята, превращайтесь в архитекторов! У нас куча работы.

После того как министр Бэллок выбыл из игры, никто не мог запретить мистеру Томпкинсу вернуться к изначальным срокам сдачи проектов. Что он и не замедлил сделать. По Айдриволи пронесся вздох облегчения. Теперь у всех команд Б и В появился вполне реальный шанс все выполнить в срок, даже самые крупные проекты. Что же касается маленьких, таких как QuickerStill, то они должны были сдать свои системы задолго до указанного срока. На самом деле у мистера Томпкинса еще оставалась надежда, что один из этих небольших проектов завершится к 1 июня. Конечно, Бэллока здесь уже не было, но мистер Томпкинс все равно не мог стереть из памяти эту проклятую дату. Он даже попросил миссис Бирцих, чтобы она не снимала в его кабинете отсчет дней до 1 июня. Сейчас, в середине февраля, там значилось:

Осталось всего 106 дней!

После перегруппировки проектов мистеру Томпкинсу ничего не оставалось, кроме как смотреть и ждать. Он весь день расхаживал по Айдриволи и разговаривал с людьми, выслушивая всевозможные сплетни, подбадривал, выражал одобрение хорошей работой, а самое главное — выискивал малейшую возможность поучаствовать и помочь. К слову сказать, такая возможность выпадала довольно редко. Проекты уверенно продвигались к намеченной цели, и постепенно мистер Томпкинс стал чувствовать себя лишним.

Белинда, как оказалось, тоже испытывала похожие чувства. С каждым днем она все больше времени проводила у себя под пальмой, читая книги. Она снова поселилась на улице, так что в отеле ее можно было увидеть лишь в ненастную погоду. Однажды мистер Томпкинс навестил ее в парке, прихватив с собой две коробки с ланчем.

— Перекусим? — предложил он ей. — А то совсем нечего делать.

Белинда ухмыльнулась:

— Твоя работа закончена, Вебстер. В идеале все так и должно быть — но почему-то никогда не бывает. Теперь ты можешь только наблюдать в бинокль за тем, как разворачиваются события. Как генерал Паттон, помнишь?

Мистер Томпкинс вспомнил, как ему понравилась история об этом генерале и его тактике, когда он только что услышал ее. Что может быть лучше, чем взирать на то, как один за другим сбываются твои планы! На деле все оказалось не столь замечательно. Мистер Томпкинс просто с ума сходил от того, что не участвовал в активной жизни проекта. Интересно, не испытывал ли Паттон подобных чувств?

Закончив трапезу, мистер Томпкинс отправился в библиотеку и взял там видеокассету с фильмом о Паттоне. Придя домой, он в тишине и спокойствии занялся просмотром. К его удивлению, Белинда немного ошиблась в изложении событий. Да, Паттон наблюдал битву в бинокль, и только. Он заранее спланировал маневры танковых подразделений, обеспечил поддержку с воздуха, распорядился о порядке и сроке подвоза боеприпасов на позиции, высчитал точный момент для начала сражения. Когда же сражение началось, он стал безучастным наблюдателем. Но в конце он отложил бинокль и послал курьера к генералу Бродли с новым указанием. Он немного поменял план в ходе сражения. Он вмешался. Вот это настоящий руководитель! Ты заранее скрупулезно планируешь битву, обучаешь младший персонал, как вести себя во время сражения, и в результате все проходит без сучка без задоринки. Остается только смотреть… но, заметив вдруг хоть малейшее отклонение от продуманного плана, ты тут же реагируешь. Ты вмешиваешься в процесс и меняешь план.

— Все идет настолько гладко, что мне становится скучно, — сказала мистеру Томпкинсу Молли Макмора, руководитель команды QuickerStill-B. — Разумеется, это хорошо. У процесса разработки архитектуры, который предложил нам Кенорос, есть один замечательный побочный эффект. Мы теперь имеем превосходные метрики, с помощью которых можно наблюдать за ходом этой части проекта. Мы точно знаем, сколько в нашей системе модулей, и можем предсказать, сколько в них будет строк кода, сколько ожидается дефектов, как много времени уйдет на ликвидацию каждого дефекта, сколько мы потратим на каждую отдельную часть работы…

— Но как вы можете точно определить количество строк кода в несуществующем модуле?

— Дело в том, что половина всех запланированных модулей уже готова. И поскольку мы уже отработали технику на четырехстах первых модулях, то теперь нам несложно предсказывать, как пойдет работа над остальными.

— Но вот что действительно дает чувство контроля над разработкой, — продолжала Молли, — так это план по сборкам системы. Пошли, посмотришь сам.

Она провела его в комнату, где обычно собиралась для мозгового штурма команда QuickerStill-B. Там на стене висела разноцветная диаграмма.

— Изначально мы предполагали поставить всю систему за шестьдесят сборок. Каждая сборка представляет собой часть общей системы и привносит в нее необходимую функциональность. Сегодня мы выпускаем элемент под номером двадцать четыре. Как ты видишь, на диаграмме показано, что он состоит из четырехсот девяти модулей. А вот элемент двадцать три, который мы закончили на прошлой неделе… — она нашла диаграмму для этого блока, — состоял из трехсот девяноста двух модулей. А это значит, что в последнем блоке было семнадцать новых модулей. Вот здесь обозначены идентификатор и размер для каждого модуля.

— Здорово.

— Разумеется, здорово. Мы высчитали, сколько процентов всей системы реализовано в каждом блоке. Помнишь, мы предположили, что вся система составляет тысячу пятьсот функциональных единиц. Правда, позже мы пришли к выводу, что их больше — тысяча восемьсот пятьдесят. Когда мы выпустили первый блок, то оказалось, что в нем реализовано около двух процентов всей функциональности, то есть около тридцати семи функциональных единиц. Во втором блоке было добавлено еще тридцать единиц, поэтому, когда мы закончили над ним работать, все знали, что мы уже сделали шестьдесят семь единиц из тысячи восьмисот пятидесяти, или 3,6%. Вот на этой диаграмме показана статистика по каждому блоку, которые мы выпускали.

— Каждый столбец на графике — это очередная сборка. Те, которые мы уже завершили, закрашены. Все приемочные тесты мы тоже разбили на части, так что сборка не считается завершенной, пока не пройдут приемочные тесты.

— Иными словами, — сказал мистер Томпкинс, разглядывая диаграмму, — когда элемент номер двадцать четыре пройдет приемочные тесты, вы будете знать, что уже сделали сорок шесть процентов всей работы.

— Да. Сейчас новая сборка выходит каждые два-три дня. — Молли отошла от диаграммы. — Теперь ты знаешь, почему я так уверенно говорю, что наш проект будет закончен к последней неделе июня. Мы просто прислушиваемся к тому, что сам проект рассказывает нам о нашем продвижении в работе.

Мистер Томпкинс печально смотрел на дату выхода проекта. Как бы он хотел последний раз посмеяться над Бэллоком, завершив хоть один проект к 1 июня!

— Слушай, а нельзя ли каким-то образом немного ускорить разработку? Не то чтобы я был недоволен… нет-нет, вы делаете свою работу просто замечательно, но я все же…

— Я знаю, о чем ты думаешь, — весело улыбнулась Молли. — 1 июня, да? Я тоже иногда об этом вспоминаю. Честно говоря, не представляю, как нам это сделать. Мы можем довольно быстро выпускать новые сборки и даже слегка ускорить этот процесс, но как же все остальное? Вот, смотри. — Она показала ему другую диаграмму, прикрепленную тут же на стене. — Вот временные затраты на разработку каждого модуля: время кодирования, время на инспектирование кода, блочные тесты, документация, ну и так далее.

— А нельзя ли выкинуть отсюда что-нибудь?

Она еще раз посмотрела на диаграмму.

— Я ничего такого не вижу. Больше всего времени уходит на проверку кода. Мы проверяем каждый модуль, как только заканчивается написание программного кода. Обычно три человека делают это в течение часа. Не знаю, чем мы можем поступиться, но уж точно не проверкой кода.

Что-то в ее тоне заставило мистера Томпкинса задуматься. Он вспомнил урок, полученный во время поездки в горы. Не зацикливаться на том, чего в действительности не знаешь. Подвергнуть сомнению то, в чем, казалось бы, абсолютно уверен.

— А почему ты так уверена, что мы не можем не проверять программный код? — обратился он к Молли.

— Потому что это правило существует в нашей отрасли последние двадцать лет, Вебстер. Проверка кода — самый дешевый способ избежать ошибок. Если ты не отловишь их во время проверки, то потеряешь больше времени на тестировании, так что выгоды в этом нет, скорее наоборот.

Как раз в этот момент к ним подошел Аристотель Ке­норос.

— Точно, — поддержал он Молли. — Это очевидно. Самый простой и дешевый способ избежать ошибок в коде — это проверка.

— Кстати о качестве. Вот мы доподлинно знаем, что наши программисты пишут хороший код, — гордо сказала Молли, подходя к огромной красной надписи на дальней стене комнаты. Надпись гласила:

Ровно 14!

— Четырнадцать чего? — удивился мистер Томпкинс.

— Четырнадцать проверок кода без единой ошибки. — Молли прямо светилась от радости.

— Это впечатляет, — пробормотал мистер Томпкинс. — Я полагаю, мы вполне могли бы сэкономить те сорок два человеко-часа, которые были затрачены на эти проверки кода, и на качестве продукта это никак бы не отразилось. Ведь ошибок все равно не было.

— Думаю, ты ошибаешься, — несколько раздраженно ответила Молли. — Именно благодаря проверке кода мы добились такого высокого качества работы.

— Только не благодаря последним четырнадцати, верно? Без них вполне можно было бы обойтись.

— М-м-м… и тем не менее я могу предоставить данные, доказывающие, что проверка кода приносит проекту существенную пользу. Я не уверена сейчас в том, что помню цифры…

— Прекратите, — прервал ее мистер Томпкинс. Он чувствовал, что идет по верному следу.

— А?

— Прекратите проверять код. Просто исключите эту фазу из процесса разработки.

— Ты спятил?! — быстро отреагировала Молли. — Мы не можем так поступить! Аристотель, ну скажи хоть ты ему. Скажи ему то, что ты говорил нам о важности исправления ошибок во время проверки кода.

На лице Кенороса появилась странная улыбка.

— Возможно, он и впрямь спятил. Но это вовсе не значит, что он не прав. Вебстер, я даже не думал о такой возможности, пока ты об этом не заговорил. Действительно, если во время проверок никто не обнаруживает ошибок, то мы не можем говорить о снижении стоимости исправления ошибок во время проверки!

— Ну, если в процессе проверки не были допущены какие-то грубейшие ошибки…

— Их не было, — быстро отреагировала Молли. — Мы проверяли и перепроверяли. Те модули, которые прошли этот этап без каких-либо ошибок, так же хорошо проходили и тестирование. Так что это правда, ошибок в коде не было.

— Значит, проверка кода действительно просто потеря времени. Прекратите проверки.

Она посмотрела на Кенороса, ища поддержки.

— Ну, я даже не знаю… — начал было тот.

— Аристотель, там нет никаких ошибок, — перебил его мистер Томпкинс. — Именно поэтому мы так сейчас поступаем. Просто изначальное качество кода оказалось намного выше, чем мы рассчитывали.

— Ну…

— Вспомни, что ты говорил мне об ошибках. Они появляются не в самом модуле, а на стыке разных модулей.

— Да, помню.

— Так вот, значит, большинство ошибок — это ошибки взаимодействия, вот в чем дело. Значит, основные ошибки возникают во время проектирования системы. Было бы нелепо полагать, что во время проверки кода можно анализировать архитектуру всей системы. Это же твои собственные слова. Анализ дизайна следует проводить отдельно, тогда же нужно отлавливать ошибки, которые в нем присутствуют. Почему проверка кода считается эффективной? Потому что на этом этапе исправлять ошибки проектирования немного проще, чем во время тестирования. Но ведь наш процесс проектирования стал более формальным. Мы проводим тщательную проверку архитектурных решений, причем не во время написания кода, а в момент проектирования. Именно поэтому у нас практически нет ошибок. А значит, проверка кода — пустая трата времени.

— Может, ты и прав… — неуверенно начал Кенорос. — Если ты прав, то получается, что проверка кода, на которую так полагается весь остальной мир программистов, — это всего лишь попытка найти и исправить ошибки в проектировании системы. А когда архитектура продумана и проверена достаточно хорошо, причем еще до того, как программисты начнут писать код, то проверять код просто незачем. Не могу сказать, что я абсолютно уверен во всем этом, но кое в чем я не сомневаюсь.

— В чем же?

— Нам нужно удостовериться в правильности наших предположений. Иначе какая же мы Лаборатория по управлению проектами?

Мистер Томпкинс сидел за столом, озадаченно уставившись на пустую страницу записной книжки, когда в дверях показалась Лакса Хулигэн.

— О, это ты, Лакса, — приветливо сказал он, слегка покраснев.

Он почти всегда краснел, когда оказывался рядом с этой удивительной женщиной. Затем опустил взгляд на обидно пустую страницу.

— Ты подарила мне эту записную книжку несколько месяцев назад и сказала, чтобы я делал в ней записи каждый день. И я стал ежедневно записывать все, чему в этот день научился, что нового и интересного открыл для себя. Но вот уже несколько недель подряд я не знаю, что писать. Отчего так?

— Пока не знаю, — она слегка пожала плечами. — Расскажи все по порядку.

— Вряд ли я чему-либо научился в ходе нашей эпопеи с Бэллоком. Если бы я решил эту проблему сам, я бы вынес из этого какой-то урок. Что бы я ни предпринял, это был бы мой личный опыт. Но я не решил проблему. Это сделала за меня ты.

— И поэтому ты не можешь записать это в своей записной книжке?

— Не поэтому. А потому, что это странный способ решать проблемы. В моем представлении ты появилась, как ангел, и избавила меня от всех сложностей. В общем-то, это вполне тянет на чудо. Как я могу это записать? «Если вам случится работать под руководством злобного придурка, надейтесь на чудо».

— А что бы ты хотел записать?

— Что-нибудь, что могло бы пригодиться и другим. В конце концов, мир полон скверных типов, которые почему-то норовят оказаться выше тебя на иерархической лестнице. Таких, как Бэллок, а то и похуже. Я бы хотел описать способ выхода из подобной ситуации.

— Может быть, Вебстер, такие ситуации просто безвыходны? Так тоже бывает. Скажи честно, ты ведь не надеялся избавиться от Бэллока самостоятельно?

— Но, может быть, я все-таки мог бы что-то сделать?

— Ох, не думаю. Я не верю, что такую патологию можно «вылечить» снизу. Честно, Вебстер. Мне кажется, у тебя просто не было выхода.

— Наверное, ты права, — вздохнул он. — Похоже, выхода действительно не было.

— Может, это и есть урок, который ты вынес из этой ситуации.

С этими словами она ласково провела рукой по его волосам и вышла из кабинета. Мистер Томпкинс проводил ее взглядом и начал писать.

Из записной книжки мистера Томпкинса

Об извращенной политике (еще раз)

  1. Эту патологию невозможно вылечить снизу.
  2. Не стоит терять время или подвергать себя опасности, чтобы проверить предыдущий постулат на собственном опыте.
  3. Иногда единственным выходом из ситуации становится выжидание. Попробуйте подождать, пока проблема не разрешится сама по себе или пока вы не найдете способ уйти от нее в сторону.
  4. Чудеса, конечно, случаются, но лучше на них не рассчитывать.
Назад: Глава 20. Необходимые церемонии
Дальше: Глава 22. Сделка года