Статьи

Как программисту (не) выгореть?

Я много лет работаю программистом, и наблюдаю, как мои коллеги систематически выгорают. Компании нанимают психологов, люди сами записываются на терапию. Некоторым это даже помогает. Один раз. Проходит время, и ситуация повторяется. 

Общий ритм и массовость проблемы натолкнули меня на мысль, что дело не в «приступах выгорания» или однократной усталости, а в общих стресс-факторах, которые влияют на работников и выбивают их из строя. Что это за факторы? Я провел небольшое исследование и обнаружил, чтó именно в самочувствии работника, помимо усталости, приводит к отказам, и какие факторы среды делают ситуацию хуже.

Роман Зайруллин – практикующий разработчик ПО и консультант в сфере IT. Автор двух книг о разработке и проектировании софта. Полинерд. 

г. Санкт-Петербург, Россия ВКонтакте: vk.com/krosenmann

Программист – массовая профессия

На 2023 год, в мире работает порядка 27,7 млн разработчиков ПО, и по оценке Qubit Labs, уже в следующем году их число увеличится еще на 1 млн новоиспеченных программистов (см. рис. 1). [1]

Рис. 1. График Qubit Labs
Рис. 1. График Qubit Labs

Это делает частные проблемы, которые мы рассмотрим, действительно массовыми и оказывающими социальный эффект.

Утомление и самобичевание

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

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

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

Экстремальный вариант цикла «утомление – самобичевание» выглядит следующим образом.

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

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

Точка 3. Решение нужно принять хоть какое-то и сделать хоть что-то. Время идет — приходит тревожность и чувство вины. С ними усиливается прокрастинация, которая срабатывает как катализатор.

Точка 4. Программист доделывает работу впопыхах, как получится. Качество решения отвратительное, и программист это понимает. Самооценка начинает падать. Появляется неуверенность в своих силах и возможностях.

Точка 5. Неуверенность подпитывает тревогу, мешает принять технические решения.

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

Программист не «падает» в этот цикл сразу и полностью. Ряд исследований [2, 3, 4], как и результаты моих опросов, показывают, что программисты начинают сталкиваться с точечными проблемами.

Порядок возникновения может быть произвольным, как и причины, будь то ошибки менеджмента, коллег или сиюминутная невнимательность самогó программиста. 

Специалисты, с которыми я разговаривал, указывают, что разовые проблемы с принятием технических решений или неспособностью «здесь и сейчас» решить сложную техническую задачу не сказываются на них глобально, если «...развлечься или отдохнуть. Например, сходить на выходных на картинг или стрельбище – тогда в понедельник работаешь со свежей головой…».

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

С накоплением проблем разовые эмоциональные разрядки и яркие впечатления (тот самый картинг или стрельбище) перестают помогать, как раньше, поскольку имеют краткосрочный эффект. [5] 

К чему приводит прохождение по циклу

На дистанции, если постоянно попадать в этот цикл, ухудшается ментальное и физическое самочувствие. Появляются гневливость, проблемы в общении с коллегами. Человек «забивается» в берлогу и отказывается от любых коммуникаций. Общение на рабочие темы вызывает негативные переживания, вплоть до истерик. К этому прибавляются вялое общее состояние, низкий тонус.

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

Эти признаки могут оставаться и после того, как цикл по какой-то внешней причине разорвался, например, после увольнения. 

«Красный флаг», который указывает, что процесс уже зашел далеко и это не разовое «да я просто устал», — когда программист без видимой причины на недели и месяцы забывает о своих хобби, привычных приятных занятиях и т.д. Например, активные любители видеоигр, когда аврал прошел и рабочая загрузка вернулась к норме, хотят запустить что-нибудь и от души поиграть, но приставка/компьютер продолжают пылиться месяц и более: «Хочу — но почему-то не могу».

Наверняка, этот фактор – не единственный. Однако, как говорят партнеры «зацикленных» айтишников, поймавших вышеописанные эффекты, «...тогда стало понятно, что что-то ДЕЙСТВИТЕЛЬНО идет не так и надо провериться…» Как распознать это раньше, мне пока неизвестно.

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

В примере ниже мы можем видеть достаточно типовые переживания программиста, с некоторым «но».

ПРИМЕР 1. I am incredibly critical of my work, and have self-diagnosed myself with having Impostor Syndrome, this general means that I have entire projects that I have created and then deleted because it is not good enough and I am constantly paranoid that any team I am part of see me as the dummy of the group.

I sometimes can't bring myself to perform work outside of my 9–5, I have emails that sometimes sit for days because I can't physically bring myself to write the one line reply that is needed, yet other tasks I could take on without a bother. I am sure this is pretty frustrating for people that can't see work happening on their project but see me working on other stuff.

