Фунгусятина | Как я вкатывался в Data Science. Гайд для больных людей

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

Фунгусятина | Как я вкатывался в Data Science. Гайд для больных людей

Дисклеймер: это не полноценный гайд по вкатыванию в такую специфичную область как Data Science, ибо у меня не хватит ни сил ни времени расписать абсолютно все свои мысли по этому поводу, засим, большая часть истории будет посвящена личному рассказу о том, как ещё один ноунейм из инторнета пришёл в эту профессию и небольшие tips, которые были составлены мною за джва (вру, три) года обитания в этой сфере. Если вы ждали чего-то более прикладного то здесь это будет, но лишь отчасти, всё остальное - лишь суровая реальность бытия.

Как я стал погромистом

На самом деле какой-то случайности в этом не было: я начал заниматься программированием очень рано, ещё в 7 классе, а изучать компьютер и пытаться натыкать что-нибудь в нём интересное и того раньше. Это сейчас дети начинают программировать аж с 5 класса на Python, но в мои годы такое новомодное веяние ещё не практиковали, а писалось всё, как это не прискорбно, на Pascal. Наверное сейчас, кому-то из аудитории захочется поинтересоваться, а почему так рано я решил попробовать себя в этом? В чём причина подобного мува со стороны дитя начать заниматься в одиночку таким делом? А всё просто: пока мои ровесники проходили всякие игры по типу Max Payne, Call of Duty MW, Bioshock и прочие, не задумываясь ни о чём, меня всегда поражало то, что такие великолепные вещи делаются всё теми же людьми, с помощью каких-то магических слов, которые они как заклинание вписывают в свой ПК и на выходе получается маленькое чудо, в виде всем нам привычных видео-игр.

Мне взрывало мозг от одной лишь мысли что я могу всё это сделать сам...
Мне взрывало мозг от одной лишь мысли что я могу всё это сделать сам...

Начал я с того, что решил изучать C#. Не спрашивайте почему именно его, я и сейчас-то ответить толком не смогу, а чего вы ждёте от ребёнка? Насколько мне помнится, я просто начал листать список самых популярных языков и увидел что C# моложе C++ ну и подумал, ну раз новее значит явно круче (это было моей первой ошибкой). Изучал я всё это дело максимально по-спартански - без компьютера. Нет, он был у меня конечно, но скачать 5 гигов дистрибутива Visual Studio, в деревне, с модемным инетом, было сродни самоубийству, а затем получению п*?@лей сначала от родителей а потом от родителей родителей за то, что просрал такое количество трафика. Поэтому я скачал компилятор шарпа под Android. Да, ребята, вот так я программировал: сначала смотрел в интернете на том же маленьком телефончике команды и что они делают, а затем вписывал это всё на миниатюрной клавиатурке с мыслью, дай боже оно запустится и с нетерпением ждал результата.

Всё ещё благодарен разрабам за мой билет в эту сферу!
Всё ещё благодарен разрабам за мой билет в эту сферу!

Так, шаг за шагом я приближался к своей цели, начать писать видеоигры! Правда одно было непонятно: как из print'ов и if-ов можно было запустить игру? Как вообще запустить хоть что-то кроме чёртового калькулятора на этой фиговине???

Так я узнал про gcup.ru

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

Время идёт, контент меняется, а сам сайт всё такой же каким я его и запомнил в 2012 году
Время идёт, контент меняется, а сам сайт всё такой же каким я его и запомнил в 2012 году

Ещё в 7 классе я как-то сразу понял что реализовывать свой движок у меня не хватит ни сил, ни ума, ни упоротости, а поэтому моментально было принято решение начать разрабатывать свои "шедёвры" на каком-нибудь движке, главный вопрос которые оставался не закрыт был лишь один: на каком? Куда бы я не посмотрел, везде и всюду были тонны самых разных штук и технологий для разработки игрософта, но везде нужны были эти чёртовы плюсы! Однако по счастливой случайности, бороздя просторы своего любимого (в прошлом) сайта, я с удивлением обнаружил движок, который в последствие станет моим основным якорем для, почти что, 90% всех разработанных мною игр и им стал...

