Возможно, вы знаете таких программистов, которые никогда не сталкивались с такой практикой, как «дежурства». Я до определённого момента в своей карьере тоже, думал, что знаю такого (конкретно — себя). Но всему приходит своё время, и на одной из работ пришлось подежурить и мне. До того момента, я только слышал от других об их недовольстве дежурствами. Все рассказчики, как анекдот, повторяли одну и ту же историю про ночные звонки дежурному, который не может проснуться. Этой статьёй хочу добавить немного красок на холст, чтобы у соискателей стало немного больше понимания о том, что можно спросить на собеседовании и как можно интерпретировать ответы на эти вопросы.

Как я понимал «идеальное дежурство» програмиста, работающего 5 дней в неделю по 8 часов:

Вариант № 1:
Программист назначается «дежурным» на время с 9 до 18 (ну, или в те часы, когда он работает). Если какая‑то экстренная ситуация требует внимания дежурного за пределами рабочего времени, это время согласовывается с ним, фиксируется и оплачиваеся деньгами или отгулами (читаем ТК РФ).

Вариант № 2:
Программист назначается «дежурным» на «сутки через трое». т. е. работает 24 часа, а потом 72 часа отдыхает от работы (тоже соответствует ТК РФ).

Что должен делать дежурный программист на идеальном дежурстве:

1) Он следит за состоянием приложения (или нескольких), в разработке (поддержке) которых он участвует.

2) Если приложение перестаёт нормально работать, дежурный:

  • пробует устранить проблему (исправить что‑то, что он может оперативно исправить),

  • фиксирует симптомы неполадки (например, оформляет задачу на исправление ошибки),

  • привлекает к устранению проблемы тех, кто может помочь её быстро устранить.

3) Если это не мешает поддержанию работоспособности системы, дежурный может заниматься деплоем (да‑да, ещё не вымерли конторы, в которых деплой делается руками человека).

Чем должен быть обеспечен дежурный:

1) Конечным набором инструментов, с помощью которых он сможет выполнять свои обязанности (пищалки‑уведомлялки, дашборды, права доступа ко всему, к чему ему может понадобиться доступ).

2) Инструкциями о том, что делать в каждой нештатной ситуации, если такие уже случались ранее.

Чем не должен заниматься дежурный программист:

Если коротко — он не должен делать то, что напрямую не относится к обязанностям «пожарного»

1) Выполнять обязанности штатной техподдержки:

  • «У нас тут пользователь спрашивает, почему у него нет доступа к тому, к чему у него не должно быть доступа. Разберитесь, пожалуйста?»

  • «Мы тут хотим с вами интегрироваться. Расскажите, как это сделать?»

  • и т. п.

2) Выполнять обязанности девопс, тем более, если у него нет для этого ни инструментов, ни доступов.

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

4) Подменять собой автоматику. Если в инструкции написано что‑то вроде «при увеличении времени отклика — перезапустить приложение», то делать это должна автоматика, а не живой человек.

Как проходили мои дежурства:

1) Дежурный работал 24/7. Буквально, в течение недели дежурному нельзя было:

  • отвести/забрать ребёнка из садка, школы, спортивной секции, поликлиники,

  • вообще отходить от рабочего компьютера дальше, чем на расстояние, с которого он сможет добежать до него за 10 минут,

  • спать. Точнее, спать он может, но должен уметь в течение 10 минут проснуться по зову пищалки‑оповещалки,

  • есть. Смотрим правило про 10 минут,

  • в туалет и душ — тоже можно не дольше 10 минут.

Можно подумать, что преувеличиваю про спать, есть, туалет и душ. Но, когда я спрашивал про строгость соблюдения «правила 10 минут», то мне все, от начальника до коллег, на полном серьёзе утверждали, что «нарушать его нельзя».

2) Дежурный — это был и чтец, и жнец, и на дуде игрец. Он делал всё и за себя и за того парня, который вроде есть, но «занимается сегодня другими делами».

3) Время работы дежурного за пределами с 9 до 18 не оплачивалось, отгулы не предоставлялись.

