TG Contest: Авторский контент здесь! – Telegram
TG Contest: Авторский контент здесь!
2.29K subscribers
152 photos
10 videos
2 files
124 links
Основная площадка конкурса авторских Telegram-каналов. Читайте, реагируйте, обсуждайте! https://tg-contest.tilda.ws/
Download Telegram
Проводим качественное исследование за день

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

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

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

Итак:

9:00 — вы получили задачу и изучили её

9:30-10:30 — решили поисследовать и составили вопросы, они должны быть открытого типа

Открытого типа — значит не задавать вопросы так, чтобы на них можно было ответит только да/нет, а составить его, чтобы человек мог развернута рассказать про свой опыт, пример вопроса: «Как обычно вы совершаете покупки в магазине?»

10:30– 12:30 — напишите в чатах друзей и знакомых или социальных сетях пост, где рассказываете на какую тему хотите поговорить и сколько времени займёт интервью (15-20 мин обычно). Собираете список согласившихся и назначаете на послеобеденное время созвоны

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

12:30-13:30 — пообедали :)

13:30-15:30 — у нас согласилось 4 человека, беседуете с ними по 20 минут с 10 мин перерывами, задавая вопросы и записывая ответы

15:30-16:00 — пьёте кофе :)

16:00-18:00 — переносите на доску Figma Jam всю информации из интервью, анализируя её и вынося основные инсайты(идеи) для работы над флоу в отдельную секцию там

18:00 — рабочий день закончился, а у вас собрана информация и уже завтра можете приступать к отрисовке идеального флоу, которое будет удобным для реального пользователя

Конечно, тут описан идеальный день, когда всем удобно созвониться прям сегодня после обеда, в реальности это может быть не всегда так.
Проводить исследования можно и нужно. Могу сказать, что рисуя флоу ты опираешься только на свой опыт, который после интервью с другими людьми иногда разбивается в пух и прах. Обожаю этот момент, когда ты думал, что они решают эту задачу так, а после исследования ты понимаешь, что там все на 180 градусов иначе 😁

Могу сделать ещё один пост про технику ведения интервью.

❤️ — полезно
🤚 — давай пост про технику ведения интервью
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍65🔥1
ДВОЕЧНИКОВ БОЛЬШЕ НЕТ

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

Каждый берет из обучения то, что ему нужно здесь и сейчас. Кто-то приходит за тем, чтобы взять максимум, выжать из курса все, что только можно. А кто-то — за одной идеей, которая перевернет его взгляд на работу, а может, даже просто просто за вдохновением или хорошей компанией. И это вполне окей. У каждого свои приоритеты и обстоятельства.

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

Любой курс — лишь часть жизни. И если что-то не получается, это не делает тебя плохим учеником или плохой ученицей (и уж точно — плохим человеком).

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

Кстати, благодаря этому я и себя перестала считать «двоечницей», если что-то не успела или сделала неидеально. Стараюсь учиться не ради отметок и уж точно не ради чужих ожиданий.

Обучение взрослых — это свобода и осознанный выбор. А двоечников для меня и правда больше нет. А для вас? 😊
Please open Telegram to view this post
VIEW IN TELEGRAM
👍98🔥8❤‍🔥4
⚡️Как учитывать особенности enterprise-сегмента?

В прошлом посте описал 4 ключевых условия принятия решений в enterprise. Сегодня — как их учитывать поставщикам.

1️⃣ Длительный процесс → готовимся к марафону желаний работы
🔹 Формируем воронку с учётом бюджетных и стратегических циклов.
🔹 Разбиваем процесс на этапы: демо, пилот, масштабирование.
🔹 Работаем на опережение: начинаем переговоры до старта бюджетного цикла.

2️⃣ Коллегиальность решений → взаимодействуем с несколькими ЛПР
🔹 Определяем роли/группы: кто инициатор, пользователь, финансирует, решает, влияет.
🔹 Строим кейсы под каждую аудиторию: ROI для CFO и CEO, API для CIO, безопасность для HSE.
🔹 Помогаем «драйверам» продвигать идею внутри заказчика: готовим материалы, участвуем в техкомитетах.

