the-digital-productivity-book

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

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

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

С 2017 я работаю менеджером и руководителем на различных позициях, поэтому асинхронные зависимости составляют 80% работы. Использую несколько способов отслеживания и контроля за такими зависимостями. Если запрос выполняют коллеги или подчинённые, то ставлю им встречу в корпоративном календаре перед датой, к которой необходимо выполнить запрос. Если они выполняют запрос раньше, то встречу отменяю. Если нет - на встрече пытаемся выяснить, что пошло не так, и какие остались вопросы.

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

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

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

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

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

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

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

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

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

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

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