Обложка Вот это была бы жизнь

Вот это была бы жизнь

Федька Щусь

0% прочитано
Стандартный
Федька Щусь

Вот это была бы жизнь

Глава 1

I

Рабочий день широко известного в узких кругах писателя Ивана Разливайкина (38 лет, разведён, детей нет) начался хуже некуда. С утра позвонил из издательства заместитель директора по развитию читательского продукта Круглов-Безымянский по поводу готовящегося к изданию нового романа Разливайкина. Сперва долго переливал из пустого в порожнее прежде чем наконец перейти к сути дела - Разливайкин даже успел мысленно починить шкаф на котором как обычно восседал его кот Фортран. «Понимаете, мнэээ, дражайший Иван Сергеевич… ваш роман, безусловно, талантлив… присущий вам живой язык… я бы даже сказал — блестяще… но… мнэээ…видите ли… финал… как бы несколько затянуто… не вполне соответствует запросу аудитории… хотелось бы побольше… этого… как сейчас говорят… экшына…» Слово «экшын» Круглов-Безымянский произнёс как-то вкусно, с интонацией человека, впервые пробующего устрицу.

Иван молчал. Доходы от будущей книги уже были внесены в бюджет. Более того - уже распределены: квартплата, кредит, стоматология, новая стиральная машина... всё внесено аккуратными колонками в Excel.

«Мы бы просили вас слегка, мнээ... переделать роман. Подстроить под потребности аудитории. Динамика. Темп. Плотность событий. Немножко крови. Немножко слёз. Может быть, мнэээ... изменим финал?»

Положив трубку, Иван вспомнил детство в военном городке и выразился так, что даже стены вздрогнули. Кот Фортран, флегматично наблюдавший за разговором с горних высот шкафа, слегка укоризненно посмотрел на Ивана. Мол, ты же писатель, инженер душ человеческих, мастер художественного слова - а выражаешься как какой-нибудь старший прапорщик!

- Знаю, Фортранчик, знаю, - повинился Разливайкин. - А что они?

И в голосе его сквозила детская обида на весь окружающий жестокий мир.

Немного успокоившись и выпив чаю, Разливайкин сел работать. Надо переделывать. Раз публика хочет «экшына» - будет им «экшын».

Он вставил в третью главу перестрелку. В пятую - внезапную измену. В седьмую - труп в багажнике. Но вдохновение не приходило. А какое творчество без вдохновения?

Он мучился до обеда. Мучился после обеда. В итоге выдавил двадцать страниц - и ни одной, которой был бы доволен.

«Ладно, надо заканчивать, - решил Иван. — Всё равно не идёт сегодня». И сделал то, что каждый день клялся не делать. Полез читать отзывы.

Исписался… Вторичен… Графоман… Начал хорошо, а теперь непонятно что…

«Вы просто не понимаете! - хотелось закричать ему. - Это вы ничего не понимаете!»

Побегав по комнате и подёргав свою начинающую редеть шевелюру, Разливайкин набрал номер старинного приятеля Зузукина. Зузукин был как всегда щедр на дружескую поддержку. Посочувствовал Разливайкину, поругал вместе с ним издательство и всю эту глупую читательскую аудиторию. А потом как бы невзначай добавил:

- Знаешь, а мне тут одна киностудия предложила экранизацию моих «Пылающих восходов». Сериальчик, серий на десять. Уже со сценаристом работаю.

Это был контрольный выстрел. Быстренько закончив разговор, Иван взвыл, швырнув телефон на диван:

- Да что же это такое! Вы что все - смерти моей хотите? Одно к одному, одно к одному!

Спасти его могло только одно. Иван уже полгода занимался разработкой онлайн-игры «Жук в муравейнике». Программирование было единственной отдушиной в тяжёлой писательской жизни. Решительно пододвинув к себе ноутбук, Иван запустил среду разработки. Разминая пальцы над клавиатурой, он размышлял над планом работ: «Первым делом надо всю работу с базой в отдельный слой вынести. И юнит-тестами обложить. А то потом если баги полезут - концов не найдёшь. И никаких мнээ… никаких экшынов...». И он быстро-быстро застрочил:

package repository

import (“jackc/pgx/v5”)

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

Кот Фортран тихо наблюдал со шкафа. Хозяин явно приходил в себя.