3️⃣ Конкуренция поставщиков → показываем ценность и выгоды
🔹 Демонстрируем эффективность, экономию и снижение рисков через кейсы, отзывы, отраслевой опыт.
🔹 Изучаем конкурентов на рынке и их реальные возможности.
🔹 Разбираемся в тендерах: от ФЗ до регламентов площадок и компаний.

4️⃣ Риски негативных последствий → повышаем качество и снижаем угрозы
🔹 Постоянно улучшаем продукт и обеспечиваем высокий SLA.
🔹 Привлекаем экспертов (своих и заказчика) ещё на этапе подготовки.
🔹 Открыто обсуждаем с заказчиком карту рисков и меры по их снижению.

📌 Вывод:
Адаптация к этим особенностям повышает шансы на долгосрочное сотрудничество с enterprise-заказчиками.

В следующих постах поделюсь примерами из практики.

#переговоры #b2b #enterprise
🥱52👍1🔥1
🔥 Топ-10 тупых (неправильных) фраз руководителей на увольнении

или «Как превратить прощание в токсичный цирк»

№ 10. «Ну что ж... Дверь у нас всегда открыта!»
Перевод: «Уйдешь — поймешь, что мы были раем. Вернешься на коленях — может, плюну».
Реальность: Дверь открыта только для курьеров с пиццей.

№ 9. «Ты же понимаешь, незаменимых у нас нет»
Перевод: «Ты — винтик. Сгоришь в аду — на твое место встанет ИИ из „Яндекса“».
Реальность: Через месяц проект встанет, а они будут звонить тебе в 3 ночи.

№ 8. «Жаль, что ты не сказал о проблемах раньше...»
Перевод: «Мы 2 года игнорили твои отчеты с криками „SOS“, но сейчас сделаем грустные глаза».
Реальность: Если бы сказал — ответили бы: «Не ныть!».

№ 7. «Мы же как семья!»
Перевод:«Как семья Борджиа: предадим, отравим, но будем рыдать на похоронах».
Реальность: Семьи не устраивают «performance review» с KPI по любви.

№ 6. «Ты просто не выдержал темпа!»
Перевод: «Мы называем „темпом“ хаос, burnout и работу за троих без доплат».
Реальность: Темп был только в отчетах для акционеров.

№ 5. «Удачи... Но там везде так!»
Перевод: «Ты сбежал с „Титаника“, но все лодки тоже тонут! Сидел бы в трюме — героем бы стал».
Реальность: Везде не платят за переработки? Правда? Ох**еть.

№ 4. «Ты теряешь соцпакет!»
Перевод: «Наш ДМС — это талон к зубному раз в год. А корпоратив — это пицца в конференц-руме».
Реальность: Новые соцпакет = деньги, а не абонемент в солярий 2007 года.

№ 3. «Мы столько в тебя вложили!»
Перевод: «Ты должен нам 3 года рабства за курс „Excel для чайников“ на YouTube».
Реальность: Вложили = не повысили ЗП 4 года подряд.

№ 2. «Ты уходишь к конкурентам? Предатель...»
Перевод: «Мы платили тебе в 2 раза ниже рынка, но ты обязан страдать с нами!»
Реальность: Если бы «предавали» за копейки — компания разорилась бы на штрафах.

№ 1. «Помни: рекомендации зависят от меня»
Перевод: «На колени! Лизать ботинки! Иначе напишу, что ты ел суп с котом!»
Реальность: Угрожать — низко. Особенно когда сам не дал премию 2 года.

💣 Почему это звучит так обидно:
Эти фразы — не про сотрудника. Это крик боли менеджера, который:
- Не удержал (стыдно перед начальством),
- Не смог заменить (страх аврала),
- Осознал свою слабость (но прикрылся пафосом).