GameMaker Studio, который пока что находился в бете. Ещё там где-то постоянно маячил Unity со своим C#, но писать на нём было так неинтуитивно (по меркам 7-классника конечно) что я быстро потерял к нему интерес и стал писать под GMS, ну а если конкретно, то под встроенный в него язык GameMaker Language, всё-таки я программист а не этот ваш любитель блоки с действиями повставлять!

Мои шедевры которые никогда не увидят свет!
Мои шедевры которые никогда не увидят свет!

Тем временем в школе начали преподавать программирование, и пока мои одноклассники, с охреневшим выражением лица, пытались понять что это вообще такое, я мог закрыть все задачки за один урок и вследствие чего мне приходилось ещё и решать задачи со звёздочкой. Программировать на C# я вообще перестал и в основном баловался с GameMaker, пытаясь реализовать разные игровые механики, которые я всегда мечтал увидеть в играх, но дальше от их реализации я не уходил. Свою последнюю попытку собрать "крупную игру" я предпринял, ну чтобы вам не соврать, наверное в классе 10? После чего я закончил с этим, ведь уже к тому времени закончился 11 класс, а это означало что пора поступать в университет...

У меня всё ещё хранятся скомпилированные экзешники от неё, это было прекрасное время скажу я вам :) 
У меня всё ещё хранятся скомпилированные экзешники от неё, это было прекрасное время скажу я вам :) 

Поступил я на бизнес-информатику. Мы изучали много всего, но за время первого курса я стал всё больше задумываться, а правильную ли я выбрал профессию и нравится ли мне вообще всё это? Всё казалось нереально сложным в понимании, хоть я и писал под C# на первом курсе что должно было облегчить мне задачу, я нихрена не понимал, что происходит в нём. Опуская детали, могу сказать что буквально за один семестр мы прыгнули сначала от простых поисков в матрице наибольшего значения до полноценной реализации небольшого ASP.NET приложения с подключением БД к ней. Было нереально тяжело себя заставлять писать что-то дома для ДЗ, ибо мне просто было настолько противно от всего что я делал, что я постоянно задумывался а нахера мне всё это? Так было до второго курса, пока не пришёл тот, кому я безумно благодарен в излечении моей "программисткой" потенции, и имя ему...

Python

Как ни странно, это теперь мой любимый мем
Как ни странно, это теперь мой любимый мем

Нужно ли мне ещё что-то добавлять к этой картинке? Тогда я был уверен, наслушавшись бредней дебилов, что Python, это говно недостойное серьёзного программиста, да и сейчас я уверен что скоро сюда прибегут сотни комментаторов, которые начнут потешаться надо мной и я думаю что им стоит пойти нахуй с такими заявлениями. Для меня этот язык стал не просто спасением, я буквально как и парень в этом меме открыл для себя целый новый мир, расширив границы своего понимания как всё это (я имею в виду вообще всё в компьютере и в программировании в частности) работает между собой, но больше всего меня поразило то, с какой лёгкостью я мог прототипировать какие-то штуки которые я хотел сделать на C#, но по разным причинам, толком не понимал что для этого нужно, а в питоне стоило лишь прописать import thread и я уже могу создавать программу в несколько потоков!

Так я начал изучать Python.

Теперь я вынужден опустить пару моментов в своей биографии, ибо если я начну рассказывать, как я пытался запустить свой стартап на это ещё уйдёт неимоверно огромное количество времени и букв, поэтому ближе к делу: на третьем курсе у меня встал вопрос, а где вообще нужен Python и как по нему начать работать? В Backend мне идти не хотелось, но внезапно от своего (уже бывшего) друга я узнал про такую новомодную сферу как Data Science.

Буду честен, я пытался читать статьи на тему нейросетей ещё в 2017 году, но тогда я понимал в них чуть больше чем ничего. Какое-то обучение с учителем, какие-то функции активации... Но как я уже сказал выше, у меня был хороший знакомый, который в то время сам пытался в это вкатиться (к слову сейчас он работает бэкером и больше не занимается ими) и понимал в них гораздо больше чем я. Ну и слово за слово, я стал пробовать разобраться в этом бардаке...