А хозяин между тем вошёл во вкус. Работа с базой действительно давно просилась в отдельный пакет, и теперь Иван с наслаждением выдирал SQL-запросы из файлов, придумывал интерфейсы и немедленно писал к ним тесты. Тесты сначала краснели, потом зеленели, и в этом была какая-то простая, почти детская справедливость. Если тест красный - значит, ты сделал неправильно. Если зелёный - правильно. Никто не звонил из издательства и не говорил:

- Понимаете, дражайший Иван Сергеевич, тест у вас, безусловно, зелёный, но хотелось бы несколько больше эмоциональной вовлечённости аудитории...

От одной мысли об этом Разливайкин хихикнул и написал следующий тест.

Через некоторое время оказалось, что старый метод SavePlayer вообще делает три совершенно разных дела одновременно. Иван возмутился - кто же так пишет? Потом вспомнил, кто именно это написал четыре месяца назад, и снисходительно простил начинающего программиста Разливайкина.

Старый метод был безжалостно расчленён на три нормальных изолированных метода. Всё собралось. Всё заработало. Потом Иван нашёл место, где можно было убрать дублирование, убрал, прогнал тесты ещё раз и минут пять любовался результатом.

В какой-то момент Фортран спустился со шкафа, подошёл к своей миске и обнаружил там вопиющее нарушение установленного порядка вещей.

- Сейчас, сейчас, - отмахнулся Иван.

Фортран сел возле миски и принялся ждать. Через минуту он передвинулся ближе к Ивану. Ещё через минуту, подбежав, коротко мявкнул и положил лапу ему на ногу.

- Да господи, ты-то хоть не начинай!

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

Он посмотрел на часы.

- Ничего себе.

Было уже почти одиннадцать. Иван наскоро сделал себе бутерброд, поставил чайник и, пока тот закипал, вернулся «буквально на секунду» посмотреть, почему один из тестов выполняется заметно дольше остальных.

Когда он в следующий раз посмотрел на часы, было без двадцати час. Чайник давно выключился.

- Ну всё. Хватит.

Иван сказал это твёрдо, сохранил файлы и тут же заметил ещё одну мелочь. Там всего-то две строки поправить. Поправил. Проверил. Заодно переименовал переменную, которая весь вечер раздражала своим идиотским названием. Ещё раз запустил тесты. Все зелёные. Вот теперь действительно всё.

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

Настроение было прекрасное. Он закрыл ноутбук, потянулся и только теперь почувствовал, что устал. Но это была приятная усталость - когда несколько часов проработал, сделал дело и видишь, что сделал его хорошо.

Фортран уже перебрался на кровать и лежал поперёк подушки, заранее распределив спальные площади.

- Подвинешься.

Фортран не подвинулся.

После недолгих переговоров Ивану удалось получить примерно две трети подушки. Он погасил свет, улёгся и ещё некоторое время мысленно перебирал сегодняшний вечер. Хорошо всё-таки программировать: спокойно, интересно, голова работает. И результат от тебя зависит. Не то что эта проклятая литература. И ведь говорила ему мама после школы: «Ваня, поступай в технический. У тебя математика хорошо идёт. Нормальная специальность будет». Нет же - понесло его в литературный.

Иван вздохнул.

- Мама всегда права, Фортранчик. Жаль, понимаешь это лет через двадцать.

Кот приоткрыл один глаз.

- Работал бы сейчас программистом. Сидел бы себе, писал программы… Вот это была бы жизнь.

Фортран снова закрыл глаз. Хозяин был спокоен и доволен, а что ещё порядочному коту нужно от жизни?

II

Рабочий день программиста Фёдора Наливайкина (32 года, женат, один ребёнок) начался хуже некуда. Второй год команда, в которой в качестве разработчика бэкенда трудился Наливайкин, разрабатывала онлайн-игру «Кот в термитнике», время выпуска очередной версии неумолимо приближалось - а нормальный релиз даже и на горизонте не просматривался. Поэтому все в команде были слегка на взводе, и на утреннем дейлике Фёдор поцапался с тимлидом Костей Пустосвятовым.

Зануда Костя долго пилил Фёдора за то что тот не вовремя устраняет баги и вообще не демонстрирует должной «перформности». Костя очень любил странное словечко «перформность» и употреблял его к месту и не к месту. Будь на месте Фёдора человек поспокойнее - просто покивал бы и пошёл работать. Но Фёдор, имеющий в характере определённую склонность к несдержанности (из-за которой регулярно страдал с самого детства), вместо этого взорвался и возопил:

- А что Федя! Фронтендеры второй месяц пустяковый баг с вылетом персонажа починить не могут - Федя виноват? Тестировщики в баг-репортах такую хрень пишут что никакой ChatGPT не разберёт - Федя виноват? Вечно у вас во всём Федя виноват!

После этого Костя сел на своего любимого конька и забухтел про «коллективный дух» и «личную ответственность». В итоге рассчитанный на 15 минут дейлик затянулся почти на час. Злой как чёрт Фёдор, по пути несколько раз пнув ни в чём не повинные плинтуса, завалился в свой кубик в опенспейсе, рухнул в жалобно скрипнувшее анатомическое кресло (за свой счёт покупал!) и попытался успокоиться. Успокаиваться получалось плохо.

На мониторе висел баг, который Фёдор вчера почти закрыл. Почти - это когда ты уже нашёл причину, исправил, проверил у себя и даже мысленно переставил задачу в «Done», но тут приходит тестировщик и сообщает, что теперь всё работает, кроме случая, когда пользователь меняет оружие во время прыжка с лестницы.

Фёдор прочитал описание два раза.

- А зачем он меняет оружие во время прыжка с лестницы?

Соседний разработчик поднял голову.

- Кто?

- Пользователь.

- Пользователь может.

Это был исчерпывающий ответ. Фёдор открыл код. Выяснилось, что пользователь действительно может. Более того, если в этот момент ему приходит обновление состояния персонажа с сервера, тот иногда проваливается сквозь пол. Почему - вопрос отдельный, интересный и явно несвоевременный за несколько недель до релиза.

Фёдор исправил одну проверку, сломал другую, вернул как было, полез смотреть старый коммит, обнаружил там комментарий собственного авторства «TODO: нормально переделать после релиза» и некоторое время мрачно смотрел на него. Комментарий был написан три месяца назад. Релиз с тех пор уже дважды переносили.

К обеду баг починился. По крайней мере тот баг, который Фёдор собирался чинить утром. Зато в мессенджере его уже ждали четыре новых сообщения. Два от тестировщиков, одно от фронтендера и одно от Кости: «Как продвигаемся по утренним договорённостям?»

Фёдор стиснул зубы. Утренних договорённостей он не помнил - он помнил утренний скандал. Возможно, Костя считал это одной из форм договорённости. Фёдор набрал ответ, перечитал и стёр две трети. Потом стёр ещё половину. Осталось: «Работаю». Так было безопаснее для карьеры.

Дальше день потянулся как резина. Что-то собиралось, что-то не собиралось, кто-то просил посмотреть чужой merge request, тестовый сервер дважды отваливался, а ближе к четырём внезапно выяснилось, что вчерашнее исправление одного старого бага почему-то вернуло ещё более старый. Никто особенно не удивился.

Фёдор работал. Не блестяще, не вдохновенно и не демонстрируя никакой особенной «перформности». Просто делал то, что нужно было сделать: читал логи, правил код, отвечал коллегам, матерился шёпотом и иногда поглядывал на часы.

После шести опенспейс начал понемногу пустеть. Счастливчики, чьи задачи не горели непосредственно сегодня, исчезали первыми. Потом потянулись остальные. Фёдор закрыл последнюю задачу, перевёл ещё одну в статус, который означал примерно «я сделал всё, что мог, теперь пусть страдают другие», и посмотрел на список багов. Список за день явно прибавил в весе.

- До завтра, - сказал кто-то, проходя мимо.

- Если оно наступит, - мрачно ответил Фёдор.

Но всё-таки наступило хотя бы окончание сегодняшнего рабочего дня.

На улице было уже темно. Пока Фёдор добирался домой, раздражение слегка притупилось, но не прошло: Костя всё ещё был занудой, фронтендеры всё ещё второй месяц не могли разобраться со своим вылетом, тестировщики всё ещё умели находить такие сценарии использования программы, которые нормальному человеку не пришли бы в голову даже после трёх бутылок водки. И завтра всё это продолжится.

Дома его встретила Муза. Муза была небольшой серой кошечкой с характером, удивительно точно соответствовавшим характеру хозяина. В спокойном состоянии она могла часами лежать где-нибудь в кресле и изображать существо, достигшее внутренней гармонии. Но стоило Фёдору прийти домой злым, начать хлопать дверцами шкафов или разговаривать громче обычного - Муза немедленно начинала нервничать вместе с ним. Сегодня случай был именно такой.