Как отвечать (если хочется послать, но нельзя):
- На «дверь открыта»: «Спасибо! Если что — ваш email у меня есть».
- На «незаменимых нет»: «Верю! Вы справитесь... как в прошлый раз с тем срочным проектом, помните?».
- На «предатель»: «Я не ухожу к ним. Я ухожу от токсичности».

Финал: Лучшая фраза при увольнении — молчание. Оформил документы? Улыбнулся? Ушел. Всё.

А если шеф начинает цирк — вспоминай этот топ и ржи в голос. Обиженный босс — лучший повод не жалеть об уходе.

Уходишь с чувством, что выбрал себя. 🔥

// P.S. Добавишь свои «любимые» фразы? Будем пополнять музей абсурда 👇
👍16👎10🔥5💩43😁2
Forwarded from ШТОШ
Муж недавно снова отсутствовал неделю дома, будучи в командировке.
Был в очередной стране, в которой до этого не был, а я конечно же ему совсем не завидую, потому что в Воронеже прекрасное лето(нет).

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

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

А чуть позже я пошла на ВБ забрать очередное нужное.
Поверьте, в нужности этого вы точно убедитесь далее!

Иду значит по двору, вижу на асфальте странная кучка лежит.

Шмель!
И ещё кто-то рядом с ним поменьше.
Не шевелятся, выглядят как стихийные жертвы чьего-то ботинка.

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

А место проходное и шанс того, что кто-то менее внимательный раздавит парочку морально раскрепощённых шмелей весьма высок.

Мохнатых надо спасать.

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

И вот тут то, я вспоминаю что у меня в фиолетовом пакете как раз свежезабранное с ВБ!
И там помимо прочего, ловушка для насекомых с увеличительным стеклом!
Купила для прогулок с дочерью, чтобы всяких букашек рассматривать.

Никогда ещё события не складывались настолько вовремя совпадающими.

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

Едем значит в лифте, я со шмелями в порыве страсти, они с тортиком в гости к кому-то.

У каждого свой способ справляться со скукой😄

«Кажется, они спариваются» — нарушаю я неловкое молчание голосом Николая Дроздова.

«Мужу покажу!» — радостно завершаю мысль, как будто речь идёт о рисунке ребёнка, а не энтомологической порнухе в 3D.

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

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

«Дорогой, ты когда-нибудь видел трахающихся шмелей?»

«Кхм» — осторожно отвечает муж, у которого, напомню, не было меня целую неделю,
и он ещё не адаптировался обратно в мои новостные сводки.

«СМАРИ!» — ликую я и несу в комнату доказательства любви в мире насекомых.

Муж конечно знал, что моё нестандартное отношение с животным миром началось еще в детстве.
Историю про летучую мышь или крысу он слышал.

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

Спустя 15 минут шмелиный экспириенс всё ещё продолжался.
Самец в 2 раза меньше самки оказался необычайно вынослив.
Мы как раз только успели прочитать что данный процесс у них может длится минут 20, как вдруг всё закончилось.

Но немношк не так, как показывают в романтических фильмах👍

Маленький полосатый мужичок резко скуксился, свернулся калачиком и затих.
И к сожалению, это не было зарисовкой «отвернулся к стенке и спит».

Продолжение ниже👇
Please open Telegram to view this post
VIEW IN TELEGRAM
😁16👍11🤣7👎42🐳1
Обряды инициации менеджера: как расти в профессии

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

