Вы точно хотите быть Data Scientist-ом?
Прочитав замечательную статью от @dalerank, я подумал, а чем собственно мы хуже: моя любимая индустрия тоже полна мифов и разочарований, особенно учитывая недавние «прорывы в AI» и хайп вокруг больших языковых моделей по типу ChatGPT.
Создается ощущение, что теперь каждая компания считает, что ей непременно нужно прикрутить волшебную вундер-вафлю на машинном обучении к каждому своему продукту, добавить AI в рекламную кампанию, и дела пойдут в гору. Шутка ли, этот ваш пресловутый AI теперь даже в холодильниках есть.
Ну, а если на рынке растет спрос, значит должно расти и предложение, вследствие чего я вижу все больше людей, которые приходят к нам в болото с горящими глазами и готовностью перевернуть этот мир, а в итоге разбиваются о скалу реальности.
Нет, скорее всего вы не будете создавать state of the art (SOTA) системы, которые будут рисовать, искать информацию и писать код лучше, чем эти бесполезные кожаные мешки. А даже если будете — это будет только 20% вашей работы. Так ли это грустно? — я постараюсь рассказать под катом.
D — значит data
Что нужно для счастья и работы дата саентиста? Данные. Много данных. Чем больше тем лучше.
Но там где есть данные, всегда есть проблемы с данными: уникальные айдишники становятся не такими уж уникальными, время прыгает как доктор Кто в лучшие годы своей молодости, один и тот же пользователь может быть одновременно мужчиной, женщиной и даже медведем (из реальной системы одной ветклиники), а цены конкурентов девальвируются быстрее чем рубль в 90е.
И все эти проблемы надо:
кому-то найти
понять что же это на самом деле за проблема, ведь иногда бывает: «А, ну да, айдишники могут быть не уникальными, если платформы разные. Но мы это исправили 2.5 года назад»
придумать что с ней делать
Именно этим вы будете заниматься львиную долю своего рабочего дня — смотреть на данные, находить все больше и больше проблем, и пытаться по крупицам собрать информацию, чтобы понять как с ними быть. И это еще при условии что данные у вас есть и их легко найти. Зачастую их придется еще и собирать: либо писать все самому, либо просить помощи разработчиков, дата инженеров, но у них есть свои проблемы — фичи в спринте сами себя не напишут и данные для дашборда сами себя не соберут.
Многие не выдерживают и сходят с ума.
Еще один день обработки данных
First rule of Machine Learning: start without Machine Learning
К дата саентистам приходят с проблемой, чтобы они ее решили — как вы это сделаете всем, за исключением парочки ваших коллег и технически осведомленных друзей, более менее все равно. Как мне кажется, именно здесь кроется разница между бывалым специалистом, и человеком, только вставшим на путь приручения искусственного интеллекта.
Усталый от жизни сеньор соберет и очистит данные, покрутит их всеми возможными способами, почитает десяток научных и не очень статей и поймет, что задачу можно качественно и быстро решить без использования нейросетей, которые сожрут весь годовой бюджет на аренду видеокарт в AWS. Я знаю компанию, которая успешно росла на протяжении 4х лет, где весь алгоритм оптимизации рекламных кампаний состоял из трех вложенных if
Вообще чаще всего проблема будет решаться чем угодно, но не машинным обучением (и уж тем более не нейросетями), вот только малый список того, что может быть проще, дешевле и быстрее: простые эвристики, линейная и целочисленная оптимизация, статистические методы. Так, например, в одном из алгоритмов, используемых Spotify для рекомендаций, нет никакого «волшебного AI» — лишь математика и алгоритмы, доступные смышленому девятикласснику.
Многие хотят создавать феерические по своей сложности и возможностям системы, а когда этого не находят они разочаровываются и уходят.
Математика и профессиональный рост
Кто бы что ни говорил, но data scientist-у без математики никак, хотя бы потому что вся область отпочковалась от теории вероятностей и статистики. Математики много и ее хорошо бы знать, так как любая, даже самая сложная и впечатляющая система: ChatGPT, StableDiffusion, Copilot, etc. — всего лишь большая вероятностная машина, состоящая из десятка математических операций и концепций. Чем больше ты знаешь и понимаешь как это все работает, тем меньше у тебя будет какого-либо восторга.
Машинное обучение (в особенности глубокое) — сравнительно молодая область, поэтому она стремительно развивается, и важно постоянно следить за новыми подходами и идеями, чтобы оставаться востребованным. Во многом это похоже на медицину. Не то чтобы специалисты других IT профессий не должны развиваться, но в условный стандарт C++ кардинальные изменения, которые могут изменить то как ты работаешь, вносятся не с такой частотой.
Профессиональный рост DS, по моему, очень странная штука: мне довольно тяжело определиться с каким-то четким списком того, что должно быть у мидла, чтобы он не был джуном, и у сеньора, чтобы он не был мидлом. Смотря на то, как люди изводят кандидатов на собеседованиях техническими и теоретическими вопросами, только лишний раз убеждаюсь в трудности этого разделения. Тем более, что порой бывает так, что выпускник элитного вуза, знает мат. часть лучше собеседующих :)
Наверное, как и в геймдеве, таким критерием будет наличие выведенных проектов (моделей) в прод. А еще та самая прагматичность при решении проблем, которую я упоминал ранее — это включает в себя понимание того, какую проблему пытается решить бизнес, чем можно пренебречь, а чем не стоит.
Есть еще альтернативный путь развития — становиться экспертом в какой-то небольшой области: NLP или CV, например, но тогда вам рано или поздно придется делать выбор в сторону рисерча или работы в огромных корпорациях (об этом поговорим чуть позже)
Как вкатиться?
Даже человеку из смежной области, не связанной с данными, будет тяжело: я конечно знаю несколько крутых ребят, которые до этого были разработчиками, но они, по большей части, переквалифицировались еще в эпоху динозавров. Про человека с улицы я вообще молчу. Для некоторых ролей важна специализация — не будете же вы брать в команду автопилота автомобиля человека, который ни разу не видел данные с камер. А не то у вас будет все больше ситуаций, подобных этой.
Джуны. Джунам будет тяжело, особенно сейчас. Я редко вижу, чтобы небольшие компании или стартапы нанимали себе джунов. Оно и понятно, им нужно решать задачи, развивать продукт и времени и задач для джунов зачастую просто нет. Большие компании, по типу Яндекса, Сбера и ко. в России и FAANG за рубежом, пылесосят выпускников элитных вузов и ШАД-ов. Да-да, вам придется конкурировать с теми самыми безумными олимпиадниками, которые с блеском проходят все 10 кругов собеседований по алгоритмам в Яндекс и готовы работать за еду и/или идею.
Отдельно про «корочку». В США и России (в Европе с этим получше) очень любят смотреть на университет, который закончил кандидат, особенно до уровня сеньора. Я связываю это с тем, что сама специальность тесно связана с математикой, ну и старое доброе «рыбак рыбака» — ведь большинство ребят, которые стояли у истоков и двигали индустрию закончили топовые вузы.
Четвертое алго-собеседование джуна в Яндекс
Вы не создадите SkyNet
Я захотел заниматься искусственным интеллектом после того, как AlphaGo совершила невероятный, для своего времени, прорыв — обыграла действующего чемпиона мира по Го. Если в шахматах у людей не было никаких шансов уже с середины нулевых, то количество возможных комбинаций ходов в Го было настолько велико, что бездушная машина терялась при переборе вариантов. Люди прогнозировали, что вычислительные мощности, которые позволят компьютерам обыграть человека в Го, появятся где-то около 2040х. А тут пришли ученые со своими нейросетями и всех обыграли — ну круто ведь?
Сейчас «new big thing» это большие языковые модели (LLM) — люди завороженно смотрят, как у них на экране появляется собеседник и помощник умнее, чем в реальной жизни (ну почти); да еще и количество пиара вокруг подливает масла в огонь.
Грустная реальность такова, что скорее всего, вы не будете создавать модели, о которых будет говорить весь мир. Большая часть из нас, будут использовать знания и опыт для того, чтобы решать конкретные проблемы бизнеса: начиная от того, как упаковать товары в коробки, чтобы уменьшить расходы на картон, заканчивая увеличением количества кликов по мобильной рекламе.
Если же вы все-таки очень настойчивый, и хотите изменить этот мир к лучшему, то вам дорога в рисерч команды огромных корпораций, у которых так много денег, что они могут позволить себе держать команды и вычислительные мощности, создающие продукты, без сиюминутной прибыли (ребята из sberdevices, привет!). Да, такие команды шагают на острие индустрии и релизят модели, о которых будет прикольно читать посты на Хабре. Но в таком случае, вам нужно много и долго учиться и быть высококлассным спецом в какой-то области, чтобы стать частью такой команды и попасть в список соавторов. Ну и лично мне пока тяжело понять, как модельки, рисующие красивых девочек из аниме могут завтра изменить наше представление о мире.
Тут есть очень простая аналогия: большинство разработчиков не пишут новые языки программирования или изощренные высокопроизводительные библиотеки, они пилят продуктовые фичи или решают какие угодно другие бизнес таски. Плохо ли это? — мне кажется нет, каждый выбирает свой путь, который приносит максимальное удовлетворение.
Технологии
Стандартом был, есть и скорее всего будет Python, как бы его не ругали любители системных языков. Для DS-а язык программирования это в первую очередь инструмент для решения задачи и питон для этого отлично подходит. Крайне мало людей в наших кругах программируют из-за любви обращения к адресам памяти и вращения индексов в БД. А даже если они это дело любят, то скорее всего делают это в свободное от работы время, и на чем то более подходящем и приятном, по типу Rust.
Мне кажется, сейчас уже практически прошли времена, когда DS сидит и создает изолированные сферические модели в своем любимом Jupyter. В силу огромности современных моделей, даже самые хардкорные рисерчеры вынуждены писать и деплоить код какого-никакого, но продакшн уровня.
Если вы работаете над продуктом, то зачастую вам нужно будет самим писать полные сервисы: от пайплайна сбора и обработки данных, до инференса моделей и их общения с остальными сервисами через API. Ничего плохого в этом нет, я вообще считаю, что хороший сеньор, какой бы специализации он не был, должен уметь делать много вещей плохо, но хотя бы одну хорошо. Так что типична ситуация, когда стейкхолдеры попросят написать небольшой фронт для мониторинга ваших моделей с их предсказаниями.
Почти всегда вы будете пользоваться готовыми технологиями: большинство библиотек пишутся и поддерживаются теми самыми огромными корпорациями, для версионирования, оркестрации и обучения ваших чудесных моделей тоже есть 1001 сервис. Опять таки, работа саентиста стоит в том, чтобы придумать как решить ту или иную проблему при данных ограничениях, то как ты ее будешь реализовывать, в большинстве случаев, вторично.
Работа с людьми
Вне зависимости от того, занимаетесь ли вы исследованиями или решаете бизнес задачи, вы не будете это делать в одиночку. Исследователи чаще всего работают командами, поэтому вас ждут многочисленные обсуждения недавних работ на arxiv, брейнштормы новых идей и т.д.
DS-ы, решающие продуктовые задачи, тоже не могут делать это сами по себе. Даже если над проектом работает один человек, то, скорее всего, этот человек не будет знать о ней ничего. Например, много ли вы знаете о том, как товары перевозятся в контейнерах? -, а ведь вам нужно будет оптимизировать закупки так, чтобы минимизировать их стоимость. Поэтому вы будете общаться с логистами, менеджерами и другими людьми, которые работают с этим каждый день. Может даже на склад съездите. Без этого никак, иначе вы не будете знать достаточно, чтобы адекватно решить поставленную задачу.
Некоторых людей эта часть работы нервирует, некоторым нравится, но факт в том, что на это будет уходить значительная часть рабочего времени, особенно в начале проекта.
Зачем оно все тогда нужно?
Что касается денег, то DS, как в прочем и любой другой IT специалист, золотых гор в найме не заработает. Зарплаты сравнимые с software engineer-ами, может немного выше. В энтерпрайзе платят больше, чем в обычной продуктовой компании. В стартапах платят поменьше, но как раз есть шанс озолотиться на доле в компании. Сейчас такой вариант вполне возможен, т.к. все хотят себе AI.
Говорят, что альтруизм это априори эгоистическое начинание, но я люблю свою работу за то, что могу облегчить работу, а иногда и жизнь людям. То, что это порой делается, не при помощи черной магии AI — для меня не такое уж и большое разочарование. Ну и за то, что каждая задача по своему уникальна и это привносит постоянный челлендж. Мне кажется, что если вы получаете удовольствие от решения сложных и неординарных задачек, то приходите — вам понравится!