Кажется что всё просто, но как известно дьявол кроется в мелочах.
Кажется что всё просто, но как известно дьявол кроется в мелочах.

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

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

Сейчас чтение таких формул кажется чем-то обыденным, но не 5 лет назад.
Сейчас чтение таких формул кажется чем-то обыденным, но не 5 лет назад.

Первую работу, ещё во время стартапа, я нашёл на позицию Data Analyst в довольно-таки крупную фирму и было это дело в 2018 году.

Прошёл я туда, как ни странно, с первой попытки: первый отклик, первый собес, первый оффер. Всё как по маслу. И отказался в день подписания оффера. Почему спросите вы? Пугало то что мне придётся сидеть в офисе почти что 24/7, понимал что если я сейчас займусь этим, то я больше не смогу быть свободным человеком и заниматься своими собственными идеями (речь, конечно, про стартап), поэтому я просто взял и сказал ребятам, что я не хочу идти к ним (да простят меня все HR мира сего). Уговаривали меня ещё пару дней, но я упорно продолжал им писать что не хочу этого и вскоре от меня отстали.

До сих пор храню код с тестового у себя на винте...
До сих пор храню код с тестового у себя на винте...

Дальше был стартап, стартап, стартап... и вот стартапа не стало. Как я уже писал раньше, это долгая история и её конец не такой предсказуемый, как вам может показаться, но, чтобы не усложнять эту историю, представим, что всё просто в одночасье рухнуло. К тому моменту, я уже успел поступить в магистратуру, правда бросил её ибо кроме разочарования у меня больше ничего от неё не осталось. Я поступал на Big Data & AI в надежде, что смогу подтянуть свои знания в математике и меня обучат чему-то крутому, но по итогу, как выразилась моя вьетнамская однокурсница: "Это как просмотреть курсы на Coursera, но с плохим английским". Врать не буду, это даже хуже. Я учился далеко не в шараге, ибо я намеренно шёл к цели стать ML/DL ещё с 3 курса (писал статьи в универский научный журнал, выступал на конференциях, проходил практики по этой теме и закорешился с преподом которая шарила в этой теме) и если не бак, то хотя бы магу хотелось закончить в приличном месте, но смотря сейчас на то, что происходит в таких универах как ИТМО, ВШЭ и прочих злачных местах понимаю что этот мрак он везде и знаний которые действительно нужны в этой профессии они просто не смогут вам дать.

Шёл сентябрь 2022, нужно было искать работу. С ужасом я наблюдал, как на hh.ru моём городе, где ещё 3-4 года назад была уйма предложений о работе для джунов теперь находится зияющая дыра, размером в 1 вакансию на ВСЮ страну.

Буквально все объявления, где нужен человек без опыта работы за 23.09.2023
Буквально все объявления, где нужен человек без опыта работы за 23.09.2023

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

Так я депрессанул

Но как обычно это у меня и бывает, судьба решила всё же пощадить меня и мне подвернулась крайне сомнительная вакансия, но мне были нужны деньги а поэтому я решил податься к ним. Максимально странный собес + тестовое в котором нужно было развернуть какую-нибудь сеточку, которая сможет определять как можно больше объектов на картинке ииии... мне дали оффер. Счастью не было предела. Нужно ли говорить, что в то время (да и сейчас, лол) предложений для джунов просто не было в Data Science сфере? Они появлялись настолько редко, что я кидался просто на всё, что видел: ML, DL, DA, DE, да хоть блять что-нибудь, лишь бы у меня была денюжка в кармане. Всё остальное время я ужасно стрессовал, ведь у меня была девушка, которая по сути всё это время нас содержала, пока я пытался найти хоть что-нибудь на рынке по своей специальности. Безумно благодарен ей и своим родителям которые помогали мне всё это время, ибо без них я хз как бы я жил дальше.

Так я стал работать

И вот, моя первая работа, в небольшой команде, за реальные деньги! Да ещё какие: 60.000 рублей! Боже, тогда (аж целый год назад!) эта сумма казалась мне какими-то несметными богатствами да что уж, я готов был за них не то что жопу рвать, в принципе себя в рабство отдать этим чувакам, лишь бы и дальше платили! И слава богу они платили...