1) Выстраивание правил работы с командой разработки, стейкхолдерами, смежниками..
- применяйте новые подходы: проводить ретро сразу после демо, ставить кикофф в начале спринта, поставить регулярную встречу с лидами разработки
- так вы наберетесь опыта, поймёте, какие практики нравятся вам, что лучше подходит для каких команд
- применять новые практике лучше по обоюдному согласию:)
2) Планирование задач на квартал
- залидируйте среднесрочное планирование в вашей команде, возьмите ответственность собрать дорожную карту и презентовать её
3) Разработка стратегии продукта
- залидируйте долгосрочное планирование, почелленжите свой продукт, его ценности
4) Проработка задач в новых областях: операции, маркетинг, юристы
- если вы постоянно пилите задачи для маркетинга или только b2c интерфейсы, попробуйте взять или попросить руководителя дать новые задачи в неизведанных областях
- это будет горизонтальным развитием: от b2b к b2c, от ecom к edtech
5) Участие в обучающих мероприятиях от компании
- используйте возможности, это позволяет расширить кругозор инструментария, который можете применить
- часто в компаниях можно найти и коучей, не пренебрегайте возможностью
6) Посещение профессиональных конференций
- нетворкинг
- расширения кругозора - насыщение бенчмарками
7) Ведение кросс-контурных проектов
- получаешь опыт постановления задач менеджерам
- возможность откалиброваться по скилам с коллегами
8) Проведение собесов
- тут первый раз пришло в голову, что это "обряд инициации" именно для собеседующего
- калибровка с менеджерами, которых собеседуешь
- погружение в процесс найма компании
- формулирование собственных критериев по менеджерским уровням
9) Участие в собесах
- супер калибровка
- прокачивание скилов прохождения собесов
10) Выступления на профессиональных конференциях
- рост личного бренда
- нетворкинг
- возможность откалиброваться в своих скилах с другими выступающими
11) Менторство
- возможность поделиться экспертизой и получить ОС, работают ли твои приемы
- возможность расти вместе с менти, понимать какие подходы к решению проблем лучше работают
- проработка пипл-менеджмента
- нетворкинг
12) Регулярный выпуск постов в профессиональном сообществе:)
- возможность структурировать свои мысли и совой опыт
- рост личного бренда
- нетворкинг с владельцами каналов вашего направления
- получить лайки от мамы, папы и бабушки
13) Ведение команды менеджеров
- получение скилов пипл-менеджмента
- ответственность за профессиональное развитие команды
14) Преподавание на коммерческой основе
15) Сборка авторского курса
16) Консалтинг
17) Выпуск своей книги
18) Свой пет-проект
- продать Яндексу за N миллионов $ или купить что-то у Яндекса:)

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

Поделитесь, что вы уже распробовали, а что в планах? Дополняйте своими пунктами🥷

@product_lev

#product #pm #рост #развитие #инициация #productmanager
🔥43👍2
Forwarded from Точка бифуркации | Александра Хромова (Александра Хромова)
Случайно получилась инструкция, как пережить провал

#живые_истории #так_тоже_можно

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

Предыстория: +-месяц ушёл на серию (7 шт) собеседований, с подготовкой и ожиданиями. Я делала ставку на это место и не искала параллельно других вариантов (ошибка, да, однако это был сознательный риск), хотя мне горело выйти на работу в сентябре. Отказ — благодатная почва для внутреннего критика и самозванца, моментально вернулись из отпуска по такому поводу. Радуюсь, что мои внутренние опоры уже достаточно крепкие, чтобы не сломаться от напора этих товарищей.


Идеальный план действий

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

Разлепить факт и себя. Да, ожидание было другое, и нет, я не стала хуже или лучше от того, что не получила эту работу.

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

Сделать сверку с реальностью: заметить и увидеть, что всё не так плохо, как ощущается на эмоциях.

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

Делать что-то, что радует. Разрешить себе отдых, хобби, удовольствие. Нерациональное и не срочное, но вдохновляющее. Качественно отдохнуть.

Решить, что дальше. Этот пункт — только после того, как схлынут эмоции. Говорят, 48 часов = ок.

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

Я "догадываюсь", почему, поэтому в психологии будет:
🌟 Определить, почему я сопротивляюсь поиску чего-то ещё.
🌟 Разобраться с внутренней мотивацией к работе в найме.
🌟 Посмотреть скрытые выгоды.
🌟 Проверить / проработать страхи.
🌟 Разлепить мой прошлый опыт и настоящую реальность.
🌟 Переосмыслить некоторые убеждения о работе в найме, её поиске и о себе в этом процессе.

