Кейс UPMARKET: подбор шести IT-специалистов для фулфилмента до сезона
Клиент: UPMARKET — фулфилмент полного цикла для селлеров Ozon, Wildberries и Яндекс Маркета: склад 5 700 м² в Подольске, до 50 000 упаковок в день, собственная WMS, личный кабинет UPMARKET online и франшиза с доступом к своему софту.
Услуга: подбор IT-специалистов
Срок сотрудничества: 4 месяца, с мая по август, разовый проект с жёстким дедлайном
Позиции: PHP-программист, Frontend-разработчик, разработчик мобильных приложений, Python-программист
Результат: к 1 сентября закрыли 6 мест из 6, и все новые сотрудники вошли в работу за 3-10 недель до начала осеннего пика.
Софт, который вырос вместе со складом
UPMARKET начинался в 2017 году как склад собственного интернет-магазина, а с 2020 года обслуживает других селлеров. В 2023 году число отгрузок выросло в шесть раз, компания получила премию «Фулфилмент года» MPSELLERS, а в 2024 году отгрузила больше 10 млн товаров. Под управлением почти 2 млн SKU, среди клиентов известные бренды вроде MIXIT и Septivit.
Всё это время склад работал на собственном софте: WMS, личный кабинет UPMARKET online для селлеров, Telegram-бот, интеграции с маркетплейсами. Софт писался в режиме роста, быстро и под текущие задачи. Теперь он стал продуктом в прямом смысле: франшиза UPMARKET продаётся вместе с доступом к этим ИТ-наработкам, а значит, код должен работать не только на складе в Подольске, но и на складах партнёров. Небольшая группа разработчиков, которая всё это создала, перестала успевать.
Руководство решило собрать полноценную in-house команду: PHP-программистов на ядро WMS, Frontend-разработчика на личный кабинет селлера, разработчика мобильных приложений на приложение для терминалов сбора данных (ТСД) и Python-программистов на интеграции с API маркетплейсов. И сразу поставило условие, которое определило весь проект: команда должна быть набрана и введена в работу до осени.
Центральная идея проекта: в фулфилменте ИТ-найм живёт по складскому календарю: людей надо нанять и ввести в работу до осеннего пика, потому что в сезон менять код WMS и учить новичков некогда.
Как мы устроили работу
Мы начали не с вакансий, а с обратного плана. Осенний пик начинается в сентябре, а с октября до новогодних праздников релизы в WMS сведены к минимуму. Новому разработчику нужно 3-6 недель, чтобы разобраться в коде склада. Значит, ключевые люди должны выйти на работу не позже двадцатых чисел июля, остальные до конца августа.
Отсюда приоритеты. Первая волна: PHP-программисты и Python-программисты, потому что ядро WMS и интеграции с маркетплейсами это то, без чего склад останавливается. Вторая волна: Frontend-разработчик и разработчик мобильных приложений, их задачи важны, но могут стартовать позже.
Формат: удалённая работа с первой неделей на складе в Подольске. Это условие мы вписали в оффер: каждый новый разработчик проводит несколько смен рядом с приёмкой, сборкой и отгрузкой, чтобы видеть, как его код используют живые люди. Каналы: hh.ru, Хабр Карьера, прямой поиск по разработчикам из e-commerce, логистики и WMS-интеграторов, telegram-чаты разработчиков под маркетплейсы.
Сложности и решения
1. Дедлайн вместо открытой вакансии. Обычная вакансия может висеть, пока не найдётся идеальный кандидат. Здесь каждую неделю задержки у нового человека становилось на неделю меньше до пика. Мы договорились с руководителем ИТ-направления о еженедельном срезе: сколько кандидатов на каждом этапе, кто выйдет к какой дате, где отставание. Когда второй PHP-программист в начале июля срывался, мы не стали ждать идеального профиля и вместе с клиентом пересмотрели требования: опыт работы с WMS перестал быть обязательным, а сильный PHP и опыт высоконагруженного e-commerce остались в требованиях.
2. Код, написанный в режиме роста. WMS создавалась быстро, и кандидатам честно говорили: здесь есть legacy, его нужно не переписывать с нуля, а улучшать по шагам, не останавливая склад. Вместо классического тестового мы дали PHP-программистам код-ревью: обезличенный фрагмент реального модуля резервирования остатков. Нужно было найти проблемы и предложить, в каком порядке их исправлять. По ревью сразу видно, кто мыслит «всё снести», а кто думает о том, что этот код прямо сейчас обрабатывает тысячи заказов.
3. Приложение для ТСД. Разработчик приложения для терминалов сбора данных это редкий профиль: Android на промышленных устройствах, работа со встроенными сканерами, офлайн-режим в глубине стеллажей, где пропадает Wi-Fi. Готовых кандидатов с таким опытом на рынке единицы. При подборе разработчика мобильных приложений мы расширили поиск на Android-разработчиков из курьерских, складских и розничных приложений и в скрининг добавили вопрос: «сканирование прошло, а ответ сервера не пришёл; что увидит кладовщик и что произойдёт с остатком». Позиция закрылась последней, за 3 недели до сентября, и это был осознанный компромисс по срокам ради точного попадания.
4. Интеграции с маркетплейсами, которые всё время меняются. API Ozon, Wildberries и Яндекс Маркета меняются регулярно, у них лимиты запросов, разные модели поставок FBO и FBS, плюс маркировка «Честный знак». На вакансию Python-программиста откликалось много фрилансеров, которые делали парсеры и боты для селлеров. Для склада этого мало. Мы спрашивали, как кандидат обработает ситуацию, когда маркетплейс принял поставку частично, а в WMS она числится целиком, и как устроит повторные запросы при превышении лимитов. Дальше проходили те, кто думал о сверке и логах, а не только о получении данных.
5. Личный кабинет с большими данными. Селлер в личном кабинете смотрит остатки, поставки, движение товаров и счета, и у крупного клиента это десятки тысяч строк. При подборе Frontend-разработчика выяснилось, что кандидаты с опытом лендингов и витрин на таких объёмах теряются. В тестовом задании давали таблицу остатков на 50 000 строк с фильтрами и выгрузкой и смотрели, как кандидат решит производительность. До финала дошли те, кто уже делал админки и аналитические интерфейсы.
6. Код, который поедет к франчайзи. Софт, работающий на одном складе, и софт, который ставится партнёрам, требуют разного мышления: настройки под каждый склад, разделение данных, роли, обновления без участия разработчика на месте. На финальных интервью с руководителем ИТ-направления обсуждали именно это. Кандидаты с опытом B2B-продуктов для нескольких клиентов получали заметное преимущество.
Час с HR-директором бесплатно
Продуктивный разговор о найме с HR-директором A2. Только для компаний от 20 сотрудников
Аналитика по воронке
Сводная воронка по позициям, май-август
| Позиция | Кандидатов | Скрининг | Тестовое или код-ревью | Техническое интервью | Оффер | Вышли |
|---|---|---|---|---|---|---|
| PHP-программист | 187 | 42 | 17 | 8 | 3 | 2 |
| Frontend-разработчик | 163 | 36 | 14 | 5 | 1 | 1 |
| Разработчик мобильных приложений | 97 | 19 | 7 | 4 | 1 | 1 |
| Python-программист | 158 | 37 | 15 | 7 | 2 | 2 |
| Итого | 605 | 134 | 53 | 24 | 7 | 6 |
Разработчик мобильных приложений (ТСД), конверсии
| Этап | Количество | Конверсия |
|---|---|---|
| Отклики и активный поиск | 97 | — |
| Прошли скрининг (вкл. вопрос про офлайн-режим) | 19 | 19,6% |
| Тестовое задание | 7 | 36,8% |
| Техническое интервью | 4 | 57,1% |
| Оффер | 1 | 25,0% |
| Вышел на работу | 1 | 100,0% |
Выход на работу относительно пика
| Позиция | Сотрудник | Дата выхода | Запас до 1 сентября |
|---|---|---|---|
| PHP-программист | первый | 23 июня | 10 недель |
| Python-программист | первый | 30 июня | 9 недель |
| PHP-программист | второй | 14 июля | 7 недель |
| Python-программист | второй | 21 июля | 6 недель |
| Frontend-разработчик | первый | 28 июля | 5 недель |
| Разработчик мобильных приложений | первый | 11 августа | 3 недели |
Источники кандидатов
| Позиция | Основные каналы |
|---|---|
| PHP-программист | hh.ru (~50%), прямой поиск по e-commerce (~35%), Хабр Карьера (~15%) |
| Python-программист | hh.ru (~45%), telegram-чаты разработчиков под маркетплейсы (~30%), прямой поиск (~25%) |
| Frontend-разработчик | hh.ru (~60%), Хабр Карьера (~25%), рекомендации (~15%) |
| Разработчик мобильных приложений | прямой поиск (~50%), hh.ru (~35%), telegram-чаты Android-разработчиков (~15%) |
Таблица выходов показывает, что обратный план сработал: первая волна, PHP и Python, вышла с запасом в 6-10 недель и успела освоить WMS до сезона. Самая узкая воронка у разработчика мобильных приложений: из 97 кандидатов скрининг прошли 19, а единственный оффер получил человек из курьерского приложения, который уже работал с офлайн-очередью. У PHP-программиста на код-ревью отсеялось больше половины: 17 человек получили фрагмент модуля, на техническое интервью вышли 8. У Python-программистов прямой поиск и профильные чаты дали больше половины кандидатов, потому что на hh.ru преобладали фрилансеры с опытом парсеров, а не складских интеграций.
Что в итоге
К 1 сентября UPMARKET получил ИТ-команду из шести человек: двух PHP-программистов, двух Python-программистов, Frontend-разработчика и разработчика мобильных приложений для ТСД. Все прошли свою неделю на складе и вошли в работу до начала пика. Осенний сезон склад прошёл без остановок по вине софта, а команда параллельно готовила версию WMS и личного кабинета для франчайзи.
Главный вывод: если бизнес сезонный, найм ИТ-команды нужно планировать от даты пика назад, а не от даты открытия вакансий. Срок выхода человека важнее, чем ещё две недели поиска идеального кандидата, и требования стоит заранее разделить на обязательные и те, которые можно ослабить, если план отстаёт.
И второе. Разработчик, который неделю постоял рядом с упаковщиками и кладовщиками, пишет другой код. Это дешёвая мера, которую стоит заложить прямо в оффер.
Если у вас склад, фулфилмент или другой сезонный бизнес со своим софтом, напишите нам. Подбор IT-специалистов спланируем от вашего календаря пиков.