Тима поначалу мне нравилась: ребята что-то ковыряли, главПидор (позже поймёте почему он пидор) закончил хорошую аспирантуру в Европе в технической сфере, другие ребята занимались написанием парсеров и прочего стаффа, ну и к тому же мне давали очень интересные задачи. Не буду рассказывать в подробностях шо за шо, скажу лишь что преимущественно я занимался нейронными сетями в области Computer Vision и классическом CV, реже задачами NLP и ML.

Так я стал изучать материал

Схватывать всё приходилось на лету, и вовсе не потому, что ребята были профи и нужно было успевать всё везде и сразу, а потому что по факту они сами нихуя не понимали в этом. Тогда я не придал этому особого значения ибо той осенью у нас в принципе никто, кроме меня, ML/DL не занимался в фирме и лишь только один парень чёто там делал по ним (он слава богу давно ушёл из этой поганенькой конторки) но сами понимаете это был не совсем его профиль, ему просто было интересно этим заниматься. Целыми днями и ночами я искал информацию в интернете по тем или иным вещам ибо я понимал, что мало того что придётся отчитываться перед заказчиком о тех или иных вещах, так ещё и нужно своим ребятам объяснить почему это работает так а это иначе, например: почему accuracy это дерьмовая метрика по сравнению с F1/Fbeta score? Почему сеть плохо учится? Как поднять её показатели? Почему ты выбрал вот это а не то? Короче, вопросы плодились, а ответов я тогда ещё не знал, поэтому так и жил.

Так я стал составлять себе базу знаний, которую в последствии расширил до целого раздела вопросы на собеседовании
Так я стал составлять себе базу знаний, которую в последствии расширил до целого раздела вопросы на собеседовании

Теперь к самому интересному: а почему же я тогда ушёл? Вроде звучит классно, всё постигал сам и постиг ведь! Команда ML, наверняка, к концу твоих с ними трудовых отношений в компании увеличилась (что правда), что не так-то? Опять же ребята, ответ очень простой и старый как наш мир - меня не устроили деньги. Ещё год назад я офигевал с такой зарплаты, это учитывая что я почти ничего не знал в области, но сейчас, при учёте того, что я ГОД успел проработать у них и сдать несколько крупных проектов, угадайте повысили ли мне хоть раз зп? Кто сказал нет, то получает моё одобрение, остальным соболезную ибо если вы думали что в этой фирме уважают своих сотрудников то спешу вас огорошить, кроме как начальства все остальные должны сидеть и молча сосать бибос.

Так я ушёл со своей первой работы

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

И ребят это полностью устраивало.

Как и устраивало то, что после моего предложения к CTO (он же главПидор) поднять мне зарплату на 40.000 рублей (а я получаю сейчас в 4х раза больше при схожем объёме работ просто к слову), ребята сначала 4 недели морозились от меня, то времени не было, то проект ещё один нужный не закрыт до performance review, а потом и просто нашли стажёра и одним звонком уволив меня объяснив всё:

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

Один мудила

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

Буквально я
Буквально я

Буду честен, найти работу мидлом было ещё тяжелее чем джуном. Мне, конечно, стало поступать больше предложений о работе (тут уже сами работодатели частенько мне писали с такими предложениями), но и пройти их было сложнее, но об этом позже.

Сейчас у меня всё хорошо, я работаю в крутом месте (к сожалению без подробностей, ибо я знаю что на DTF сидят мои коллеги и я бы не хотел своего деанона), у меня интересные задачки и работаю я с понимающими, что они блять делают, людьми. По зп меня так же больше не обижают, а поэтому считаю что эта история с хорошим концом. После всего что я написал, стоит уже перейти от разглагольствования наконец-то к действиям, как же всё-таки вкатиться в эту сферу!

Ну не томи, как же?

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

Внимание! Сразу оговорюсь, в Data Science есть ещё куча направлений, как, например, Data Analyst или Machine Learning Engineer и всё что я опишу ниже к этим вакансиям уже 100% НЕ подойдёт, этот список актуален только для Deep Learning Engineer'ов и в частности Computer Vision, поэтому если вы не хотите уходить в нейронки, стоит уже сразу на этом моменте перейти к выводам и комментам.