Это — параллельно с движением по стратегии поиска работы.
Черновик стратегии уже есть, пару дней отлежится — дополню, чего не хватает, и вперёд.

Планы ABZ были, вполне актуальны — тем проще вернуться сейчас к делу.
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍3🔥3
Как мы из звездочек превращаемся в мертвые души

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

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

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

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

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

2. Зона профессиональной реализации - длится в среднем 1-2 года, где-то подольше (зависит от сферы и профессии). Это момент, когда сотрудник приносит максимальную пользу бизнесу, он доволен задачами, с удовольствием воспринимает внешние вызовы, развивает свои компетенции и накапливает опыт.

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

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

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

3. Зона профессионального выгорания - здесь уже пропадает энтузиазм, инициатива и самоходность. Формально работа продолжается, но без удовольствия.

На этом этапе точно стоит серьезно подумать о ситуации и что-то предпринять: сходить в отпуск, обсудить перевод, рассмотреть увольнение. Кто-то мирится с текущими обстоятельствами, но остается недовольным.

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

4. Зона стагнации - это зона “мертвых душ”. Это те самые сотрудники, про которых говорят “я его/ее должен уговаривать работать”. Они делают ровно столько, сколько попросят. А некоторых надо еще и по несколько раз просить. И тогда уже судьба сотрудника будет в руках руководства, вопрос увольнения - это вопрос времени. 

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

На каком вы этапе сейчас? Попадали в зону выгорания или стагнации? Как выбирались оттуда?

@seekingout
#проработу
Please open Telegram to view this post
VIEW IN TELEGRAM
212💔9🔥3👍1
Когда у тебя план и ты его придерживаешься
😁163🔥2🥴1
Forwarded from Ivanchikov ITClub
🌍 Привет мир! 👋🏻

Сегодня снова поговорим о чем-то общем, последнее время все чаще встречаюсь с понятием Rate limit при взаимодействии с внешними сервисами или при написании собственных с предоставлением API, тема важна потому что она про стабильность и производительность, Token Bucket Algorithm 🎊!

😮‍💨 Мотивация

Представим ситуацию, вы написали вери вери популярный сервис. Люди, скрипты и боты объединились чтобы заваливать вас запросами. Сначала вы радостно потираете ручки и считаете прибыль 💵, но уже через пару минут сервер падает 💥, ваши действия?

сказать что фронт виноват 😄

Чтобы такого не случалось, нужно использовать rate limiting — ограничивать количество запросов. Как реализовать лимит у себя, решений много, но в данном посте мы поговорим про Token Bucket 👇🏻.

Что за ведро с токенами

Пока на пальцах:

🧩 Представим ведро, в которое с постоянной скоростью (например, 1 токен в секунду) падают «токены».
🧩 Каждый запрос, который поступает на ваш сервис или на какой-то определенный endpoint, должен взять один токен из этого ведра.
🧩 Если токены в ведре закончились, новые запросы временно блокируются (падают в систему ретрай или реджектятся), пока токены снова не накопятся.

У ведра есть два основных параметра:

➡️ Capacity (ёмкость ведра) — сколько токенов максимально может быть в ведре.
➡️ Refill Rate (скорость пополнения) — сколько токенов добавляется в ведро в единицу времени ( это может быть 1s, а может быть и 5 min).

⚙️ Пример (тыкайте)

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

🚨 могли отправить не больше 5 сообщений подряд быстро;
🚨 но при этом в среднем не больше 10 сообщений за минуту (чтобы не спамили).

Получается настройка:

- Capacity = 5 токенов
- Refill rate = 10 токенов / 60 секунд ≈ 0.166 токенов в секунду

