Философ на колёсах

R
В процессе
6
автор
Фэндом:
Размер:
планируется Макси, написано 138 страниц, 70 441 слово, 13 частей
Описание:
Посвящение:
Публикация на других ресурсах:
Запрещено в любом виде
6 Нравится 24 Отзывы 1 В сборник

Глава 6. Коммит в никуда или Время – иллюзия, обед – тем более.

Настройки
Будильник заорал ровно в 6:30 – на пятнадцать минут позже, чем я планировал, и на сорок пять минут раньше, чем хотелось бы. Я открыл глаза и сразу понял: сегодня будет один из тех дней, когда даже кофе выступает в роли массовки, а не главного героя. Шопенгауэр уже сидел на моей груди и смотрел взглядом, в котором читалось: «Человек, если через тридцать секунд я не увижу еду, твои новые наушники станут жертвой». Его хвост методично бил меня по лицу, как метроном, отсчитывающий последние мгновения моего спокойствия. – Ладно, ладно, иду, – прохрипел я, пытаясь спихнуть пушистого тирана. Шопенгауэр выдал презрительное «мр-р-р», явно намекая, что моё подчинение его лишь разочаровало. Душ не взбодрил. Зубная паста оказалась мятно-безысходной. Бритва – тупой настолько, что, казалось, она не сбривает щетину, а просто уговаривает её лечь обратно. Я глянул в зеркало и увидел там человека, который явно не высыпался с 2013 года. – Сегодня всё будет по-другому, – соврал я своему отражению. Оно не поверило, но вежливо промолчало. На кухне меня встретил чайник с отбитой ручкой – наглядная метафора моей продуктивности. В тостере застрял хлеб, видимо, тоже не желая начинать этот день. Микроволновка демонстративно мигала «00:00», напоминая, что время – социальная конструкция, придуманная исключительно чтобы мучить разработчиков. Шопенгауэр тем временем устроил перформанс «Голодная смерть» у своей миски: драматично завалился на бок и принялся издавать звуки, достойные умирающего в пустыне героя дешёвого вестерна. – Ты же ел вчера, – попытался я воззвать к его совести, насыпая корм. Кот посмотрел на меня с таким выражением, будто я предложил ему питаться дошираком. «Вчера – это прошлая жизнь, человек. Я живу исключительно в настоящем», – говорил его взгляд. Я плюхнулся за стол, открыл ноутбук. На экране уже ждали: пять непрочитанных сообщений в рабочем чате с пометкой «СРОЧНО». Три письма от HR с темой «Корпоративная культура». Уведомление от системы контроля версий: «Конфликт слияния». Шопенгауэр, насытившись, запрыгнул мне на колени и начал методично топтать клавиатуру, добавляя в код случайные символы. Видимо, его новый проект назывался «Рефакторинг через хаос». – Прекрати, – слабо воспротивился я и тут же получил удар лапой по руке. Взгляд кота не оставлял сомнений: «Ты вообще кто такой, чтобы указывать художнику?» Первый глоток кофе обжёг язык. Второй – уже душу. К третьему я смирился. На экране Slack пылали красным: «Дима, когда поправишь баг?», «Дима, клиент опять жалуется», «Дима, ты вообще читаешь чаты?». Шопенгауэр, почуяв моё напряжение, решил проявить сочувствие – перевернул чашку и принялся вылизывать кофейную лужу со стола. «Не переживай, человек, – говорили его действия, – теперь у тебя есть опоздание по уважительной причине». Я потянулся к клавиатуре, пальцы вслепую нашли привычные клавиши: «Да, работаю над этим» – и отправил эту ложь сразу во все три чата. На часах было 8:17. До стендапа оставался час и тринадцать минут. Шопенгауэр, закончив кофейный перформанс, устроился спать прямо на моих рабочих бумагах. Его довольное урчание словно говорило: «Вот видишь, как просто быть счастливым? Надо просто лечь и не шевелиться». Я вздохнул и глянул в окно. На балконе соседнего дома висел выцветший плакат: «Улыбайся новому дню!» Кто-то приписал снизу маркером: «Если сможешь». Шопенгауэр во сне дёрнул лапой – наверное, ему снилось, что он наконец-то захватил мир. Я погладил его по голове и на мгновение задумался: может, настоящая мудрость – это просто лечь и перестать шевелиться. Но на часах было уже 8:23. До стендапа – час и семь минут. До конца рабочего дня – девять с половиной часов. До пенсии – примерно тридцать пять лет. Я сделал ещё глоток. Кофе остыл. Как и мои надежды на сегодняшний день.