Она пробежала за Фёдором в прихожую, потом на кухню, потом обратно в коридор, зачем-то обогнала его, вернулась и требовательно мяукнула.

- Муза, не начинай.

Муза мяукнула ещё раз.

- Я сказал - не начинай!

Кошка отпрыгнула, посмотрела на него круглыми глазами и тут же принялась нервно ходить туда-сюда.

- Вот и поговорили.

Фёдор переоделся и пошёл на кухню. Ужинать хотелось, но ещё сильнее хотелось поскорее оказаться в своей комнате и закрыть за собой дверь. Он разогрел еду, съел почти не замечая вкуса, отказался от чая и на вопрос из соседней комнаты, будет ли он сегодня «нормально сидеть со всеми или опять упрётся в свой компьютер», ответил:

- Я сегодня вообще ни на что не способен. Мне надо часик чтобы прийти в себя.

Это было не совсем правдой. На кое-что он всё-таки был способен.

Фёдор собрал тарелку, отнёс в мойку и ушёл к себе. Муза проскользнула следом за ним раньше, чем дверь успела закрыться.

- А ты куда?

Муза посмотрела на него так, словно вопрос был лишён смысла.

- Ладно. Только не носись.

Кошка запрыгнула на подоконник, тут же спрыгнула, прошлась по столу, была снята оттуда Фёдором, обиделась секунд на десять и полезла под кресло.

Фёдор сел за стол. Перед ним лежал ноутбук. Рабочий ноутбук остался в офисе - и слава богу. Этот был свой. Он открыл крышку, дождался загрузки и несколько секунд смотрел на привычный рабочий стол. Где-то там, в корпоративной сети, продолжал жить «Кот в термитнике» — со своими тикетами, логами, дедлайнами, Пустосвятовым и неисчерпаемым запасом пользовательских способов провалиться сквозь пол.

Но сейчас это всё было не его проблемой - до завтрашнего утра. Фёдор открыл папку «Роман». Муза высунула голову из-под кресла и принялась внимательно наблюдать за его действиями.

Фёдор нашёл нужный файл, открыл его и сразу увидел последние строки, написанные вчера. Там не было ни багов, ни релиза, ни «перформности». Там адмирал Фырхш готовился разгромить флот киноидов. Фёдор положил пальцы на клавиатуру. Настроение начало исправляться. Он перечитал последние два абзаца, немного подумал и поставил курсор после точки.

«Адмирал Фырхш стоял на мостике флагмана «Коготь Предков» и смотрел, как уцелевшие корабли киноидов один за другим уходят в гиперпрыжок. Ещё утром их было больше трёхсот. Теперь пространство перед феллиноидским флотом было почти пустым.

- Мы победили, адмирал, - тихо сказала Алисхш.

Фырхш медленно повернулся к ней.

- Нет, - ответил он. - Мы просто не проиграли».

Фёдор задумался. Нет, слишком мрачно. Фырхш всё-таки только что выиграл крупнейшее сражение войны, а не счета за коммуналку оплатил. Он удалил последнюю реплику.

«- Мы победили, - сказал Фырхш».

Тоже не то.

Фёдор откинулся на спинку кресла, минуту смотрел в потолок, потом улыбнулся и снова положил руки на клавиатуру.

«- Мы победили, - сказала Алисхш.

Фырхш молча смотрел вслед исчезающим звёздам вражеских кораблей.

- Ты опять думаешь о тех, кого не удалось спасти?

Адмирал ничего не ответил. Алисхш подошла ближе и положила голову ему на плечо.

- Для всех остальных ты великий адмирал Фырхш. Для меня ты просто мой Фыр».

Фёдор довольно хмыкнул. Вот, уже лучше. Пальцы побежали по клавиатуре.

«Фырхш обнял Алисхш за талию и наконец позволил себе перестать быть командующим Объединённым флотом. Хотя бы на несколько секунд. Война ещё не закончилась, киноиды ещё удерживали три системы, впереди ждали новые бои, но сейчас рядом была она - та, ради которой имело смысл возвращаться из любого сражения.

- Я люблю тебя, - сказал он.

- Я знаю, мой адмирал, - ответила подруга и лизнула его правое ухо».