class TokenBucket {
tokens;
capacity;
refillRate;
lastRefill;

constructor(capacity, refillRate) {
this.capacity = capacity;
this.refillRate = refillRate; // Скорость пополнения токенов
this.tokens = capacity; // Начинаем с полного ведра
this.lastRefill = Date.now(); // last update
}

refillTokens() {
const now = Date.now();
const secondsPassed = (now - this.lastRefill) / 1000; // Прошло секунд
const tokensToAdd = secondsPassed * this.refillRate; // Токенов нужно добавить

this.tokens = Math.min(this.tokens + tokensToAdd, this.capacity); // Добавляем токены, не превышая capacity
this.lastRefill = now;
}

consume() {
this.refillTokens(); // Пополняем ведро токенами c учетом last update

if (this.tokens >= 1) {
this.tokens -= 1; // Забираем токен
return true;
}
return false; // Токенов нет
}
}

// Тест
const bucket = new TokenBucket(5, 10 / 60); // 5 токенов максимум, ~0.166 токена в секунду

setInterval(() => {
if (bucket.consume()) {
console.log(" Успешно!");
} else {
console.log("⛔️ Много запросов, жди!");
}
}, 500);


🎮 Пояснение:

✔️ Запросы идут каждые 0.5 секунды.
✔️ Ведро начинает с 5 токенами, поэтому первые 5 запросов сразу проходят.
✔️ Но токены пополняются медленно (1 токен примерно каждые 6 секунд), поэтому после первых 5 быстрых запросов следующие будут отклоняться, пока снова не накопится хотя бы один токен.

Схема не выглядит сильно сложно, а работает как белорусские часы “Луч” 🔥.
P.S. Луч свяжитесь со мной

💡 Есть и другие решения, и каждое подходит для конкретного отдельного случая, я просто подсвечу:

➡️ Redis позволяет делать глобальные лимиты, можно даже и для нескольких серверов.
➡️ Nginx — быстрый вариант на уровне прокси-сервера, гибкость ограничена.
➡️ API Gateway (Kong...)

Плюсы Token Bucket:

- 🎯 Прямо в коде, без внешних зависимостей.
- 🎯 Гибкие настройки (отдельно можно регулировать burst и среднюю скорость).
- 🎯 Данный алгоритм можно тыкать везде, где есть необходимость что-то останавливать, и необязательно это должно быть API

💬 Если вам понравилась статья, не забудьте поставить лайк и хорошего вам дня! 👍

#ALGORITHMS
Please open Telegram to view this post
VIEW IN TELEGRAM
🤷4🔥21👍1🤯1💩1
🥲 Как работать и не страдать

Короткий топ советов, чтобы можно было кодить и заниматься важными задачами, а не целыми днями офигевать от нагрузки на работе:

🔵по умолчанию выключите почтовые уведомления — скорее всего, вам нужны только очень конкретные уведомления или не нужны вовсе, каждое отвлечение — потеря контекста и нагрузка для мозга;

🔵настройте папки в почтовом клиенте — уведомления Jira, алёрты, уведомления BitBucket, всё это можно разделить, не разгребая сотни писем во "входящих", а самый-самый топ — создайте папку CC, куда вы перенаправите письма, где вы в "Копии", уверяю вас, в 99% случаев вам не нужно оперативно читать эти письма, можете изредка проверять эту папку;

🔵отменяйте встречи, в которых нет повестки или вы не понимаете, зачем в них нужно ваше участие — если вы нужны на встрече, то вы об этом обязательно узнаете;

🔵активно участвуйте во встрече или уходите — если вы в фоне листаете мемчики или слушаете параллельную встречу, то либо вы саботируете текущую встречу, либо вы на ней не очень-то и нужны; важно: активно слушать и получать важную информацию — тоже участвовать;

🔵"забивайте" себе фокусные окна для работы — ставьте себе в календарь встречи для того чтобы сфокусировано поработать, отключите уведомления во время этих окон, договоритесь с командой или руководителем, что будете доступны только в каком-то конкретном канале связи;

🔵бонус: включите чёрно-белый режим на смартфоне — захочется пользоваться им сильно реже!)

Сам пользуюсь всеми советами — правда помогает! Бывает ли, что сам отлыниваю на встречах? Конечно бывает, мы всё же не роботы. Но даже простая настройка фильтров в Outlook уже сделает ваш рабочий день сильно лучше. Давайте бережно относиться к своим времени, энергии и вниманию, и использовать их в правильном русле :)