***

В машине пахло вчерашним дождём и чьей-то несбывшейся мечтой. Я вырулил со двора и тут же уткнулся в пробку. Впереди маячил микроавтобус с наклейкой на заднем стекле: «Не сигналь – я медитирую». Водитель, судя по скорости, действительно пребывал где-то в астрале: он трогался на зелёный с задержкой секунд в десять, а потом ехал так, будто в салоне перевозил аквариум с нервными рыбами. За мной пристроился оранжевый «Рено» с принтом на капоте: «Обгоняй, пока я добрый». Видимо, доброта у водителя заканчивалась примерно на третьей секунде после старта, потому что он непрерывно моргал дальним и пытался протиснуться в щель между мной и отбойником, которой не существовало в природе. В левом ряду томился чёрный джип с хромированной надписью на запаске: «Паркуюсь как хочу. Нет, серьёзно, как хочу». И, судя по тому, что его заднее колесо наполовину заехало на тротуар, автор текста ничего не преувеличивал. Пока я полз вдоль бесконечного забора, мой взгляд зацепился за свежее граффити на бетонном блоке: «Ты не в пробке. Ты в очереди за смыслом жизни». Ниже кто-то подписал мелом: «Тогда почему смысла нет, а бензин кончается?» Я усмехнулся и машинально проверил, не заблокировала ли меня снова «Тойота» с вечно обновляющимися философскими лозунгами. Нет, сегодня обошлось. Зато на соседней полосе обнаружилась «Газель» с надписью на борту: «Груз надежды. Не кантовать». И чуть мельче: «Впрочем, уже поздно». Навигатор предложил три маршрута: быстрый (через центр), объездной (без пробок по окраине) и экономичный (где-то между отчаянием и апатией). Я выбрал четвёртый – выключил звук и поехал по памяти. В конце концов, какая разница, каким путём двигаться, если финальная точка всё равно офис. На светофоре рядом притормозила девушка на розовом «Мини Купере». На заднем стекле красовалась надпись: «Любовь – это когда он моет мою машину». Я скосил глаза на её заляпанный грязью бампер и подумал, что с любовью у неё, кажется, недавно случился перерыв. Стрелка тронулась, и через пару кварталов я наконец въехал на парковку. Моё место занимал чей-то велик с табличкой «Я экологичен, как ваши нереализованные мечты». Рядом стоял хипстер с такой густой бородой, что в ней можно было прятать запасные ключи. Я опустил стекло и поинтересовался: – Это ваше? – Нет, – ответил он с достоинством. – Это манифест.

***

В офисе пахло перегретым пластиком и вчерашними амбициями. Я плюхнулся в кресло, и оно жалобно скрипнуло, словно спрашивая: «Опять ты?» IDE загрузилась с пятой попытки. Я открыл вчерашний код. Строки смотрели на меня с немым укором, будто спрашивали: «И это всё, на что ты способен?» Комментарии предыдущего разработчика не оставляли сомнений:

text

// Магия, не трогать

// Здесь должно работать, но почему-то не работает

// FIXME: Когда-нибудь разобраться

Я вздохнул и полез в документацию. Документация, как обычно, устарела. Stack Overflow предлагал решения для похожей, но не идентичной проблемы. Гугл настойчиво спрашивал: «Возможно, вы имели в виду: как сменить профессию?» На часах было 9:17. До стендапа – тринадцать минут. Я сделал глоток из термокружки. Кофе, переживший поездку от дома до офиса, уже остыл и приобрёл лёгкий привкус безысходности.