Чем отличается DL от ML? - ML он же Machine Learning это в первую очередь классические модели, например линреги или деревья решений + моделирование фичей из датасетов. DL это всякие GPT, StableDiffusion и прочие крутые штуки-дрюки в которых уже меньше моделирования и больше понимания архитектур сетей и умению обучить сеточку.

Как там дела на рыночке для джунов в DS? - стабильно хуйово, драться за 60к вечно деревянных придётся с бомжами, которые успели скопить последнее состояние на курсы от GeekBrains, дабы вырвать у них последний кусок заплесневелого хлеба прямо изо рта, и я даже не шучу. Будет сложно, многие работодатели уже требуют высшее образование в инженерной или математической сфере, так что будьте готовы к тому, что просто не будет.

Какой язык учить? - естественно Python. Советую так же начать смотреть в сторону C++ или CUDA. Иногда может всплыть R, но это бывает так редко, что даже сложно сказать стоит ли вообще его трогать.

Что вообще нужно знать в DS? - на самом деле всё: Матан (линал, тервер, стата, дискретка, матанализ и диффуры, теория оптимизации, цифровые обработки сигналов но актуально это для CV), чтобы читать научные работы и вообще понимать многие происходящие процессы в нейросетях. Программирование, чтобы не говнокодить в существующих пайплайнах компании и не получать в морду от коллег за то, что ты решил переписать чей-то класс. Backend или C++, пушо рано или поздно тебя припрягут либо в одну, либо в другую сторону, ну и конеш немного DevOps'овских штук, как например, Docker.

Отдельно, нужна ли математика в DS? - безусловно, да. Понятное дело, что 85% от всей своей работы, вы не будете сидеть, закопавшись в чужих научных трудах и с видом профессора Дамблдора что-то там мастерить из говна и PyTorch блоков. Большую часть своей жизни вы потратите на переписывание или дописывание уже существующих пайплайнов ML систем, создание пред- пост- процессингов для обработки изображений, подключение новых моделек на прод, докручивание уже готовых решений. Но вы так же должны понимать, что задачи связанные с исследовательской деятельностью у вас так же будут, ибо это ваш хлеб. Я согласен, что многие научные решения сразу же публикуют на github, да и реализовывать всё с нуля не всегда может быть правильным решением, но разбираться в этом НАДО, надо понимать что и как устроено, какие есть слабые места или преимущества у моделей, что можно в них подкрутить или изменить под свои нужды. Без математики вы не уедете далеко, хотя бы потому, что вы не поймёте как перемножить две матрицы. Это вовсе не означает, что универская база это всё, что вам нужно, далеко нет. Вам придётся изучать такие вещи, которые универ просто физически не сумеет вам рассказать даже за 2 года обучения одному предмету, а порой это нужно делать быстро и хотя бы просто понимать как это прикрутить к своему решению, пусть и с учётом того, что основной математический аппарат написан уже за вас.

А есть ли хорошие курсы для освоения этой профессии? - скорее нет, чем да. Основная проблема всех подобных курсов заключается в том, что всё там рассказано в духе галопом по Европам: немного того, немного сего и всё это в какой-то странной пропорциональности на мой взгляд, то есть по факту, вас учат не работать с этим, а грубо говоря, знаете, как на интенсивах в духе - слепи сам свою вазу! Ты нихуя не понимаешь как тебе с этим знанием что-то сделать своё в дальнейшем, но зато вазу ты слепил! Примерно об этом все эти курсы. Но всё же если бы вы меня спросили что интересного можно посмотреть, лично я советую приглядеться к курсам ШАД, открытым курсам Samsung на Stepik'е и Karpov.Courses (хотя последних небезосновательно хуесосят профессионалы, но тем не менее это лучше чем Нетология или, прости господи, ХаудиХо).

