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