***

Каждый день в 9:30 утра наша команда собиралась на виртуальный стендап – пятнадцатиминутный ритуал коллективного самообмана. Я всегда присоединялся ровно в 9:29:58, чтобы моя иконка появилась в Zoom последней, как нежеланный гость на вечеринке. – Ну что, начинаем? – голос Артёма, нашего тимлида, звучал так бодро, что было ясно: он либо выпил три чашки кофе, либо смирился с неизбежным. Его аватарка – фото с корпоратива, где он неестественно улыбался, – напоминала мне, что даже фальшивая улыбка когда-то заканчивается. Первой слово взяла Аня, фронтенд-разработчица: – У меня почти всё готово, осталось немного допилить анимации и получить фидбек от дизайнера. Её глаза на веб-камере нервно бегали из стороны в сторону, выдавая, что «немного допилить» на самом деле означает «переписать половину компонентов с нуля». Саша, бэкендер, скрестил руки на груди: – Я залил изменения на staging, жду, когда QA проверит. Мы все знали, что staging не работал уже неделю, а QA-инженер Виктор вчера ушёл на больничный с диагнозом «профессиональное выгорание». Макс, junior-разработчик, неуверенно пробормотал: – Я… в процессе изучения задачи. Его взгляд, полный животного ужаса, говорил, что «изучение задачи» пока сводилось к паническому гуглению «как стать фермером в Алтайском крае». Когда очередь дошла до меня, я глубоко вздохнул: – Разбираюсь с тем, почему метод getUserData() иногда возвращает null вместо объекта пользователя. Моя веб-камера в этот момент замылила изображение – не то технический глюк, не то метафора моего профессионального существования. Артём кивнул с видом шамана, пытающегося вылечить рак лёгких танцем с бубном: – Может, это не баг, а фича? Например, если пользователь – призрак? В чате тут же всплыло сообщение от продукт-менеджера: – Если это фича, надо задокументировать в API! Клиенты любят мистику! Я медленно закрыл глаза и представил, как пишу в документации:

text

/**

* Возвращает данные пользователя

* @returns {User | null} Объект пользователя или null, если пользователь – призрак

*/

– Ещё вопросы? – спросил Артём с наигранной бодростью. Молчание в ответ было таким громким, что его можно было бы записать на плёнку и продавать как ASMR для страдающих бессонницей. – Тогда всем продуктивного дня! – заключил он фальшиво-жизнерадостным тоном, которым обычно говорят «держитесь там» пассажирам тонущего парома. Квадратики с лицами исчезали один за другим. Я остался последним, глядя на своё отражение в чёрном прямоугольнике выключенной камеры. Мой взгляд спрашивал: «Какого чёрта?» Мой ответ – пожимал плечами. Прежде чем выйти из конференции, я заметил, что забыл выключить микрофон. Последнее, что услышала команда перед тем, как я нажал «Leave meeting» – это мой глубокий, полный экзистенциальной усталости вздох. На часах было 9:43. Следующий стендап – через 23 часа 47 минут. Но кто считал?

***

Slack вспыхнул красной иконкой непрочитанных сообщений, как предупреждение о радиационной опасности. Первое же сообщение в общем чате заставило мои пальцы замереть над клавиатурой: @Дима Почему падает прод? Клиенты в панике!!! – это был Алексей из саппорта, человек, чей уровень стресса можно измерять в банановых эквивалентах. Я взглянул на часы – 11:03. Раньше обычного. Обычно прод начинал падать после обеда, когда все уже успевали забыть, как выглядит их код. Но сегодня система решила начать праздник пораньше. @Дима Ну что там? – появилось новое сообщение через сорок семь секунд. Алексей явно сидел, уставившись в экран, обновляя страницу, как голодный кот у миски. Я открыл Kibana. Логи напоминали сценарий фильма ужасов:

text

ERROR [2024-04-15 9:58:23] NullPointerException: Cannot invoke "User.getSoul()" because "user" is null

– Отлично, – пробормотал я. – Теперь у нас есть научное подтверждение, что у пользователей нет души. @Дима Клиент SC-441 в ярости! Они теряют деньги! – Алексей явно перешёл в режим паники. Его сообщения выглядели так, будто их писал перегретый телеграфный аппарат. Я принялся лихорадочно пролистывать историю коммитов. Последнее изменение было внесено вчера в 18:30 – прямо перед тем, как я ушёл, мечтая забыть о работе хотя бы на ночь. Комментарий к коммиту гласил: фикс NPE Ирония была настолько густой, что её можно было резать ножом. Я мысленно поставил памятник себе вчерашнему: «Здесь лежит человек, который думал, что починил проблему с NullPointerException». В чате всплывали новые сообщения: «Может откатить?» – предложил кто-то разумный. «Нельзя! Там критичный фикс для SC-228!» – парировал Артём. «SC-441 говорит, что подаёт в суд» – доложил Алексей, явно наслаждаясь хаосом. Я открыл IDE. Пальцы замерли над клавиатурой. В этот момент пришло личное сообщение от QA Виктора, который формально был на больничном, но, видимо, не мог удержаться от шоу: «Смешно, да? 😆» Я не ответил. Вместо этого я начал писать код. Не знаю, можно ли было назвать это кодом – скорее, что-то среднее между заклинанием и молитвой:

java

try {

user.getSoul().getMeaningOfLife();

} catch (NullPointerException e) {

// Если у пользователя нет души, просто притворимся, что всё ок

return new Soul().setMeaningOfLife(42);

}

Я сделал коммит с сообщением горячий фикс, что в переводе с корпоративного означало «я понятия не имею, что делаю, но давайте попробуем». «Фикс будет через 5 минут», – написал я в чат, добавив смайлик с улыбкой. Смайлик лгал. Я не улыбался. Через три минуты пришло сообщение от CI/CD: Build failed. Я забыл точку с запятой. В этот момент я понял, что ад – это не метафора. Ад – это когда ты торопишься починить продакшен, а твой код не компилируется из-за синтаксической ошибки, и весь Slack смотрит на тебя. «Всё ок?» – спросил Артём. Я представил, как беру ноутбук, открываю окно и аккуратно, двумя руками, выпускаю его в свободный полёт. Вместо этого я поставил точку с запятой и запушил изменения снова. «Готово», – написал я, когда продакшен поднялся. В душе я уже составлял заявление об уходе. Через минуту пришло сообщение: «SC-441 говорит спасибо, инцидент исчерпан» Никто не спросил, что было не так. Никто не сказал «хорошая работа». Чат просто умер, как будто ничего не произошло. Я остался один на один с экраном, на котором теперь безмятежно работал прод. На часах было 11:47. До следующего падения продакшена оставалось примерно четыре часа. Я откинулся на спинку кресла и задумался о том, что, возможно, в следующей жизни стану плотником. Или камнем.

***

