Перешёл из аналитика в Data Scientist: 525 часов подготовки, из которых ~40% — впустую
Полтора года назад я был аналитиком: SQL, дашборды, выгрузки по запросу продакта. Потом решил перекатиться в Data Scientist и потратил примерно полгода на подготовку — курсы, пет-проекты, бессонные ночи с учебниками. Сейчас, оглядываясь назад, вижу, что процентов сорок усилий ушло в молоко: я качал то, что красиво звучит в вакансиях, а не то, что реально делаешь на работе. Ниже — честный разбор, на что я убил время с пользой, а на что зря. Без мотивационного булшита, с конкретикой и табличкой учёта часов (с оговоркой, что табличка — реконструкция, и память наверняка кое-где соврала).
Учусь в Школе 21 и работаю Data Scientist в Сбере — но до этого года полтора сидел аналитиком в другой команде. Аналитик отвечает на вопрос «что произошло»: собирает SQL-запросы, крутит выгрузки, рисует дашборды, объясняет бизнесу, почему конверсия просела во вторник. Работа нужная, но в какой-то момент мне надоело описывать прошлое — захотелось его предсказывать. Строить модели, а не графики. Так родилась идея перекатиться в DS. Я выделил себе условные полгода и начал «готовиться». И вот тут наступил на все грабли, которые можно было найти.
Задача, как я её тогда понимал (и в чём ошибся)
Я открыл штук двадцать вакансий на DS, выписал все требования в один файл и решил: закрою каждый пункт. План звучал логично, но был кривой по сути. Вакансии — это списки желаний HR и тимлидов, собранные по принципу «пусть будет, вдруг пригодится». Там в одной строке могли стоять CatBoost, Spark, Kafka, A/B-тесты, нейросети и Docker. Я наивно решил качать всё подряд и равномерно. Ошибка была в том, что я не понимал распределения времени реального дата-сайентиста. Спойлер: 80% рабочего дня — это данные, фичи и валидация, а не выбор экзотичной архитектуры модели.
К слову, я ещё и засёк часы — вёл табличку в Notion с сентября 2023 по март 2024. Но честно: то, что ниже, — реконструкция пост-фактум. Я не каждый день дисциплинированно отмечал минуты, часть цифр восстанавливал по памяти и истории git/браузера, так что проценты приблизительные. Пропорции верю, что близки к правде, а вот ±10 часов в любой строке вполне могли набежать.
На что ушло время: таблица с пост-фактум оценкой
- Скил - время - пригодился или нет
- Классический ML: бустинги, метрики, валидация - ~120 - Да, основа основ
- Pandas / numpy / работа с данными - ~80 - Да, каждый день
- Математика: матан, линал, оптимизация с нуля - ~100 - Почти нет
- Deep Learning (CV, трансформеры, PyTorch) - ~90 -Нет (для табличек)
- LeetCode-стиль алгоритмы - ~60 -Только на собесе
- SQL углубленно - ~20 -Да, но это у меня уже было
- Spark / большие данные - ~40 - Частично
- MLOps базово (Docker, CI, логирование) - ~15 - Да, и надо было больше
Итого ~525 часов. Теперь по существу — где я попал, а где промахнулся.
Что оказалось зря (или почти зря)
1. Математика «с нуля и до основания». Я честно прорешивал производные, выводил градиентный спуск на бумаге, разбирался в SVD руками. Это интересно и для общего развития полезно, но на практике классического ML на табличках мне ни разу не пригодилось выводить градиент вручную. Бустинг я не пишу с нуля — я его применяю. Достаточно понимать интуицию: что градиент показывает направление, почему регуляризация душит оверфит, что делает learning_rate. А три недели на вывод формул backprop лично для меня были перекачкой. Хватило бы понимания на уровне «что и зачем».2. Deep Learning во всю глубину. Я угрохал почти 90 часов на CV, свёртки, потом на трансформеры, собрал классификатор котиков на PyTorch. Гордился. А потом пришёл на работу — и оказалось, что мой хлеб это кредитный скоринг на табличных данных, где нейросети в проде проигрывают бустингу и по качеству, и по интерпретируемости, и по скорости инференса. На табличках CatBoost/LightGBM до сих пор король. DL мне пригодился ровно ноль раз за первый год.Кстати, сейчас я докапываю LLM-агентов и RAG — но уже как энтузиаст по вечерам, а не потому что это требовалось для входа в профессию.3. LeetCode-задачи на алгоритмы. Двусвязные списки, динамика, обход графов — я задротил это месяц, потому что «вдруг спросят». Как-то раз на собесе дали задачку на хеш-таблицу. Но на реальной работе DS я ни разу не писал инвертацию бинарного дерева. Это инструмент прохождения собеса в некоторых конторах, а не рабочий навык. Если ваша цель — войти в профессию, а не пройти конкретный жёсткий алго-собес, перекладывать сюда десятки часов сомнительно.
Что зашло идеально (и чего я недодал)
1. Бустинги и валидация — вот это золото. Лучшее вложение времени. Я разобрался, чем CatBoost отличается от LightGBM, как готовить категориальные фичи, как ставить честную кросс-валидацию по времени, как ловить лик (утечку таргета). Вот это я использую буквально каждый день. И именно здесь у новичков больше всего дыр: люди умеют обучить модель, но не умеют её честно провалидировать, а потом удивляются, почему на проде метрика разваливается.Маленький пример того, что реально важно — разделение по времени, а не случайный shuffle, иначе ловишь лик из будущего:
Казалось бы, банальщина. Но именно понимание, почему здесь TimeSeriesSplit, а не train_test_split, отделяет работающую модель от той, что красиво показывает AUC 0.92 на валидации и сыпется в проде.2. Фича-инжиниринг и работа с данными. Pandas, чистка, агрегации, оконные функции. Скучно, негламурно, но это 80% реальной работы. Никто на собесе не хвастается «я умею делать groupby с правильными агрегатами», а зря — на работе это важнее, чем знать пять архитектур нейросетей.Ещё момент: реальные данные грязные, и половина времени уходит не на модель, а на то, чтобы понять, почему в одной фиче 30% пропусков и откуда они взялись.3. Чего я недодал — MLOps и инженерная гигиена. Вот тут я ошибся в другую сторону: посчитал, что Docker, логирование, версионирование данных, мониторинг дрейфа — это «не для DS, это для инженеров». Пришёл на работу, а модель надо не просто обучить, а завернуть в пайплайн, который кто-то будет поддерживать. Дрейф данных — отдельная боль: модель деградирует, потому что распределение фич поехало, и это надо отслеживать, а не узнавать от бизнеса через три месяца. На это я в подготовке выделил жалкие 15 часов. Надо было втрое больше.
Результат в цифрах
- Полгода подготовки, ~525 часов суммарно (вёл учёт в Notion, хоть и дырявый).- По моей честной оценке — около 40% времени ушло на вещи, которые на текущей работе не использую (глубокий DL, вывод математики руками, алго-задачи). Цифра приблизительная: это самооценка, а не замер с секундомером.- Оффер получил с третьего собеса. На двух предыдущих завалил не математику и не алгоритмы, а вопросы про валидацию и лик — то, что в начале недооценивал.- Сейчас я middle DS, специализация — классический ML.
Сразу оговорюсь: это мой опыт и моя специализация. Если вы метите в CV, NLP или research — для вас DL и математика не «зря», а ядро профессии, и таблица перевернётся. Я пишу про путь в продуктовый/прикладной ML на табличных данных, которого в индустрии большинство. Не воспринимайте мой список «зря» как универсальный — воспринимайте как повод сначала выяснить, чем реально занимается команда мечты, а потом качать под это.И ещё одна слабость этого разбора, честно: вся арифметика часов — это память плюс обрывки логов, а не строгий тайм-трекинг. Так что относитесь к процентам как к порядку величины, а не к точным цифрам.И ещё: «зря» — слово громкое. Хотя нет, не совсем зря. Тот же DL дал мне насмотренность, а математика — спокойствие, что я понимаю, что под капотом. Просто соотношение усилий и отдачи было перекошено.
Отдельно скажу про Школу 21, потому что без неё этот переход дался бы куда тяжелее. Формат там специфический — нет лекций и преподавателей, ты учишься в режиме peer-to-peer: разбираешься сам, защищаешь проекты перед такими же студентами, проверяешь чужой код и объясняешь свой. Поначалу бесит (хочется, чтобы кто-то просто рассказал, как правильно), но именно это вытаскивает тот навык, который потом нужен на работе каждый день: уметь докопаться до ответа самому и внятно объяснить решение другому человеку. Половину граблей из этой статьи я, кстати, обходил именно потому, что было с кем обсудить — кто-то из ребят уже наступал на тот же лик в валидации и махал руками «не делай так».
Но главное, что дала Школа, — это комьюнити. Звучит как штамп из рекламной брошюры, понимаю, но по факту вокруг тебя оказывается куча людей, которые тоже перекатываются, тоже сидят ночами и тоже не понимают, зачем им SVD руками. С ними можно поныть, можно скинуть вакансию и спросить «это вообще реально или развод», можно вместе готовиться к собесам. Когда ты один на один с двадцатью открытыми вакансиями и синдромом самозванца — это спасает. Опыт реально незабываемый, и если бы меня спросили, что я точно не вычеркнул бы из этих полугода, — Школу 21 я бы оставил без раздумий.
Если бы я перекатывался заново, я бы перевернул приоритеты: 60% времени на данные, фичи, валидацию и борьбу с ликом; 20% на бустинги и метрики; 10% на инженерную гигиену (Docker, мониторинг дрейфа); и только оставшееся — на математику и DL «для кругозора». Главный урок: не качайте по списку вакансий, качайте под реальную работу конкретной команды. И не пропускайте скучное — именно скучное вы будете делать каждый день.