Концерт для инженера с кластером на полтора терафлопса — 6
Жаль, конечно, что текст, на который потрачено столько сил и эмоций, в большинстве случаев бессилен эти эмоции вызывать. Ну что же, не всем быть пратчеттами.
Глава 6
– Как увольняешься? — Кифа не удержался и среагировал настоящими, не призрачными глазами.
Ольга же выглядела совершенно спокойной, даже расслабленной.
– Ой, ну что ты так волнуешься? Это не конец света. Во-первых, мне ездить сюда неудобно. Это тебе хорошо, у тебя большая часть пар в корпусе поблизости. А мне из кампуса не наездиться. Во-вторых… сказать по совести, не могу я работать с Алексеем. Он ничего толком объяснить не может, у него куча своей работы, да и, честно говоря — неприятный он страшно.
Она оглянулась вокруг — на всякий случай, убедиться, что их разговор по-прежнему приватен.
– То есть, ты утверждаешь, что Алексей ещё отвратнее Краснова?
Ольга взглянула на него удивлённо:
– Отвратнее? Краснов не отвратный совсем.
– Не отвратный? — здесь призрак очень пригодился Кифе.
– Да нет, я не знаю, с чего ты так решил. Я только побаиваюсь его слегка и… стесняюсь отвлекать по мелочам: он же сейчас совсем другим занят.
Кифа скрипнул зубами. В обоих ипостасях.
– Ну ладно, раз он такой душка. Что он-то думает по поводу твоего увольнения? Неужели вот так просто согласился тебя отпустить?
Ольга потупилась.
– Честно говоря, я поторопилась с этим увольнением, пока Краснов в командировке. Если повезёт, успею испариться прежде, чем он вернётся, и мне не придётся ничего ему объяснять. А то если он узнает, он придёт ко мне и будет говорить, говорить, говорить, говорить… И вывернет всё наизнанку.
Кифа взял в руки сначала себя, а потом, уже успокоившись, — Ольгу.
– Ну как же так, Оля? Ты уверена, что не совершаешь ошибки? Может, подождать? Или поговорить с Красновым? — неприятный привкус этого имени кривил губы Кифы сильнее обычного. — У нас большая контора, зачем уходить из-за одного человека?
Ольга мягко отстранила Кифу, чуть надавив левой рукой ему на грудь, а правой ладонью примиряюще коснулась его щеки.
– Не моё это, Киф, прости уж меня. Да и для нас с тобой выгоды большой нет: я злая постоянно, а ты последнюю неделю с митингов не вылезаешь.
Это было правдой. Кифа, увлекшись своим “пожаром”, вспоминал об окружающем мире и личной жизни ближе к вечеру — уже не синему, как ещё совсем недавно, а шоколадно-апельсиновому коктейлю из тьмы и уличных фонарей. Он вздохнул и, взяв Ольгу за ту руку, что касалась его щеки, поцеловал её пальцы.
– Пусть будет, как ты хочешь, Оля. Вот только…
– Да?
– В универе мы с тобой порознь, работать теперь тоже будем в разных местах…
– Ну и что?
“Видимо, именно это и чувствует компьютер, когда его резко лишают питания,” — подумал Кифа через те две секунды, на которые его мыслительный процесс полностью остановился. Ещё через полсекунды у него нашлась версия происходящего, от которой не хотелось немедленно застрелиться.
– Ну как — “что”? Я ж скучать буду.
Ответ ему совершенно не понравился:
– Потерпишь.
Он откровенно уставился на неё широко раскрытыми — от ужаса? удивления? он не вполне осознавал сам — глазами. Ольга рассмеялась:
– Ну ты рожи корчишь! Увидимся мы с тобой обязательно, выходные же есть, в конце концов.
“Ага, только за последние четыре комплекта этих самых выходных мы с тобой виделись ровно один раз, в кафе, из которого ты убежала через полчаса, потому что тебе позвонила мать и сообщила о приезде старшей сестры.”
Делать, впрочем, было нечего. Кифа терпеть не мог скандалов, ему было физически больно от повышенного голоса. Да и мелочно как-то выглядело — из-за такого задавать громкие вопросы, ставить под сомнение опыт полутора лет. В конце концов, многие пары работали и учились порознь — и ничего. Всё же, что-то неясное саднило у Кифы под сердцем. Незаметно, исподволь в этом разговоре сложилось так, что это их встречи — это исключительно его выгода, а для Ольги это лишь обременительная обязанность. “Нет, я несправедлив к ней, — тут же подумал Кифа, — не совсем так. Но то, что мне это нужно больше — правда.” Он подумал о том, что будет, если их встречи в самом деле станут нужны только ему, и содрогнулся. “Может, мне и в самом деле это нужно больше? Как я иначе? Кто я буду без неё?”
Ольга уехала из офиса через неделю. Она начала работать недавно, на неё не было завязано слишком много, так что держать её долго не стали. Краснов, вернувшийся к началу этой последней недели из командировки и обнаруживший дезертирство Ольги, похоже, обиделся. А может, и нет. В любом случае, он теперь удостаивал её едва лишь кивка, заходя к ним в комнату. Ни одного слова он не сказал ей больше, тратя всё своё красноречие на Алексея, который, похоже, испытывал серьёзные трудности на своём участке работ. Кифа чувствовал себя по этому поводу странно: с одной стороны, его всегда раздражало, когда Краснов говорил с Ольгой, а с другой — теперь он знал, что если бы Краснов говорил больше, то Ольга, быть может, и осталась бы. Осталась рядом. “Всё равно он виноват!” — подумал он себе, смутно ощущая некоторую нелогичность, но в пылу эмоций совершенно не смущаясь этим, и поставил Краснову подножку. Тот упал неудачно, сломав переносицу об обшитый стальным уголком косяк. “Жаль, что всего лишь призрак”.
– Ты уже нашла себе новую работу? — спросил Кифа Ольгу в один из этих дней, когда рабочее место её напоминало открытый гроб с телом: проходящие мимо нарочито выражают своё уважение её присутствию, но в остальном полностью игнорируют её существование.
– М-мм… — промычала она в ответ.
– Что? Не очень?
– Ну что сказать? Игроделы под Андроид. “Альтарес” — слышал?
– Так, краем уха. Что-то ты не выглядишь возбуждённой перспективами.
– Да-а… — начала было объяснять она, но передумала. — Это ненадолго, может, на год. Я хочу нормально доучиться, мне немного осталось. Потом найду что-нибудь поприличнее.
– Платят-то хоть нормально?
– Так, Киф, так… Сойдёт.
Кифе было очень паршиво: от того, что Ольга увольняется — это выглядело её поражением, да, собственно, им и было; от того, что вместо того, чтобы излучать жизнерадостный оптимизм, она, словно чёрное тело, поглощала весь старательно проецируемый оптимизм Кифы, не нагреваясь при этом ни на кельвин; от того, что сам он, исправляя ошибки с транзакциями в модуле, понадеялся на то, что уж с остальным-то проблем нет — и ошибся, и теперь проблемы ушли на второй круг. “Всё не так”, — думал он.
В следующий понедельник её компьютера уже не было на месте.
Кифа погрузился с головой в своё сражение с тестировщиками и заказчиками. Он собрал тестовый стенд из пяти разных машин и даже выбил из отдела IT-инфраструктуры, чтобы две из пяти машин располагались в двух других датацентрах — благо, компания была большая и по всему миру этих датацентров держала несколько. На этом стенде он сгенерировал данных вдвое больше, чем системе приходилось обрабатывать в реальном решении. Были, конечно, неизбежные отличия — сгенерированные данные всегда такие правильные, занимают ровное число блоков, не дефрагментируют ни дисковое пространство, ни построенные над дисками файловые репозитории документов. Но если система легко справляется с тестовой нагрузкой, вдвое большей реальной, то вероятность, что она неожиданно свалится на внедрении, падает до приемлемой.
К своему хитросплетению черт характера Кифа добавил одну новую: лёгкую параноидальность. Он не верил отчётам тестировщиков, вручную проверяя каждый дефект. Он просто физически не мог произнести фразы в духе “работает, как часы”, “гарантирую отсутствие ошибок”, или “оно не упадёт”. Каждый сценарий должен был открутиться на стенде минимум сутки, после чего Кифа неохотно писал-де “проблем не замечено, давайте попробуем выдать эту версию, серьёзных затруднений быть не должно”. Он обедал в полном одиночестве на кухне, избегая компании всех своих прежних приятелей-сотрудников.
Нагрузка в университете — а дело шло к предпоследней сессии — возросла, и с выходными, как Кифа и предвидел, получалось не особенно-то и здорово. Чтобы хоть как-то преодолеть эту разлуку, он писал Ольге каждый день что-нибудь хорошее и светлое.
Ветер и солнце.
Хрустят цукаты.
Как там у тебя на новом месте?
Хмурятся тучи. Яблоня обнажилась в предзимней скорби.
Когда Кифа отметил про себя, что прошла неделя, его тут же поправил внутренний голос: “Три.” И в самом деле: календарь с этим голосом был вполне согласен. Прошлое виделось смутно: да и как иначе можно видеть глазами, которые вечно царапает песок наполеоновского сонного цикла? Ведущий Кифы, Сергей — тот, что отсутствовал, когда в модуле случился кризис — тоже решил сменить место работы. Начальник отдела, похоже, не особенно расстроился (в отличие от Кифы), а просто где-то выкопал первоклассного специалиста по хранилищам данных и тем разгрузил остальных. С его-то помощью Кифа и закончил наконец свою эпопею.
Олег, как и начальник отдела, разменял не так давно четвёртый десяток, и повидал много чего, хотя по большей части держал всё это при себе. Тихий голос, всегда вежливая речь и бесконечная преданность своему делу вызывали у Кифы глубокое уважение. Требовалось ли подсчитать оптимальное количество осколков для текстового индекса, оптимизировать SQL-запрос или что-то узнать о внутренней реализации того или иного механизма Oracle — он всегда знал, в какое место документации смотреть или какой эксперимент провести.
Холодный утренний воздух офиса пах кофе. Кифа уселся перед монитором и, войдя в систему, достал из кармана мобильник. Стоял уже глубокий ноябрь, и по дороге на работу ему пришла в голову отличная, как ему казалось, идея. Не теряя времени, он воплотил её в жизнь.
Иней на ветках.
Теперь можно было и поработать. Ответ придёт нескоро и вообще навряд ли. Ольга каждый раз извинялась за неаккуратность в переписке, но ни к каким серьёзным изменениям это до сих пор не привело.
На трекере валялся забытый тикет полугодовой давности — после обновления общего дизайна в интерфейсе модуля поехала на пару пикселей разметка. Основной дефект — причина долгих вечеров и бессонных ночей у всей команды — радовал отсутствием новых комментариев под последним ответом Марии, поздравляющим всех с успешной выдачей в production и постскриптумом: “So far, so good.”
Кифа, удовлетворённо вздохнув, открыл забытого беднягу, и за двадцать минут справился с ним. Потом зашёл на кухню, налил себе чашку кофе и, вернувшись, принялся, наконец, за написание тестов. За эти три недели он замучил вопросами всех вокруг — вернее, замучил бы, если бы окружающие не были бы готовы помогать ему постоянно по собственной воле: иметь на отделе дефект высокого приоритета от заказчика не хотелось никому. Доверие, you know. От отчаяния больше, чем от чего бы то ни было ещё, Кифа пристал к Краснову. Собственно, это он навёл Кифу на мысль собрать стенд для тестирования именно распределённым.
– Не сочтите за бестактность, однако ж не могу не осведомиться: имеет ли ваша компонента модульныя испытания?
– Юнит-тесты, ты имеешь в виду? Разумеется, мы их на сервере гоняли перед выдачей в тестирование.
– Вы, сударь, похоже, не вполне понимаете предмет моего любопытства. Вы изволите говорить об общей проверке, тогда как я более озабочен проверкою модульной. Понимаете ли, вот сейчас вы вносите изменения в компоненту и уже однажды имели неприятность столкнуться с несовместимостию оных с предыдущею версией. Модульные же испытания образуют некий костюм для функциональности. Могу заверить вас, что риски изменений в компонентах с развитыми модульными испытаниями гораздо ниже.
Кифа был вынужден признать, что никаких модульных костюмов у них не было, на что Краснов заявил, что рекомендует создать хотя бы автоматические тесты важнейших бизнес-сценариев (он никогда бы не произнёс “бизнес-сценарий”, но термин, который он употребил, Кифа не помнил, потому что чуть не заснул за те пять минут, пока Краснов разглагольствовал) и запланировать написание модульных тестов в ближайшем будущем, как только кризис закончится.
Так что именно на это он и потратил свой день: прилежно описывал тестами те изменения, которые ему пришлось сделать, пока он тушил пожар. Работа была, с одной стороны, несложной, с другой — не слишком однообразной и очень, очень благодарной: зелёные шарики успешно прошедших тестов вдохновляли.
Ещё одно пробуждение из матрицы рабочего кресла в реальный мир звёздного неба, светлых от снега сумерек и фонарей-послов оранжевого лета. В реальном мире было не то что бы очень здорово, но вполне терпимо. Ольга отвечала на SMS через раз, но зато иногда звонила сама. Тяжёлый проект только что, видимо, кончился, а Кифа и не заметил. Приближался Новый год, и хотя ничего таинственного в смене дат Кифа не видел, сама атмосфера праздника всегда захватывала его. Да тут ещё и брат Серёга сделал подарок ближайшим родственникам: урвал приглашение на какую-то очень пафосную конференцию неврологов на турбазе в Италии и подсуетился на места для жены, обоих детей, матери и Кифы. На начальных курсах Кифа даже и не пытался бы воспользоваться такой возможностью, но к пятому курсу он обнаглел и на перспективу за месяц до сессии провести неделю вдали от университета смотрел вполне спокойно.
Этот стылый полуморок неясных ожиданий, не связанных с его желаниями, неясных перспектив там, где его желания были привязаны как раз очень крепко, простой усталости, мокрого снега сверху и “Земфиры” в наушниках прорвал звонок телефона.
– Да. Оля? Привет! Рад тебя слышать! Ну ты как?
– Да вот, с работы только вышел, а т… ага.
– Поздравляю! Мальчика? Нормально всё? А, выписали вчера? Ну что ж ты мне не сказала? Я-то и не знаю.
– Ага. Ага. Да могу, наверное.
Кифа улыбнулся призрачной улыбкой, продолжая слушать любимый голос. Потом не выдержал и улыбнулся на самом деле. Широко, как Чеширский кот. Надежда Михайловна уехала в M. к старшей дочери, помочь ей с ребёнком в первые несколько недель после выписки из роддома. Ольга — с учёбой и работой — осталась дома одна. Впервые в жизни она одна в пустом доме и вчера, и третьего дня, и завтра она тоже будет — была бы — одна. Эта-то перспектива её и беспокоила. Что ж, Кифа был бы готов составить Ольге компанию и в менее приятных условиях.
Продолжая телефонный разговор, он направился к остановке общественного транспорта.