Я вышел из офиса в обед, и первое, что бросилось в глаза – рекламный щит с надписью: «Успей купить – осталось мало!» – Жизнь – тоже что-то, чего осталось мало, но почему-то никто не торопится, – пробормотал я, закуривая у входа. Дорога до ближайшей забегаловки лежала через парк. На скамейке кто-то оставил газету с заголовком: «Эксперты говорят: нужно работать больше!» – Эксперты явно не пробовали работать, – сообщил я спинке скамейки, перешагивая через бордюр. На асфальте мелом было выведено: «Люби жизнь!» Я перешагнул через надпись, чувствуя, что инструкция неясна. В кафе висела табличка: «У нас вкусно, как у мамы!» – но бутерброд, который мне принесли, по консистенции напоминал мокрый картон. Я сидел у окна, жевал и смотрел на плакат напротив: «Ты можешь всё!» – и мысленно дописывал: «Но зачем?» За соседним столиком девушка что-то строчила в блокноте. На обложке красовалось: «Мечтай! Действуй! Достигай!» Я машинально завершил фразу в голове: «А потом умри». Кофе был горьким. Как осознание того, что через полчаса надо возвращаться в офис. Я допил до дна и увидел на внутренней стороне чашки: «Жди перемен!» Вспомнилась песня, но сердце – всего лишь мышца, а перемены – миф. На выходе из кафе я заметил наклейку на урне: «Спасибо, что не мусоришь!» – и чуть не ответил вслух: «Спасибо, что не живу». По пути обратно я прошёл мимо билборда: «Будь лучше, чем вчера!» Вчера я вообще не выходил из дома. Над дверью офиса висел корпоративный плакат: «Ты – часть команды!» Я мысленно вздохнул: «Команды неудачников» – и приложил пропуск к турникету. Турникет щёлкнул, пропуская меня обратно. На часах было 13:17. До конца рабочего дня оставалось пять часов сорок три минуты. «Время – иллюзия, – подумал я, шагая к своему рабочему месту. – Обед – тем более».

***

Монитор мерцал в полутьме офиса, как угасающая звезда. Последние лучи солнца пробивались сквозь жалюзи, рисуя на стене полосатые тюремные решётки. Я закрыл Jira, оставив три «критических» бага, четыре «срочных» задачи и один тикет с пометкой «Дима, это на тебя» на завтра. «Всё равно никто их сегодня проверять не будет», – подумал я, но на всякий случай перевёл все в статус «В работе». Корпоративная привычка врать о прогрессе оказалась сильнее меня. В Slack всплыло новое сообщение: @Дима Ты скинешь отчёт по задачам? – Артём явно задержался на работе, чтобы спросить об этом ровно в 18:01. Я глянул на часы – 18:02. Двадцать восемь секунд опоздания. Достаточно, чтобы почувствовать вину, но недостаточно, чтобы извиниться. «Да, сейчас», – ответил я, хотя отчёт лежал готовым ещё с обеда. Подожду ещё пять минут – пусть поволнуется. Мой взгляд упал на стикер, прилепленный к монитору: «Ты можешь больше!» Кто-то из HR оставил его во время последнего тимбилдинга. Я дописал снизу: «Но зачем?» – и отправил в урну. Скрипнула дверь. В офисе появился уборщик дядя Вася – единственный человек в этом здании, чья работа имела видимый результат. – Ты ещё здесь? – спросил он, начиная подметать. – К сожалению. – Ну держись. Он выключил свет в дальнем конце зала. Мы играли в эту игру каждый вечер: он выключал свет постепенно, давая мне понять, что пора уходить, а я делал вид, что не замечаю. Я закрыл ноутбук. На мгновение в тёмном экране отразилось моё лицо – усталое, с красными от напряжения глазами. «Отчёт в приложении», – наконец отправил я Артёму и тут же получил ответ: «Спасибо! Завтра в 9:30 стендап, не опаздывай!» Я фыркнул. Завтра. Как будто завтра что-то изменится. Телефон в кармане завибрировал. Напоминание, что на завтра назначен сеанс у Ольги Сергеевны на 19:00.

***

Я вышел на улицу. Ночь встретила меня фразой на рекламном билборде: «Новый день – новые возможности!» – И те же самые проблемы, – пробормотал я, натягивая воротник куртки повыше. Моя «Лада» стояла на парковке. На капоте кто-то (скорее всего я вчера) дописал мелом:

text

// TODO: Починить жизнь

Ниже кто-то (скорее всего я сегодня утром) приписал:

text

// FIXME: Или хотя бы перезагрузить

