Machine Learning Engineer — это не медали Kaggle и не должность «я прошёл курс нейросетей». На входе вас нанимают за контур, который можно вызвать повторно: данные на входе, обучение или инференс по правилам, метрика, которую вы не путаете с accuracy «на глаз», и способ откатить плохую модель. Research-титул без продакшн-следа на junior-рынке СНГ почти всегда фейк — либо ваш, либо вакансии.
В 2026-м живые junior-слоты чаще выглядят как MLOps-lite, рекомендательные заготовки, классификация тикетов, качество поиска — рядом с инженерами данных и backend, а не как «изобретите архитектуру трансформера». Ниже — какую базу показать, какой учебный сервис закрывает сомнение и куда не тратить отклики.
Коротко:
- ML Engineer продаёт повторяемый контур модели, не ноутбук с высоким скором на датасете недели.
- База: Python, SQL, одна задача обучения с валидацией, упаковка инференса, лог и понятный провал.
- Kaggle без прод-обвязки — хобби. Сертификат облака без сервиса — строка, не работа.
- Junior-роли ищите по задачам: пайплайн признаков, обучение по расписанию, мониторинг качества, а не по слову Research.
- Если нет ни данных, ни бэкенда — сначала закройте одну из сторон, не оба курса сразу.
Чем ML Engineer не является
Data Scientist в маленькой команде СНГ часто сам и считает, и закатывает. ML Engineer в более зрелой схеме ближе к инженеру: воспроизводимость, сервисы, задержки, стоимость прогона, деградация метрики в проде. На старте рынка эти ярлыки смешаны. Вам важно не выиграть спор о названии, а показать контур.
Research Engineer / Applied Scientist в объявлении с «без опыта, публикаций не требуем, но SOTA» — почти всегда middle под видом романтики. Не откликайтесь туда пачкой. Если вам ближе витрины и джобы без моделей — смотрите вход в Data Engineer. Если ближе продукт без обучения — Python-разработку или аналитику.
Kaggle полезен как дисциплина валидации. Он не заменяет API инференса, версию модели и объяснение, что будет, если завтра распределение уедет. Медаль в шапке резюме без ссылки на сервис читается как «игрался с датасетами».
Какой прод-контур ждут даже на входе
Никто не ждёт от новичка распределённый тренинг на кластере. Ждут, что вы понимаете цикл:
- Откуда данные, какое зерно, какая утечка в таргет.
- Как делите train/valid (по времени, не случайно, если это события).
- Какая метрика и почему не accuracy на дисбалансе.
- Как упакован инференс: скрипт, маленькое API, батч-скоринг — один способ, доведённый до конца.
- Как поймёте, что модель в проде стала хуже: хотя бы отложенный прогон на свежей неделе и сравнение.
Это и есть «прод-контур» учебного уровня. Он слабее промышленного MLOps. Он сильнее курса, где вы «запускали AutoML в облаке по гайду».
База, без которой рано звать себя MLE
Не начинайте с LLM-обёрток, если нет Python и табличных данных. Типичный входной стек:
- Python. Не только pandas: окружение, зависимости, тесты на препроцессинг, логи.
- SQL. Признаки почти всегда живут в таблицах. Без SQL вы застрянете на выгрузках руками.
- Одна классическая задача. Классификация, ранжирование, прогноз числа — с честной валидацией. Глубокое обучение не обязательно.
- Git, README, как воспроизвести. Фиксированные сиды, версии библиотек, что считать успехом.
Математика: понимание переобучения, смещения, простой регуляризации, что такое precision/recall. Курс теории вероятностей без задачи не нанимает. Задача без понимания метрики разваливается на первом вопросе «почему этот порог».
Сертификаты AWS/GCP «Machine Learning Specialty» не открывают junior-слот сами. Если в вакансии нет этого облака в задачах, строка только занимает место. Сначала сервис, потом экзамен под конкретный найм — если он вообще нужен.
Отдельно про LLM-обёртки. Подключить чужой API и написать «AI-ассистент» за выходные — не контур модели. Это интеграция. Её можно показать в backend-резюме. В MLE-файле она работает, только если вы измерили качество ответов, стоимость, отказ и что делаете, когда провайдер лежит. Иначе вы конкурируете с людьми, у которых табличная задача с честным recall, и проигрываете прозрачностью.
Данные для учебного контура берите легальные: открытые датасеты, свои логи поддержки с вычищенными персональными данными, публичные выгрузки. Не тащите боевую базу с прошлой работы. На собеседовании спросят происхождение. Ответ «нашёл csv в чате» хуже, чем скромный открытый набор с описанным зерном.
Учебный сервис за квартал, а не десять ноутбуков
Одна вертикаль. Пример темы: классификация обращений поддержки, прогноз спроса по дням, простые рекомендации «похожие товары» на открытых данных.
Недели 1–4. Собрать датасет с понятным таргетом. Описать утечки: не тащите в признаки то, чего не будет в момент прогноза. Базовый бейзлайн: правило или логистическая регрессия. Зафиксируйте метрику до сложной модели.
Недели 5–8. Одна модель лучше бейзлайна на честной валидации. Скрипт обучения, артефакт модели в репозитории или в релизе, скрипт инференса. Не тащите пять фреймворков.
Недели 9–12. Обвязка: маленькое API или батч раз в сутки, лог входных ошибок, короткая инструкция «как переобучить на новых файлах». Один абзац ограничений: нет A/B, нет GPU-кластера, нет онлайна.
README на полстраницы важнее красивой confusion matrix в конце ноутбука. Рекрутер откроет одно. Не откроет архив из двадцати экспериментальных веток.
Пример 1. План на 90 дней с нуля в ML-соседстве
Исход: уверенный Python, слабый SQL, нет коммерческого ML. Цель — роль, где в задачах обучение и инференс рядом с данными, не Research Scientist.
- Дни 1–30. SQL до джойнов и окон на учебной БД. Одна табличная задача, бейзлайн, отчёт «что не так с accuracy». Без нейросетей.
- Дни 31–60. Модель + инференс-скрипт + фиксированные зависимости. Прогон на отложенной неделе. Запись: метрика упала — вот гипотеза почему.
- Дни 61–90. Резюме с заголовком ML Engineer / Python, табличные модели, инференс — не «AI Specialist». 15 точечных откликов в неделю на задачи контура, ноль на «SOTA с нуля». Параллельно смотреть соседние DE-слоты, если контур данных слабый.
Если к дню 60 нет воспроизводимого обучения, не начинайте LLM-чатбота «для портфолио». Это другой продукт и другой разговор, часто слабее табличной задачи с честной метрикой.
Пример 2. Сопроводительное без research-пафоса
Вакансия: junior ML Engineer, Python, признаки из хранилища, обучение раз в неделю, сервис скоринга, русский язык. Публикации не требуются.
Откликаюсь на junior ML Engineer с недельным переобучением и скорингом.
По вакансии нужно собирать признаки, обучать модель по расписанию и отдавать скор без ручного ноутбука. Собрал учебный контур классификации обращений: SQL-выгрузка → обучение с валидацией по времени → скрипт инференса → прогон на следующей неделе. Бейзлайн — правила по ключам; модель лучше по recall на редком классе. Ссылка на репозиторий и как воспроизвести: [ссылка].
Коммерческого ML в проде нет. Публикаций нет — в вакансии они не нужны. Готов разобрать ваш текущий пайплайн признаков на созвоне или сделать тестовое на табличной задаче в том же формате.
Нет «страстно увлекаюсь AI». Есть контур, метрика, граница, следующий шаг. Каркас письма без опыта — тот же, что в сопроводительном без стажа.