Постмортем моего выгорания: почти половина моей работы ушла в корзину, а я полтора года искала баг в себе


В октябре прошлого года я расплакалась из-за упавшего линтера. В ямлике был лишний пробел, пайплайн покраснел, я посмотрела на красный крестик и минут пять не могла остановиться, хотя прекрасно понимала, что пробел удаляется за три секунды. Это был мой удаленный день, дома никого не было, так что никто ничего не увидел, и это, наверное, самое показательное во всей истории: к тому моменту я уже почти год очень старательно делала так, чтобы никто ничего не видел.
В прошлой статье про тимлидов я мимоходом написала, что ушла из продуктовой компании на фриланс, и в личке меня несколько раз спросили, почему на самом деле. Про предложение стать лидом там все правда, только к январю оно упало на почву, которая полтора года готовилась сама, и у этого процесса есть очень заезженное название, выгорание. Писать про него мне долго не хотелось как раз из-за заезженности: обычно про выгорание пишут психологи или люди, которые продают курсы по восстановлению ресурса. Я бэкенд-разработчица и привыкла разбирать инциденты, поэтому и это разберу как инцидент, и обязательно с рассказом про то, как я раза четыре подряд чинила не то.
Как это выглядело изнутри
Начало я не могу привязать даже к месяцу. Где-то в начале 2025-го я заметила, что по воскресеньям после шести вечера у меня портится настроение, и списала это на то, что выходные кончаются, а такое вроде бы бывает у всех. Потом воскресная тоска стала приходить в субботу вечером, а к лету у нее появилось физическое измерение в виде ноющего желудка, который гастроэнтеролог добросовестно обследовал и ничего не нашел. Я начала просыпаться в пять утра с мыслью про незакрытый тикет и перестала читать Хабр, каналы про бэкенд и вообще все, где встречалось слово «горутина», хотя раньше делала это с удовольствием и по своей воле. На ревью я стала писать короче и злее и однажды оставила джуну комментарий «ну это же очевидно», за который мне стыдно до сих пор. На следующий день я пошла извиняться, а он удивился, потому что даже не успел обидеться, и от этого почему-то стало еще хуже.
При этом на встречах один на один на вопрос «как ты» я отвечала «нормально», и формально это было правдой. Задачи закрывались, сроки не срывались, и снаружи все выглядело как у обычного работающего разработчика, у которого просто немного испортился характер.
Самым неприятным во всем этом было ощущение, что жаловаться мне не на что. Зарплата в рынке, команда хорошая, на меня никто не орет, переработок почти нет, ДМС, гибрид, печеньки на кухне. Когда у тебя все это есть и тебе при этом плохо, в голову первым делом приходит, что проблема в тебе и ты просто зажралась разучилась радоваться хорошему. Эту мысль я жевала примерно год, и она оказалась самой дорогой ошибкой, потому что из нее следовало, что чинить надо меня.
Уже задним числом я полезла смотреть, как выгорание вообще определяется, и выяснила, что в МКБ-11 оно есть под кодом QD85. Лежит оно в разделе про факторы, влияющие на здоровье, и болезнью формально не считается. Определение там сухое и сводится к трем вещам: истощение, растущая дистанция от своей работы вместе с цинизмом по отношению к ней и падение профессиональной эффективности. Я узнала себя во всех трех, причем примерно в том порядке, в котором они там перечислены. Еще в определении есть деталь, которая мне потом очень пригодилась: термин относится только к работе, и растягивать его на остальные области жизни не положено.
Метрика, которую я не собиралась собирать
Чтобы дальше было на что опираться, сразу покажу цифры, хотя посчитала я их сильно позже, в феврале, когда уже собиралась уходить. Перед сдачей ноутбука я полезла в гитлаб смотреть коммиты Максима (про это была прошлая статья) и заодно, из того же любопытства, посмотрела на себя.
Нюанс в том, что у меня zsh с EXTENDED_HISTORY, который пишет время каждой команды, и история копилась все три года. А в 2023-м я поставила себе ActivityWatch, чтобы понять, куда уходит день, благополучно про него забыла, и он все это время молча писал в свою базу, когда я сидела за компом. Если сопоставить одно с другим, получается время от момента, когда я села за ноутбук, до первой команды в терминале.
# zsh с EXTENDED_HISTORY пишет строки вида ": 1698765432:0;git pull"
# вытаскиваем первую команду за каждый день
awk -F'[:;]' '/^: [0-9]+:/ {print $2+0}' ~/.zsh_history \
| xargs -I{} date -r {} '+%F %H:%M' \
| sort | awk '!seen[$1]++' # после сортировки первая строка за дату и есть самая ранняяКод условный, со сшивкой с ActivityWatch и часовыми поясами пришлось повозиться отдельно.
Метрика кривая, первой командой у меня почти всегда был git pull, который я набираю рефлекторно, как некоторые люди утром тянутся к чайнику. Но именно поэтому она неплохо показывает, сколько времени я не могла заставить себя даже на рефлекторное действие. Дни с утренними созвонами длиннее часа я выкинула. В 2023-м медиана была около сорока минут, и это вместе с кофе и стендапом. Во втором полугодии 2025-го она доросла до двух часов пятидесяти минут, то есть почти треть рабочего дня я проводила перед открытым ноутбуком, листая что угодно, кроме работы, и тихо себя за это ненавидя.
Гипотеза первая: я просто разленилась
Раз проблема во мне, значит, мне не хватает дисциплины, рассуждала я в начале 2025-го, и взялась за дисциплину так, как умеет разработчик, то есть с инструментами. Поставила помидорный таймер и блокировщик сайтов, а в Notion завела трекер привычек с чекбоксом на каждый день.
Трекер прожил девятнадцать дней, после чего превратился в еще одну вещь, перед которой мне было стыдно, потому что пустые чекбоксы смотрели на меня каждое утро. Блокировщик я снесла через терминал на второй неделе, и тут надо признать, что блокировщик, который разработчик может снести из терминала, защищает ровно от тех, кто не умеет пользоваться терминалом. А медиана за те полтора месяца, когда я жила по помидорам, не сдвинулась вообще, я потом отдельно проверила этот отрезок.
Гипотеза вторая: переработки
Может, я просто много работаю, это же самое очевидное объяснение, правда, и именно его первым делом предлагают все подряд, от мамы до руководителя?
Проверить это было проще всего: весной 2025-го я прикинула часы по календарю и времени коммитов, а в феврале перепроверила по ActivityWatch, и цифры сошлись. Средняя длина рабочего дня в 2023-м вышла 8 часов 40 минут, а в 2025-м 8 часов 35 минут, то есть в пределах шума. Коммитов после девяти вечера в 2023-м было заметно больше, потому что я тогда любила писать код поздно, когда все затихнут, а в 2025-м их почти не было. Получается, по часам 2025-й был даже спокойнее, и если бы выгорание считалось в часах, гореть я должна была бы в 2023-м, когда мне было хорошо.
Вы пробовали выключить и включить?
Раз лень и часы отпали, оставалась версия, что я просто устала от конкретного места и мне нужно сменить обстановку. Весной 2025-го я перешла в другую команду внутри компании, с другим доменом и другими людьми, и заходила туда по тому самому онбордингу Максима, который действительно сокращает вход вдвое, подтверждаю второй раз. Первые недели все было интересно: новая кодовая база, новые люди, новые непонятные легаси-решения, в которых хочется разобраться. К июню медиана вернулась туда, где была до перехода.
В августе я взяла отпуск на две недели и уехала в горы отдыхать перезагружаться, без ноутбука. Первые ряды, наверное, уже догадались, чем это кончилось. После отпуска девять рабочих дней медиана держалась около часа, а на десятый день я снова обнаружила себя в половине первого перед нетронутым терминалом.
Если нарисовать это на графике, получается картинка, знакомая любому, кто хоть раз дежурил: сервис с утечкой памяти, который перезапускают по крону. После рестарта потребление падает, потом ползет вверх с той же скоростью, и чем чаще перезапускаешь, тем дольше можно делать вид, что все в порядке. Каждый дежурный знает, что рестарт по крону лечит симптом и отлично маскирует причину, и мне понадобилось полтора года, чтобы применить это знание к себе. Смена команды оказалась рестартом побольше, отпуск рестартом поменьше, а утечка все это время спокойно продолжала течь где-то в другом месте.
Разговор, после которого я полезла в джиру
После истории с линтером я все-таки пошла к психотерапевту. ДМС психотерапию не покрывал, так что платила сама, и первые две встречи ушли на то, чтобы проверить, нет ли у меня депрессии. Мне дали опросники, среди них PHQ-9, и много спрашивали про жизнь вне работы, и тут пригодилась та деталь из определения ВОЗ. Выгорание по определению сидит в работе, депрессия расползается на все остальное, лечат их по-разному, и поэтому отличать одно от другого нужно первым делом, причем делать это должен врач, который видит вас живьем. У меня выходные были нормальными ровно до воскресного вечера, скалодром радовал, книжки читались, еда была вкусной, и в итоге картина сдвинулась в сторону выгорания.
На третьей встрече она спросила, когда я в последний раз видела, что моей работой кто-то пользуется. Я открыла рот, чтобы ответить, и поняла, что не помню, вот блин, вообще не помню. Самое свежее, что удалось откопать в памяти, была выгрузка отчетов в CSV весной 2024-го, после которой бухгалтерия одного из клиентов написала в поддержку «спасибо, наконец-то», и поддержка переслала это к нам в чат. Скриншот этого сообщения у меня, как выяснилось, до сих пор лежит в избранном в телеге, и за полтора года рядом с ним так ничего и не появилось.
Терапия сама по себе меня не вылечила, и мне не хочется, чтобы из текста это так прочиталось. Встреч было восемь, и главное, что они сделали, это сняли стыд: я перестала считать себя лентяйкой, которая зажралась, и у меня наконец освободилась голова, чтобы посмотреть на проблему как на инцидент.
Сизиф и стори поинты
В феврале, в тот же вечер, когда я считала медиану, я выгрузила из джиры все свои закрытые задачи с 2023 года (assignee = currentUser() AND resolved >= 2023-01-01, ничего хитрого) и решила для каждой проверить, дожил ли результат до живого пользователя. В корзину я записывала задачу, если код так и не доехал до людей или доехал и был выключен в течение квартала: фича-флаг, который так и не включили, мердж-реквест, закрытый без мерджа после очередного перепланирования, фича, которую откатили вместе со сменой приоритетов. Связи между джирой и админкой флагов у нас не было никакой, поэтому дальше я два вечера руками сверяла каждую задачу с флагами и историей релизов. Это были, наверное, самые продуктивные два вечера за весь предыдущий год, что само по себе о многом говорит.
Период | Закрыто задач | Ушло в корзину | Медиана «села за ноут → первая команда» |
|---|---|---|---|
2023 (с февраля) | 97 | 12 (12%) | 40 мин |
2024 | 104 | 21 (20%) | 55 мин |
2025, первое полугодие | 62 | 19 (31%) | 1 ч 35 мин |
2025, второе полугодие | 56 | 32 (57%) | 2 ч 50 мин |
Таблица, конечно, кривая, потому что человек в выборке один, задачи разного размера, по стори поинтам картина примерно та же, но стори поинты у нас сами по себе величина мистическая, и корреляция, как мы все помним, ничего не доказывает. Но за 2025 год в корзину ушла почти ПОЛОВИНА того, что я сделала, 51 задача из 118, и кривая этой доли повторяет кривую моей медианы так точно, что мне стало не по себе. Фраза «отложим до лучших времен» встретилась в комментариях к моим задачам 23 раза, я проверила поиском, и лучшие времена не наступили ни для одной из них.
Перепланирование раз в шесть недель, про которое я писала в прошлый раз, у нас завели в конце 2024-го, а во втором полугодии 2025-го к нему добавились фриз найма и два внеплановых перепланирования сверху, и в таблице это видно без всякой статистики. Сизифа, говорят, следует представлять себе счастливым, но Сизифу, если подумать, еще повезло: камень у него все время один и тот же, гора одна, и никто не переносит ее раз в шесть недель на другое место, пока камень на полпути.
Шесть мест, где может течь
С этой таблицей на руках я пошла читать людей, которые занимаются выгоранием профессионально, и нашла модель Кристины Маслач и Майкла Лейтера. Маслач изучает выгорание с семидесятых, и ее опросником его меряют до сих пор. В их модели выгорание растет из несоответствия между человеком и работой в одной из шести зон: нагрузка, контроль, вознаграждение, сообщество, справедливость и ценности. Смотрите: нагрузку я проверила, и она была нормальной, с вознаграждением тоже все было в порядке, а сообщество я сменила вместе с командой, и это помогло ненадолго, потому что люди были ни при чем. Все, что я проверяла полтора года, лежало в первой зоне из шести, а текло у меня в контроле и в ценностях. Примерно так ищут тормоза в процессоре, когда сервис на самом деле упирается в диск: оптимизировать циклы можно долго, и графики CPU будут становиться все красивее.
Контроль тут очень конкретный: я никак не могла повлиять на то, доживет ли моя работа до людей, и о ее судьбе обычно узнавала последней, из админки флагов, недели через три после того, как решение приняли на планировании, где меня не было. Ценности в моем случае совсем простые: мне нравится делать штуки, которыми кто-то пользуется, и ради этого я вообще пошла в разработку. В прошлой статье я писала, что разработчик живет на короткой обратной связи и что у тимлида она пропадает. Так вот, у рядового разработчика ее тоже можно отключить, и для этого даже не нужно никого повышать. Представьте, что компилятор молча выкидывает половину ваших файлов, а вы узнаете об этом через полтора месяца на планировании, причем в формулировке «приоритеты поменялись». Поработайте так год и посмотрите, сколько вам понадобится времени, чтобы набрать утром git pull.
Заодно стало понятно, почему на январское «через полгодика можем думать про лид» моей первой мыслью было «значит, у меня полгода». Мне предлагали перейти туда, где обратной связи нет по определению, из места, где ее и так почти не осталось.
Баг воспроизводится
Руководителю я про все это так и не рассказала, даже на прощальной встрече, где он спросил, что можно было сделать иначе, и я ответила что-то вежливое про интересные задачи на фрилансе. В марте я взяла первый контракт, и дальше про то, что из этого вышло. За полгода медиана по той же методике (ActivityWatch я, конечно, поставила заново уже на свой ноутбук) держится около двадцати пяти минут. Из примерно сорока задач в корзину ушла одна, и про нее стоит рассказать отдельно.
В июле один из постоянных заказчиков выкинул интеграцию, которую я делала три недели, потому что партнер поменял условия и вся затея потеряла смысл. На следующее утро от ноутбука до первой команды прошло три часа десять минут, и я, честно говоря, почти обрадовалась, потому что это был первый за полтора года баг, который воспроизвелся по требованию. Потом я сделала то, чего ни разу не делала в продуктовой компании: позвонила заказчику и спросила, почему. Спросить там, в общем, было можно, но ответ всегда звучал как «приоритеты поменялись», и после пятого такого ответа спрашивать перестаешь. Заказчик минут двадцать объяснял на цифрах, что изменилось у партнера и во что обошлась бы интеграция при новых условиях, а в конце сказал, что код положат в отдельную ветку, потому что к этому партнеру они, скорее всего, еще вернутся. Через два дня утренние цифры вернулись к привычным двадцати с чем-то минутам.
Чем именно это отличалось, я до конца не знаю. Возможно, тем, что мне объяснили решение человеческими словами и с цифрами. Возможно, тем, что на фрилансе мне платят за часы и выкинутая интеграция финансово ничем не отличается от выкатанной, хотя зарплата в продуктовой компании от флагов тоже не зависела, так что это объяснение я бы не переоценивала. А возможно, я сейчас просто наблюдаю рестарт покрупнее, ведь после смены команды мне тоже два месяца было хорошо, прошло полгода, и утечка вполне может течь медленнее. Выборка тут из одного человека и одного июльского эпизода, и делать из нее выводы я бы не стала.
Зарабатываю я примерно столько же, если считать по хорошим месяцам, и заметно меньше, если считать как следует, а больничного у меня теперь нет вообще. Страшно мне бывает до сих пор, только теперь это страх про деньги, и с ним, как ни странно, жить проще, потому что у него есть понятная причина и понятный размер.
Что бы я сделала на месте компании
Компании, которой это можно предложить, у меня больше нет, но если это читает кто-то, кто отвечает за разработку, то самая дешевая вещь, которую я могу придумать, стоит час работы аналитика раз в квартал. Выгрузите каждому разработчику его задачи за квартал и напишите напротив каждой, жива она или нет и сколько людей ей пользуется, а для выкинутых добавьте по одному предложению с настоящей причиной. И если перепланирование раз в шесть недель неизбежно, говорите человеку, что его задача ушла в корзину, в тот же день, когда это решили, чтобы он не узнавал об этом через месяц из админки флагов. Пицца, дни ментального здоровья и подписка на медитации стоят дороже, и что-то мне подсказывает, что помогают они в лучшем случае как мой отпуск, то есть на девять рабочих дней.
Сама я теперь перед каждым новым контрактом задаю заказчику один вопрос: какая часть того, что вы заказывали разработчикам за последний год, сейчас работает у пользователей. Отвечают по-разному, но меня в основном интересует длина паузы перед ответом, и два предложения, где пауза тянулась секунд по десять, я уже вежливо отклонила.
KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.