Ну а как тогда вкатываться, мне правда всё это нравится? - хотите моё мнение? Чудом. В ML/DL сейчас не то что джуну, даже среднему мидлу ну максимально тяжело найти что-то адекватное в соотношении скиллы/зарплата, так что советую идти либо в DE (Data Engineer новое слово для разработчика БД), либо в DA (Data Analyst будешь строить графики всякие) и оттуда начать свою экспансию на ML/DL. Раньше я бы посоветовал вам делать бОльший упор на оформление своего github'а + решать задачи на Kaggle, но если честно сейчас мне кажется такая фигня уже не прокатит. Вы уже должны уметь многое чтобы на вас хотя бы взглянули.

А как там по ЗПшкам, больше чем у какого-нибудь бэкера? - неа, на моё имхо разницы вообще особой нет. Это не относится лишь к Senior, ибо там уже да, но до этого периода зарплата у вас такая же как и у обычных разрабов. Подумайте хорошенько, нужно ли вам всё это, если вы решили вкатиться сюда из-за крышесносных денег, их тут нет, а там где они есть, надо знать так много, что вы просто поедете крышей, прежде чем увидите хоть что-то стоящее в своём кошельке, да и вдобавок на другие направления уже известен весь перечень того, что нужно уметь и по сравнению с DS он гораздо меньше.

Чем предстоить заниматься на этой позиции? - могу говорить только за Computer Vision. Здесь есть три пути: Research, Backend и Run-time. Теперь подробнее о каждом:

Research, пожалуй, самая творческая из всех направлений. Предстоит, как ни странно, изучать папиры (научные статьи), строить свои модельки и заниматься прочими штуками. Нужно знание матана и различных нейросетевых моделей, чуть меньше знания по программированию. Из минусов - основной заказчик на сегодня таких спецов это Сбер или Яндекс, чуть реже, всякие иностранные стартапы с российскими корнями.

Backend, Ну вы и так думаю поняли что нужно будет делать на бэкенде, де-факто ребята ищут чувака который сможет и сетку написать (зачастую просто используя готовые опенсорсные либки), и успешно задеплоить её на продакшн. Будьте готовы ко всем вопросам связанным с бэкендом, что такое Django, очереди, докеры и прочее барахло, по сетям спрашивают буквально по стандарту и за пару собесов вы выучите абсолютно все вопросы связанные с ними.

Run-time, это по факту переписывание всех пайплайнов ML на C++ с целью ускорения обработки изображений в реальном времени. Как ни странно нужно уметь хорошо программировать как на Python так и на C++ ну и по сетям опять же спрашивают стандартные вопросеки.

Но все эти направления объединяет одно: нужно писать сети, разбираться в их обучении, какие вообще бывают связанные с ними задачи и какие архитектуры для этого используются, умение набрать данные под вашу задачу и уметь в смежные штуки по типу MLFlow, Optuna, Hydra, ONNX и прочие MLOps фреймворки. Вы будете сидеть и отслеживать как обучаются ваши модели, хорошо ли проходят собранные данные, если нет то нужно разбираться почему это не работает, искать новые способы для решения поставленной задачи, менять архитектуры и гиперпараметры сетей. В общем это ровно такая же работа как и любая другая: кропотливая и долгая. Ноу мэджик ю ноу.

Но всё же есть какой-то возможно у тебя набор контента просто чтобы вообще понять моё это или нет? - раз уж ты настолько меня настойчиво об этом спрашиваешь, так и быть, подскажу: советую вам для начала обратить свой взор на этих двух ребят - sentdex и Yannic Kilcher. Русскоязычных туториалов я никогда в глаза не видел, следовательно что-то из них рекомендовать не могу, да и не советую ибо если ты хотел по-тихому вкатиться в эту сферу без знания языка могу сразу сказать, лучше тогда не надо.

Нужно ли знать язык? - большая часть твоей работы будет пролегать через ошибки, ответов на которые нет в русскоязычном сегменте интернета, не говоря уже о том, что все научные работы представлены ТОЛЬКО на английском языке (их их репы), так что как ты будешь без языка тут я хз.

Где искать первую работу? - начинайте с hh.ru, пробуйте искать чатики по DS (их на самом деле много) и зачастую там сидят работодатели которые намеренно не публикуют ваку на этих сайтах зато в таких пабликах так запросто, это могут быть как стартапчики так и крупные ребята, а дальше просто надейтесь на своё везение.

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

