Как перейти в ML после 16 лет успешной работы с тендерами
Рассказываем, как стать специалистом по Machine Learning после 16 лет работы с тендерами в КонсультантПлюс.
1К открытий2К показов
Много лет назад я получил образование радиофизика по специализации «Информационные системы» и долгие годы проработал в компании «КонсультантПлюс». Начинал свой карьерный путь в компании с позиции инженера по сопровождению, работал с тендерами и за 16 лет вырос до руководителя группы.
В какой-то момент я достиг карьерного и профессионального потолка — начал анализировать, насколько текущая профессия и вся моя экспертиза являются ценными на рынке труда. В результате пришел к выводу, что весь мой опыт, хоть и важен, но за него не стали бы платить радикально больше где-то в другом месте. А мне хотелось дальнейшего развития — и по навыкам, и по финансам. Конечно, в IT в этом плане я видел наибольшую перспективу.
Начал учиться веб-разработке, а закончил курс по Data Science
Сначала я планировал стать веб-разработчиком и пошел учиться по этой специальности в Нетологию. Но изучив HTML и CSS, понял, что программирование в чистом виде — не совсем моё. Через пару месяцев после обучения написал организаторам программы, что не вижу себя в этом направлении. Да и в Воронеже, где я живу, хоть и есть множество вакансий по веб-разработке, но зарплаты для начинающего специалиста очень низкие. Переезжать в другой город я не планировал.
Стал думать, чем заняться, чтобы было интересно и прибыльно. В какой-то момент на работе у меня появилась задача внедрить новое программное решение от разработчика. Нужно было определить критерии потенциальных клиентов, которым может подойти наш продукт, и составить список таких компаний. Все данные были выгружены в гигантские Excel-таблицы, и было понятно, что если их обрабатывать вручную, то это займет недели и месяцы. Я погуглил и потратил рабочий день на то, чтобы понять, как все автоматизировать, написал скрипты, которые в дальнейшем позволили мне буквально за час проделать всю работу.
Этот опыт очень вдохновил: я начал больше изучать информации по аналитике и увидел перспективу в Data Science. Да и в целом мне всегда было интересно копаться в данных, искать информацию, выявлять закономерности. Решил пройти обучение по этому направлению и перенес средства, которые мне вернули за обучение веб-разработке, на курс по Data Science на той же онлайн-платформе.
Как на работе узнали о моей учебе
Позволить себе взять перерыв в работе на полгода-год, чтобы обучиться новой профессии, я не мог — жена на тот момент только вышла из декрета и достаточных накоплений, чтобы длительное время искать себя без постоянного дохода, у меня не было. Помимо этого был страх, что если бросить все в текущей сфере, но ничего не получится в новой, то будет еще сложнее. Поэтому, как и многие, обучение я совмещал с работой.
У меня был свой кабинет, и я спокойно мог смотреть лекции параллельно с решением рабочих задач. Но ко мне заходили коллеги и подчиненные, и через какое-то время по офису пошли разговоры, что я учусь. У руководства появились вопросы, чем я занимаюсь и не планирую ли уходить. Я не стал ничего скрывать — не хотелось формировать у людей ложных ожиданий. Поскольку я закрывал серьезный пул задач по тендерам, компании нужно было время на подготовку человека на случай, если я всерьез захочу найти новую работу.
Для меня это был сложный психологический момент: с одной стороны, никаких предложений о работе по новой специальности я в тот период еще не получил, но и текущему руководству был вынужден сказать, что обучаюсь, не собираюсь отказываться от этого решения и в перспективе хочу куда-то уйти. Хотя если в компании было бы направление по ML или Data Science, я бы взялся его вести и никуда бы не уходил. Но в регионах все это пока очень слабо развито.
В чем сложности поиска работы по ML и Data Science
Я откликнулся на тысячу вакансий, прошел десятки собеседований, сталкивался с множеством отказов. Но здесь важно учитывать тот факт, что работу я искал либо в Воронеже, либо полностью удаленно. А таких вакансий сейчас не так много. Опять же, если искать удаленную работу, надо себя как-то зарекомендовать еще на этапе резюме и собеседований, а для начинающего специалиста это довольно сложно.
К сожалению, специалисты по подбору кадров во многих компаниях относятся к поиску людей очень формально — есть критерии, которым они четко следуют. Например, опыт работы в сфере не менее трех лет, наличие реальных, а не учебных кейсов.
Сложность заключается в том, что ML и Data Science сейчас находятся на этапе развития, когда сотрудник сталкивается на каждом шагу с множеством неизвестных, в которых нужно въедливо разбираться. Поэтому на самом деле намного важнее, чтобы у кандидата был потенциал к обучению, поиску информации, а не полное соответствие формальным критериям.
Мне повезло: компаниям, от которых я получал офферы, было важно, чтобы человек мог освоить большой объем информации за короткое время и прийти к результату — для них это был сигнал, что он и в дальнейшем сможет быстро адаптироваться к прикладным задачам компании.
Через 10 месяцев после начала обучения я начал работать программистом на Python в Воронеже, а спустя восемь месяцев совмещения этой работы и учебы получил еще два приглашения. В первом меня выбрали потому, что мои зарплатные ожидания были ниже, чем попросили бы в Москве. Да и в компании видели, что у меня уже есть широкий набор навыков и знаний в новой для меня профессии. Второй оффер я получил потому, что мое первое образование было техническим, а второе связано с ML и Data Science — им нужен был человек, который сочетал в себе эти компетенции.
О работе начинающего ML-инженера
Сейчас я работаю удаленно в компании «Элвис», которая занимается разработкой микросхем и находится в Зеленограде. Моя позиция совмещает ML-инжиниринг и работу с данными.
Когда я только устроился, пришлось осваивать с нуля Jira, Confluence, GitLab и среды разработки в целом. Да, это интуитивно понятные инструменты, но мне понадобилось время, чтобы разобраться, как люди и команды работают в проектах, кто может мне помочь. Затем пришлось подтягивать свой уровень по ML и Python.
Сейчас в работе я пытаюсь создать правильную систематизацию: нужно выбрать набор данных и обучить нейросеть классифицировать информацию. В конечном итоге нейросеть должна понимать, что один объект относится к одному типу, другой объект ко второму, а третий объект вообще лишний.
Разберем на простом примере: есть железнодорожные составы, и нейросеть должна в конечном итоге понять, сколько в составе плацкартных, грузовых, пассажирских, багажных вагонов. Пока что я обучаю модель на уровне бинарной классификации — когда сеть может дать ответ «да» или «нет» на, условно, вопрос: «Является ли этот вагон пассажирским?». Но я также изучаю множество статей о том, как перейти к многоклассовой классификации, чтобы обучить нейросеть более сложной структуризации.
Также передо мной стоит задача освоить хранилища данных, оптимизацию тренировочных процессов модели и перенести данные в облако: дата-сеты стали огромные, их нужно хранить и обрабатывать на виртуальных или физических машинах, а не на ноутбуке, как раньше. Естественно, для людей, которые уже проходили этот путь, такая задача не составит труда. А вот мне как новичку приходится самому в этом процессе разбираться, читать множество рекомендаций. Например, ищу информацию и исследования на сайтах ScienceDirect, Habr, Stack Overflow или в Медиа Нетологии.
Особенности работы в сфере ML и Data Science, о которых не говорят
Переходя в работу в сфере ML и Data Science, нужно понимать, что из полного хаоса тебе предстоит создать структуру. Это звучит очень романтично, но на самом деле есть несколько особенностей, с которыми ты сталкиваешься:
Постоянное нахождение в неизвестности и с минимальным количеством вводных
Конечно, руководитель проекта нейросетевых технологий ставит задачу или порой мы формулируем ее коллегиально с другими командами, чтобы точнее понять дальнейшее направление исследования.
Но никто, кроме тебя не скажет, какие данные взять, откуда их выгрузить, как структурировать, каким образом обучить модель и использовать её. Например, я могу полдня искать в интернете исследования в моей области и открытые публичные данные, потому что собирать все данные самому — долго и затратно. Но даже та информация, которая есть в открытых источниках, не всегда в реальности релевантна задаче.
Я прочел массу научных статей, где подробно описываются эксперименты, которые могут мне помочь. Но люди проделывают их один раз для научной статьи, а когда я провожу такие же эксперименты на своих данных, они не всегда отрабатывают так же идеально.
Редко получаешь быстрый результат
Только спустя год работы у меня выстроилась логика и хоть какое-то планирование на горизонт в три месяца: что нужно сделать, какие данные собирать и как это делать, как написать методику данных, как ее корректировать, как натренировать модель, что мы хотим получить в результате, какие ограничения есть у всей системы.
Несмотря на то, что такой темп кажется медленным, я всегда стараюсь работать на опережение и сам предлагать новые решения. Если вдруг что-то не получается, коллеги без проблем приходят на помощь и понимают, что качественная работа в ML и с большими данными — не бывает быстрой на данном этапе развития сферы.
В любой момент все может пойти не так, как планировалось
Например, я обучил модель, проверил ее на тестовых данных. Все сработало отлично с точностью до 98%. А когда стал записывать данные в другой день и прогонять их через такую же нейросеть, точность упала до 60%.
Каждая неудача требует большого расследования
Когда я начал разбираться, то увидел, что в данных появились посторонние шумы. Нужно было выяснить, откуда и почему они возникли, как отфильтровать и получить то, на чем тренировалась сетка. Это я неправильно построил модель изначально, или это только сегодня в данных произошли изменения, и надо на них обратить внимание?
Каждый раз я отрабатываю все сценарии ошибки — выстраиваю модель, прогоняю ее несколько раз с разной компоновкой данных. Потом делаю предварительные выводы, вношу изменения в методику получения данных и заново стараюсь получить нужный результат.
Многое зависит от оборудования, через которое достаются данные
Например, на базовом оборудовании RTL-SDR получится один результат, а на более дорогом и мощном Per Vices Crimson будут более качественные и детальные данные. И тогда задача вырастет в геометрической прогрессии, данные можно будет изучить под разными углами.
Почему первое время были мысли все бросить
Поначалу я переживал, что у меня ничего не получается с первого и даже со второго раза. Думал, что проблема во мне. Но в какой-то момент я понял, что проблема в объективных обстоятельствах: в одних условиях нейросеть срабатывает, в других — нужно доработать данные или вносить изменения в сеть. Посмотрел, как работают другие коллеги, и понял, что в целом мы все в одной лодке — ML и Data Science сейчас находятся на таком этапе развития, что по-другому пока никак, и все не может работать, как часы.
Конечно, после 16 лет активной работы с людьми, когда я занимался тендерами и работал в офисе, переключаться на полностью удаленную работу было сложно. На прошлой работе у меня не умолкал телефон, а тут наступила полная тишина, и работаю я по большей части сам с собой. Сначала я думал, что никому не нужен, про меня забыли. Но потом съездил в командировку, пообщался с коллегами, понял, что моя работа действительно востребована. Эмоционально это позитивно на меня повлияло, и я стараюсь теперь чаще ездить-общаться с командой вживую. Но в удаленке вижу плюсы: при должной дисциплине и режиме можно очень эффективно и работать, и успевать решать личные вопросы.
Мне предлагали вернуться в тендерную сферу, но я отказался. После обучения я ушел в программисты с такой же зарплатой, как и была ранее. А вот следующая работа уже дала увеличение чистого дохода практически в два раза. ML и Data Science — сферы, в которых я чувствую и свое активное профессиональное развитие, и перспективы карьерного и зарплатного роста. Так что учиться, учиться и ещё раз учиться! Скажу честно, хоть этот путь и был непростым, но я рад за себя. Надеюсь, что у всех, кто обучается новому и думает сменить профессиональный путь, тоже все получится.
1К открытий2К показов