#развитие #фокус
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍65
🧠 Как 3 вечера анализа и оптимизаций дали минус 1 CPU и +40% к скорости ответов API

👀 Всё началось с того, что я случайно (ну как случайно, проблема была всегда, просто я первый задался вопросом - "почему?") заметил, что один Python-сервис на staging потребляет до 2.5 CPU.
Для сравнения — весь namespace потребляет около 6 CPU. То есть один сервис ест почти половину ресурсов. И это при том, что это не какой-то нагруженные сервис, это синхронный API-сервис, да еще и без нагрузки, это же staging.

Стало интересно — а что там внутри вообще так жрёт?

📦 Запустил профайлинг CPU через Pyroscope и… понеслось.

UI у Pyroscope меня не устроил — флеймграфы красивые, но неудобные для глубокого анализа.
📥 Поэтому я выгрузил дамп как pprof файл и открыл его через go tool pprof.
Так мне удобнее, быстрее и информативнее.

📊 Профилирование показало несколько важных узких мест:

🧱 Проблема №1: конвертация данных из MySQL

Самое "жирное" место — conversion.pyMySQLConverter.row_to_python.
Это код, который конвертирует строки из БД в Python-объекты на каждый запрос.

Наиболее затратные конвертации:
- _DECIMAL_to_python
- _INT_to_python
- _JSON_to_python
- _DATETIME_to_python
- _STRING_to_python

Решение:

📌 Использовал C extension у mysql-connector-python
Официальная документация: https://dev.mysql.com/doc/connector-python/en/connector-python-cext.html

📉 Результат:
- Минус 1 CPU
- До +40% ускорение некоторых endpoint’ов

🧠 Проблема №2: неэффективный Python-код

Пример: функция change_type, которая:
- делает кучу проверок в логике
- использует неэффективные структуры данных, например, list для поиска вместо set / dict
- обрабатывает сразу множество возможных вариантов логики, в зависимости от входных данных

Решение:

📌 Переписал участок без изменения бизнес-логики:
- заменил структуры данных
- добавил ранние выходы
- убрал дублирующиеся проверки

📌 Cognitive complexity снизилась, временная сложность — тоже. Производительность выросла.

⚠️ Проблема №3: код, который не нужен, но работает

Профайлинг показал, что куча ресурсов уходит на код, который вообще не должен уже как год использоваться. Но код активно выполняется. WTF!?

🤷‍♂️ Функции вызываются, результат — пустой, но код исполняется. Причём часто и тяжело.

Решение:

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

🐘 Проблема №4: Импорты. Много. Дорого.

Во время анализа я наткнулся на ещё одну тихую, но дорогую проблему — огромные ресурсы уходят на фазу импорта модулей в Python.

Конкретно — на _find_and_load, часть механизма импорта, который занимается поиском, загрузкой и инициализацией модулей.

📌 Почему это важно?
- Импорты выполняются на каждый старт сервиса.
- Чем жирнее и зависимее ваши модули, тем дольше и тяжелее проходит импорт.
- Это не всегда очевидно, но можно видеть в профайлинге: _find_and_load, _find_and_load_unlocked, _load_unlocked – вот это всё.

📊 У нас в сервисе модулей реально много.
Многое из них – просто "свалены в кучу", где-то грузятся тяжёлые зависимости. Да и сложная структура проекта вынуждает иметь большое количество импортов.
И, как итог, CPU тратится на то, что можно было бы стремиться избежать.

Что с этим делать:
- Разделять модули по функциональности.
- Отложенные импорты (lazy import) – практика может применяться (но есть нюансы), если модуль нужен только в конкретной функции.
- Минимизировать зависимости и импорт только того, что действительно нужно.
- Следить за импортами в __init__.py — именно они могут тянуть за собой пол кодовой базы.