Фёдор перечитал написанное. Хорошо. Может быть, «мой адмирал» слегка банально. Но Алисхш имела право. Она вообще много на что имела право после того, как в двенадцатой главе вытащила Фырхша из горящего десантного катера.

Муза тем временем выбралась из-под кресла и осторожно приблизилась к хозяину. Фёдор её не заметил. Ему уже не было дела ни до чего - флот киноидов отступал к системе Сириуса, повреждённый крейсер «Длинный Ус» просил разрешения выйти из строя, штаб требовал подсчитать потери, а Фырхш, как назло, именно сейчас обнаружил на тактической карте кое-что очень странное.

Фёдор быстро написал ещё абзац. Потом ещё один. Вернулся наверх, заменил «огромный» на «тяжёлый», решил, что «тяжёлый» хуже, вернул «огромный» и пошёл дальше.

Муза запрыгнула на соседнее кресло. Фёдор продолжал писать. Через некоторое время кошка перестала следить за каждым его движением, свернулась клубком и прикрыла глаза. Хозяин больше не хлопал дверями, не ругался и не метался по комнате туда-сюда - значит, всё опять было в порядке.

А у Фёдора дела шли просто прекрасно. В его распоряжении находилась целая Галактика, и никто не требовал согласовывать с тимлидом количество звёзд в секторе. Хочешь - уничтожай планету. Хочешь - спасай цивилизацию. Хочешь - пусть адмирал Фырхш посреди войны целую главу выясняет отношения с Алисхш. Фёдор, правда, целую главу посвящать этому не захотел - вскоре должна была начаться операция у Бетельгейзе, и его героям было не до мирных забав.

Он написал ещё страницу, потом ещё. В какой-то момент полез проверить, как называется часть корабля, которую он только что собрался пробить плазменным зарядом, провёл двадцать минут в интернете, выяснил гораздо больше, чем требовалось, и в итоге всё равно написал просто «бронеплита».

Потом Фырхш наконец понял хитрость киноидов. Потом Алисхш с ним не согласилась. Потом Фёдор решил, что права всё-таки Алисхш, и заставил адмирала признать это самому.

Муза давно спала. Когда Фёдор наконец оторвался от текста, в квартире стояла полная тишина. Он посмотрел на часы.

- Твою мать...

Было два сорок семь.

Муза открыла глаза.

- Всё, всё. Спим.

Кошка зевнула. Фёдор сохранил файл, но закрывать его сразу не стал. Прокрутил немного назад, перечитал сцену на мостике. Неплохо получилось. Даже очень неплохо. Особенно место с Алисхш.

Он закрыл ноутбук и почувствовал знакомую приятную усталость. Вот ведь несколько часов просидел - а будто только начал. И завтра бы продолжил с удовольствием, если бы не надо было опять тащиться на работу.

Фёдор разделся, лёг и уставился в темноту. Муза немного потопталась в ногах, потом устроилась рядом.

А ведь когда-то всё могло пойти совсем иначе. В школе Фёдор сочинения писал лучше всех в классе. Русичка его постоянно хвалила. Однажды даже прочитала его работу вслух перед всем классом и потом сказала матери на родительском собрании: «У мальчика несомненные литературные способности». Мать потом неделю ходила довольная. И сам Фёдор тогда писал легко. Рассказы какие-то придумывал. И даже начал в девятом классе писать роман про войну на Марсе. Страниц сорок написал - огромный объём для школьника.

А потом политех. Потому что программисты нужны всегда. Потому что профессия серьёзная. Потому что зарплаты хорошие. Ну и получил серьёзную профессию. Дейлики. Баг-трекер. Релизы. Чёртов Пустосвятов со своей перформностью.

Фёдор повернулся на бок. Вот писатели - другое дело. Сидишь дома. Никто над душой не стоит. Придумываешь свои миры, своих героев. Пишешь, что хочешь и как хочешь. Творчество! И какого чёрта его понесло в этот политех? Надо было ещё тогда всех слушать - русичку, мать, одноклассников, которые говорили: «Федька у нас писателем будет». Сейчас бы сидел себе, книги писал. Вот это была бы жизнь!

Муза уже спала. А далеко от неё кот Фортран тоже не тревожился о неправильно выбранной профессии. Вообще из всех участников этой истории только Фортран и Муза никому не завидовали - они оба были совершенно уверены, что лучше кошачьей жизни ничего быть не может.

Спасибо за чтение

Вернуться к книге