4) Дежурный не был обесчпечен тем, что ему необходимо для выполнения своих обязанностей (инструменты, доступы, инструкции). Тут есть небольшое пояснение: если инструмент есть, но он не позволяет понять, что происходит или исправить ситуацию, то я считаю, что такого инструмента нет. Например:

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

  • если свистелка в одном месте, график — в другом, логи — в третьем, инструкция — в четвёртом, кнопки, которые нужно нажимать — в двадцатом, то это тоже не инструмент. Это аттракцион или цирк шапито. Знаете, такой стандартный цирковой номер, когда клоун пытается взять сразу несколько предметов, но не может, так как у него постоянно что‑то падает из рук. Вот это было очень похоже на наши «инструменты дежурного»,

  • если адрес у web UI инструмента непостоянный и зависит от релиза, активного пода, фазы Луны, то это тоже не инструмент. Потом что дежурный не найдёт его, когда он будет нужен и вынужден буду проделать 100 500 шагов из инструкции, чтобы от какой‑то начальной точки прийти к действующему URL этого инструмента,

  • инструкция «посмотреть список ошибок из 137 строк и на опыте на глазок прикинуть: не появились ли новые» (видимо, с последнего просмотра) — это не инструкция. Это, скорее, рецепт самоуспокоения (я сделал всё, что мог — «посмотрел на опыте»),

  • доступ к хосту без доступа к приложению — это не доступ. Хотя, я даже при наличии досупа, не рискнул бы лезть на хост, на котором крутится прод, если это не я настраивал те приложения, в работу которых сейчас нужно вмешаться и не понимаю на 100%, что именно нужно сделать.

5) У дежурного были, просто, тонны ручного труда. Десятки графиков, на которые нужно смотреть и сравнивать, слушать пищалки и читать инструкции и, в зависимости от их показателей и результатов сравнения, нажимать какие‑то кнопки. Всё это можно было автоматизировать и выполнять более эффективно, чем человек, разбуженный пищалкой в 3 часа ночи.

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

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

Комментарии (11)


  1. kuzzdra
    14.02.2025 09:09

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


  1. IVNSTN
    14.02.2025 09:09

    Этот стон у нас песней зовётся

    дежурства и должны быть такими

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


  1. sergey_prokofiev
    14.02.2025 09:09

    Проклятые буржуины придумали 3 уровня техподдержки, и никакой романтики:(


  1. unreal_undead2
    14.02.2025 09:09

    Он следит за состоянием приложения (или нескольких), в разработке (поддержке) которых он участвует.

    Не очень понял как, разве что речь о веб разработке.

    У нас дежурства по тестам были - в свой день с утра разобрать результаты ночного прогона, идентифицировать реальные новые проблемы, закинуть в ClearQuest...


    1. M_E Автор
      14.02.2025 09:09

      Да, в статье речь про бэкенд для веба


  1. shokerplz
    14.02.2025 09:09

    Но ведь разве не всегда так начинаются дежурства? Конкретные желания по автоматизации и упрощению жизни дежурного должны материализоваться в тикеты и таким образом процесс итеративно улучшается.

    Если процесс не улучшать, то сам по себе он не улучшится.


  1. dyadyaSerezha
    14.02.2025 09:09

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


  1. Vedomir
    14.02.2025 09:09

    Какой смысл ставить на такие дежурства именно программиста? Там же программистской работы - разработки ПО - нет вообще. Это должность для поддержки/девопса/какой-то особой роли со смешением их обязанностей.

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


    1. inkelyad
      14.02.2025 09:09

      Там же программистской работы - разработки ПО - нет вообще. 

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

      То что в статье описано, если это не выдумано

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

      Цель - посмотреть логи с внедрения, сказать go/no go (в последнем случае - еще проверить, что откат версии штатно произошел).

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


      1. Vedomir
        14.02.2025 09:09

        >Однако 'разбираться, что именно в софтовой системе пошло не так' - считается именно задачей программиста.

        Я как-то не увидел с статье например "написания хотфикса и выкатки его на прод" (это уж не говоря о том что такая выкатка будет ночью, в обход релизного цикла без остальной команды и тестировщиков, что может пойти не так? Может вообще прямо на проде исходники править?), я видел там

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

        Если вы считаете что

        >пытаться с помощью логов, графиков и загадочных переключений всего и вся добиться того, чтобы свистелка перестала свистеть

        То даже не знаю, что сказать.

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

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

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

        > У нас, кстати, на подобных мероприятиях (В момент внедрения/введения в эксплуатации новой версии. Ночного внедрения - дежурство было еще и ночным), участвовала вся команда, включая аналитиков.

        Так это у вас разовое мероприятие, а автор описывает постоянное. Ну и опять же при участии всей команды там явно будет не

        >пытаться с помощью логов, графиков и загадочных переключений всего и вся добиться того, чтобы свистелка перестала свистеть


  1. Vedomir
    14.02.2025 09:09

    del