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