Следующий шаг: memory профайлинг. Pyroscope в нашей инфрастуктуре такое не умеет и нужно приседать, но надеюсь дойдут руки и до RAM.
🔥6👏32🥱2🤯1
Разбор продукта в фильме «Субстанция»

Наконец-то посмотрела этот фильм и вот что заметила: в нем отлично показан весь пользовательский путь взаимодействия с продуктом. Субстанция — это тщательно продуманный продукт, который, как это часто бывает, содержит в себе тёмный паттерн.

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

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

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

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

Единственная реклама – видео. Оно сделано великолепно: краткое и яркое – полностью соответствует продукту. В ролике перечисляют проблемы пользователя и предлагают решение – подход JTBD в действии. Эффект от субстанции проиллюстрирован отлично: скомканный комок – это вы сейчас, а ровненький и красивый – это вы с нашим продуктом. И конечно, полностью скрыты негативные последствия, подробнее о них в конце.

📍 Бизнес-модель
В фильме не раскрывают стоимость продукта и процесс оплаты. Скорее всего здесь бизнес-модель по подписке, но может быть и «бритва и лезвие».
Причем, пользователь не просто должен оплачивать следующий пакет, но и не может не оплатить. Просто мечта 🙃

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

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

📍 Отказ от продукта и отписка
Вот тут и скрывается темный паттерн:
🔴 Пользователь изначально не знает о возможности прекратить использование субстанции. Это можно сравнить со скрытием кнопки отписки в интерфейсе.
🔴 Поддержка только после многократных обращений рассказывает, что все-таки это возможно. Напоминает 10 экранов отказа от подписки, не правда ли?
🔴 Отказаться можно, но повторно воспользоваться продуктом уже не получится никогда. Вообще никогда. Тут уже и FOMO, полное перекладывание груза ответственности на пользователя.
🔴 Сама суть продукта предполагает его чрезмерное использование, что может привести к необратимым последствиям, а они, в свою очередь, не позволят отказаться от услуг.

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

А что думаете вы? Кажется ли подход к разработке и продвижению субстанции интересным?

Автор: 💬 Люция Муратова, рассказывает об интересных подходах в продукте и маркетинге https://news.1rj.ru/str/lucia_chnl
Please open Telegram to view this post
VIEW IN TELEGRAM
11👏6🔥3👍2
Прекрасный симбиоз готовой дизайн-системы и нейросетки
Еще один плюсик в карму, когда есть готовая дизайн-система на проекте.
У нас была небольшая область на странице с комментариями. Гипотеза — сотрудники могут переписываться по рабочим вопросам или фиксировать промежуточные статусы. Поэтому реализовали компактный вариант: input и кнопка рядом.

Но я недооценила бюрократическую машину.

Руководители требовали промежуточные отчеты, но объем был больше, чем 1–1,5 строки. В таком формате писать комментарии было неудобно — текст уходил за пределы input-поля.

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

Очевидное решение — заменить input на textarea и переместить кнопку вниз (по канонам анта). Но тогда поле ввода становится слишком громоздким. Хотелось, чтобы форма оставалась компактной, но разворачивалась при фокусе, и была удобной для ввода. Идея в голове была, но визуализировать её было сложно.

И тут начинается магия вне хогвардса.

Для кода я использовала DeepSeek — он, по моему опыту, справляется лучше, чем GPT. Сформулировала поведение, получила пример.

Далее идем в компоненты анта и заходим в песочницу любого компонента (на рис 2 показала где). Вставляем код, который написал DeepSeek во вкладку demo.tsx ииии у нас есть интерактивная демонстрация решения (см видео)

Плюсы:
1. Наглядно видно как это должно работать
2. Говоришь на одном языке с разработкой. Сгенерированный код нейросетью может не работать по принципу копировать + вставить. Но код, визуализация, документация дает ориентир. Разработчик хотя бы понимает, что от него требуют и может переписать чтобы работало как надо)

Не знаю, додумалась ли я сама до такого решения. Возможно, но явно дольше.