Я сел за руль, повернул ключ. Двигатель кашлянул, но завёлся – верный товарищ в этом бессмысленном пути. Навигатор снова предложил три маршрута: быстрый, без пробок и экономичный. Я выбрал четвёртый – выключил его и поехал наугад. По радио играла песня: «We are the champions…» Я переключил волну: «…hello darkness, my old friend…» – Вот это уже теплее, – пробормотал я. На светофоре зацепился взглядом за свежее граффити на стене: «Счастье не за горами. Но и горы не близко». Рядом кто-то приписал баллончиком: «А счастье вообще не в курсе, что мы его ждём». Я усмехнулся. Может, завтра действительно будет лучше. А может, и нет. Но сегодня я хотя бы ехал домой. На часах было 19:38. До следующего утра оставалось одиннадцать часов двадцать две минуты. – Время – понятие относительное, – вспомнил я, сворачивая к дому. – Как и счастье.

***

Я стоял под дверью квартиры, ключ замер на полпути к замку. На стене лифта кто-то вывел маркером: «Твоя жизнь – не баг, а фича». А ниже, тем же маркером, но другим почерком: «Тогда почему её всё время хочется откатить?» Дверь скрипнула, будто спрашивая: «Ну и где ты шлялся?» Квартира встретила меня мерцающей лампочкой в прихожей (азбука Морзе: «поменяй меня»), холодильником, гудящим похоронный марш, и грустным кактусом на подоконнике, который, кажется, перестал колоться от безысходности. Я бросил ключи в миску, где они легли рядом с тремя чеками из аптеки: снотворное, витамины, пластырь – стандартный набор выживальщика. На микроволновке по-прежнему мигало «00:00». Раскрыл ноутбук. Slack по привычке дёрнулся уведомлением: «@here Кто-то забыл выключить свет в кухне!» Я закрыл вкладку. Открыл новую. Набрал в Google: «Как перестать видеть цитаты во всём?» Выдача предложила: Статью про обсессивно-компульсивное расстройство. Книгу «Когнитивно-поведенческая терапия за 21 день». Форум с темой: «Брат постоянно говорит цитатами, как убить?» Холодильник выдавил из себя банку пива – последнюю. На этикетке красовалось: «Открой новый вкус!» Я приложил холодное стекло ко лбу. Новый или нет, а всё равно горький. По телевизору шли новости. Бегущая строка гласила: «Эксперты советуют мыслить позитивно!» И в тот же момент диктор произнёс: «Число увольнений в IT-секторе выросло на тридцать процентов».

***

Душ пытался смыть с меня этот день. Шампунь почему-то пах офисным кофе. На запотевшем зеркале я машинально написал пальцем: «Ты – не то, что о тебе думают». А затем стёр полотенцем и прошептал: «Скорее уж – не думают». Потянулся за снотворным. На упаковке: «Не превышайте дозировку!» Я высыпал на ладонь ровно одну таблетку и зачем-то посмотрел на неё с укоризной. Потолок. Темнота. Тишина. – Бытие определяет сознание, – шепчет мне мозг. – А зарплата – бытие, – отвечаю я. Сосед сверху начинает сверлить. Стена передаёт вибрацией: Тук-тук-тук – «Я мыслю». Тук-тук-тук – «Следовательно существую». Тук-тук-ТЫК – «Но лучше бы не существовал». Напоминание на телефоне издевательски пискнуло: «Пора спать. 6:30 – Подъём! Новый день – новые возможности!» Я нажимаю «Отложить». За окном проезжает грузовик. На его борту светится: «Мечтай! Действуй! Достигай!» Он сворачивает за угол, и надпись гаснет. На часах 01:17. До следующего стендапа – 8 часов 13 минут. До следующего падения продакшена – около 9 часов. До сеанса с Ольгой Сергеевной – 12 часов 43 минуты. Я закрываю глаза. – Утро вечера мудренее, – говорит последняя мысль перед сном. – Но не факт, – успеваю я подумать в ответ. Темнота. Тишина. На часах – бесконечность.
6 Нравится 24 Отзывы 1 В сборник
Отзывы (2)