I don't enjoy coding for large periods of the time, I need to force myself to remember it is the illness that is stopping me from enjoying anything and not the coding (when I am 'up' I enjoy the hell out of it).

When I am 'up' I feel like I could take on anything, and as a result I will often over-commit to stuff, the challenge is to say no.

Источник: A quick post about depression and software development. (URL: tosbourn.com/a-quick-post-about-depression-and-software-development; 01.09.2023.)

Чувство вины за низкую продуктивность, синдром самозванца — подобное испытывают (или испытывали в прошлом) практически все опрошенные мною программисты. Они списывали на свои проблемы на выгорание, что часто оказывалось так. «Но» здесь заключается в том, что автору текста диагностировали депрессию. Один из респондентов, с тем же диагнозом, рассказал, что пробыл в подобном состоянии около двух лет, прежде чем добрался до врача и смог получить необходимую помощь.

Стресс-факторы: катализаторы и провокаторы цикла

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

1. Перегруженный план работ.

2. Сложные задачи. По отзывам респондентов, это лотерея. Хотя в процессе поиска решения наблюдается тревога и она утомляет, но когда все-таки получается закончить — она исчезает. Однако, когда такие задачи идут потоком и подряд, создается ощущение, будто завяз в болоте, которому нет конца и края.

3. Ненаблюдаемые результаты. Снова эффект болота, но из-за следующего фактора: «Мы что-то делаем уже полгода, но не понимаем что и зачем, а задачи как будто не убывают».

4. Нехватка компетенций. Чаще всего репортится в контексте «а вот новый продукт, с которым мы работаем, и надо сделать то, чего я не умею». Но по наблюдениям, более ощутимый эффект оказывает, когда надо решить комплексную задачу, которую до этого программист ни разу не решал самостоятельно.

5. Нудные задачи. Особенно отмечают написание бойлерплейта (бывают такие задачи, где программисту надо просто сидеть и вписывать имена функций в нужные места в нужной форме — это как раз оно) и документирование.

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

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

У младших сотрудников эти стресс-факторы резко негативно влияют на эмоциональное состояние, даже не объединяясь в кластеры. [6]

Есть некоторая надежда, что эти эффекты управляемы и можно каким-то образом снизить их влияние. Ответа «как?» для всех случаев у меня нет.

Послесловие

Обратите также внимание на стресс-факторы, они достаточно легко «отрываются» от программистского контекста, и скорее всего с ними сталкиваются работники других интеллектуальных профессий. Что делает проблему еще более массовой, чем я утверждал изначально.

Чтобы распознать переносимость стресс-факторов, нужно будет переформулировать некоторые пункты под профессию. Например, для художника в геймдеве «ненаблюдаемые результаты» можно попробовать рассмотреть как «художник рисует, но не видит, как его работа применяется в конечном продукте» (хотя и не настаиваю на такой формулировке).

Вместо четких выводов, я оставлю задачи и проблемы, которые нужно решить:

  • Как уменьшить воздействие стресс-факторов?
  • Как быстро выводить людей, упавших в «цикл»?
  • Как переработать «цикл» и список стресс-факторов в диагностический инструмент?

Поддержите проект «АПОРОН», приобретая сборник материалов первой конференции – в электронном или в печатном виде. 

Примечания к статье

[1] How Many Programmers are there in the World and in the US? [2023] (URL: qubit-labs.com/how-many-programmers-in-the-world; 01.09.2023.)

[2] D. Graziotin, F. Fagerholm, X. Wang, P. Abrahamsson. Consequences of Unhappiness While Developing Software. (URL: arxiv.org/pdf/1701.05789.pdf; 01.09.2023.)

[3] D. Graziotin, F. Fagerholm, X. Wang, P. Abrahamsson. What happens when software developers are (un)happy. (URL: sciencedirect.com/science/article/pii/S0164121218300323; 01.09.2023.)

[4] D. Girardi, F. Lanubile, N. Novielli, A. Serebrenik. Emotions and Perceived Productivity of Software Developers at the Workplace. IEEE Transactions on Software Engineering. Vol. 48. No. 9. PP. 3326-3341.

[5] А.И. Щербаков. Избежать выгорания. — LIVREZON, 2022. (URL: livrezon.com/shop/product/izbezhat-vygoraniya). – АНТИ-стратегия 5. Отпуск и саббатикал.

[6] R. Palacio, G. Cordova, L. A. Castro, G. Borrego. Profession-centric measures and indicators for occupational stress: An empirical study with novice software developers in Mexico. (URL: ietresearch.onlinelibrary.wiley.com/doi/10.1049/sfw2.12059; 01.09.2023.)

Полезные материалы