tsidukciya

Поллинг: Как работать с асинхронными зависимостями?

Обещать - не значит жениться.

©️ Народная мудрость

Движение на пути к видению довольно сложный и извилистый путь. Если вы не живёте в одинокой хижине на холме в тысячах километрах от цивилизации, то скорее вам придётся обращаться с запросами или за помощью к другим людям. Если они немедленно делают то, что вы попросите - то это просто супер! А что если нет, и у них свои приоритеты, а ваши задачи не попадают в их ячейку срочного и важного? Синхронные зависимости возникают, когда действия одного человека напрямую зависят от действий другого в реальном времени. Это означает, что обе стороны должны быть доступны и готовы к взаимодействию одновременно.

Синхронное взаимодействие позволяет быстро получать обратную связь, что делает его эффективным для решения срочных вопросов и принятия решений. Например, вы оплатили хлеб в магазине и тут же можете съесть мягкую корочку за углом. Как в детстве, помните? Таким образом мы сразу после запроса получаем тот ресурс или актив, который запрашиваем. А время ожидания между запросом или ответом настолько мало, что его довольно тяжело утилизировать под другую задачу. Идеально, если вы запрашиваемые ресурсы вы получаете таким образом, то следующий сразу можете переходить к следующий главе.

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

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

В общем случае можно разбить ожидаемые период получения ответа или ресурса на отрезки, на конец каждого из них поставить задачу в спой список “напомнить про запрос <ФИО/название учреждения>”. Это так называемый метод поллинга (англ. polling), он часто применяется в разработке ПО, когда систему-исполнитель опрашивает система-заказчик на предмет, не готов ли ответ для неё. Этот механизм напоминает обычный почтовый ящик, который вы просматриваете в поиске входящей корреспонденции.

Последние 8 лет я работаю менеджером и руководителем на различных позициях, поэтому асинхронные зависимости составляют 80% работы. Использую несколько способов отслеживания и контроля за такими зависимостями. Если запрос выполняют коллеги или подчинённые, то ставлю им встречу в корпоративном календаре перед датой, к которой необходимо выполнить запрос. Если они выполняют запрос раньше, то встречу отменяю. Если нет - на встрече пытаемся выяснить, что пошло не так, и какие остались вопросы. Современные мессенджеры и почтовые клиенты умеют отправлять отложенные сообщения, поэтому я тоже пользуюсь такими функционалом. В момент обещания об исполнении запрос создаю отложенное сообщение на дату обещания, чтобы спросить у человека о прогрессе. Если мессенджер, почта или календарь недоступны для работы с исполнителем, то я обычно ставлю такую задачу в свой список “напомнить про запрос <ФИО>". Часто пользуюсь такой практикой при сложных запросах, когда время выполнения даже опытному исполнителю трудно предсказать. Например, сложный ремонт автомобиля, техники или других устройств, когда создается цепочка из асинхронных зависимостей: я -> мастер по ремонту -> поставщик запчастей -> импортер или дистрибьютор.

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