Что можешь сказать про Machine Learning или Data Analyst? - особо ничего, в первом случае вам нужно сделать огромный упор на изучение статистики и теории вероятности ибо там будет овердофига таких штук, Data Analyst тоже нужна стата, но насколько мне известно в своей основе вы будете извлекать инсайты из данных и составлять дашборды для них что по факту нас приводит к знанию SQL, Big Data, Power BI и тому подобных штук.

Так почему найти работу мидлом тяжелее чем джуном? - проблема в том, что на собеседовании сами собеседующие не понимают как и кого им искать, в следствие чего они пишут одни требования под которые ты можешь подходить, а на собеседовании могут внезапно всплыть вопросы про существование которых ты или не знал, или не работал с ними. Очень часто я приходил на собеседования где меня просили вспомнить как работают гауссовы фильтры и в подробностях рассказать про мат.аппарат преобразований Фурье. С одной стороны я понимаю что им требуется такой человек на проект, но в вакансии ведь ни слова об этом не было, а многие ребята просто пишут код либо используют то, что уже было написано и под свои нужды дообучают сетки и это вполне себе нормально. В общем описывая всё это одним словом: лотерея.

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

Почему ты сам продолжаешь этим заниматься?

И действительно, судя по рассказу складывается впечатление что:

  • Больших денег тут нет
  • Знать надо дохера, а платить будут нихера
  • Вкатиться сложно, но ещё сложнее найти адекватную ваку

И это всё сущая правда. Факт в том, что я просто люблю это всё. Я не отрицаю что в будущем захочу снова уйти в видеоигры, но пока что мне нравится всё то, что мы делаем с моими крутыми коллегами. Мне нравится что я изучаю кучу смежных технологий, нравятся инженерные и рисёчевские таски, понимаете? Я здесь, не столько ради денег, сколько ради того, чтобы быть частью какого-то совершенно иного мира, обособленного от остального программистского сообщества.

Типичный дата-сайенс инженер в глазах обычного программиста
Типичный дата-сайенс инженер в глазах обычного программиста

Мои слова звучат как слова пациента с манией величия, но поверьте как забавно заходить в комменты под *рандомный_пост_про_вкатывание_в_IT* и с удивлением узнавать что DS'ники это некие редкие и волшебные существа о которых никто ничего не знает, но вроде как по слухам они получают дофига и делают какие-то сетки. Порой чувствую себя как неуловимый йети, который здесь и сейчас пришёл с повинной, дабы люди уже успокоились и узнали лично от меня, как оно было на самом деле и они не шизики.

Спешу развенчать все мифы связанные с этим, мы ровно такие же программисты как и все остальные, отличие лишь в том что наш рынок пока что сильно штормит, много хороших специалистов успешно уехало за границу и не горят желанием возвращаться, а остальных либо ищут по всей стране, либо по несколько месяцев не могут закрыть вакансию. Будьте готовы, приходя на собеседование внезапно для себя узнать, что помимо сетей и вещей которые я описал выше, кому-то потребуется знание написания кода под RockChip или всё тот же пресловутый ЦОС или вообще на позицию нейронщика вас начнут гонять по деревьям решений из ML. Здесь может происходить абсолютно что угодно и вы должны быть готовы к этому.

Конец

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

Всем приятных выходных и хорошей следующей рабочей недели!

8686
66 комментариев

Как я вкатывался...
В 7 классе выиграл мир по математике.
В 9 классе забил и ушел на повара в ПТУ.
В 22 год вспомнил, что когда-то кодил и за неделю подготовился к собесу на мидла.
Ультимативный гайд! Лайки, ау?

13
Ответить

Держи брат!

Ответить

главное, чтобы не так)

9
Ответить

Стандартная история вкатунов образца 2015-2016 года)

Ответить

Какие тут все умные. Аж страшно

6
Ответить

Не-не, у меня один нейрон в башке на пару с @Габедан Прайз просто иногда он достаётся мне и я пытаюсь чёта изучать.

1
Ответить
4
Ответить