Создание собственного проекта и создание продукта данных с нуля может ускорить ваше обучение.

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

На своей основной работе я решал интересные задачи, но их объем был ограничен, и мне не хватало навыков для разработки полноценных продуктов. Я пробовал изучать такие навыки, как Docker или AWS, на курсах, но чувствовал, что они касаются только поверхности и не готовят меня к реальным сценариям.

Если вы когда-либо чувствовали себя так же, я настоятельно рекомендую начать любимый проект, чтобы вывести вас из плато и ускорить ваш рост как Data Scientist.

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

Два года спустя небольшой побочный проект превратился в систему сравнения недвижимости — www.resider.pl, веб-сайт с тысячами пользователей и отличной командой, стоящей за ним. В этом посте я поделюсь некоторыми ключевыми выводами из начала этого пути и советами о том, как ускорить вашу карьеру и развитие навыков с помощью любимого проекта.

Любимый проект создает идеальную дорожную карту и платформу тестирования для развития ваших навыков.

Как только вы преодолеете первоначальное волнение, связанное с предсказанием выживших на «Титанике», и получите несколько сертификатов Coursera, вы поймете, что объем навыков, которых вам все еще не хватает, огромен. Легко пройти курс и получить сертификаты, подтверждающие ваши способности в Deep Learning, Docker, AWS или GCP.

Основная проблема с описанным выше подходом заключается в том, что он не отвечает на два ключевых вопроса:

  • Узнали ли вы нужные навыки и как они решают ваши проблемы?
  • Вы действительно изучили их и чувствовали себя уверенно, применяя их с нуля?

Разработка любимого проекта полностью меняет процесс обучения — ваша дорожная карта определяется реальными техническими проблемами, с которыми вы сталкиваетесь в своем проекте. Способность решать эти проблемы — это окончательная проверка ваших навыков. Если решение не работает, вам нужно продолжать учиться.

Цикл Проблема-Решение

В приведенном выше примере показан цикл Проблема-Решение, с которым я столкнулся в начале своего проекта.

  • Я знал, как построить модель ценообразования, но не знал, как делать быстрые прогнозы, поэтому научился создавать API с помощью FastApi.
  • Затем я понял, что, хотя он отлично работает на моем компьютере, я не могу отправить его куда-либо еще, что привело к изучению Docker.
  • После того, как у меня был запущен и запущен докеризованный API, я понял, что мне нужно где-то его разместить, чтобы к нему можно было получить доступ с веб-сайта Front-End. Первым моим выбором был AWS EC2, который стал отличным уроком работы с виртуальными машинами.
  • В конце этого процесса я столкнулся с совершенно неожиданной проблемой обработки портов и настроек безопасности — то, что редко упоминается в курсах, но почти каждый раз возникает в реальных проектах.

Приступая к этой части проекта, я ничего не знал о FastApi, Docker или AWS EC2, но поиск способов решения актуальных проблем казался мне гораздо более естественным. Запуск всей настройки API также был четким тестом, и я достаточно хорошо понял все необходимые шаги.

На протяжении всего проекта я продолжал повторять описанный выше цикл, что позволяло мне никогда не исчерпать идеи для изучения новых вещей. Начав с проблемы, а затем найдя лучшее решение, я изучил маркировку Dala на AWS Ground Truth, построил модель распознавания именованных объектов с помощью spaCy или модель сравнительного анализа цен с помощью CatBoost.

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

Зачем вообще тратить свое свободное время на неоплачиваемую работу?

Если мы согласны с тем, что пет-проект отлично подходит для развития навыков, остается очень важный вопрос — сохранение мотивации.

3 ключевых фактора мотивации домашних проектов:

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

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

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

Что я выиграл, потратив тысячи часов на мой любимый проект?

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

Хорошие навыки

Самая ощутимая польза от проекта — ускоренное обучение и совершенствование моих хард-скиллов. Когда я начал проект, у меня было несколько лет опыта программирования и некоторые знания ML/DS, но мне пришлось освоить большинство навыков, связанных с созданием E2E-продуктов, с нуля.

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

Еще одним преимуществом запуска любимого проекта является тот факт, что, если он достаточно интересен, вы можете привлечь других людей с дополнительными навыками и учиться вместе. Это, безусловно, имело место для меня — как только я взял Филипа (в настоящее время технический директор Resider) на борт, кривая обучения еще больше ускорилась, поскольку у него уже были существенные навыки DevOps и облачных вычислений, которым я смог научиться у него.

Мягкие навыки

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

Работа над собственным проектом в команде — отличный ускоренный курс по управлению проектами и продуктами. Это также дает вам хорошее представление о том, как различные области влияют на весь процесс разработки и как они связаны.

Это также научило меня некоторому смирению с точки зрения важности различных областей разработки продукта. Сначала я действительно думал, что отличный информационный продукт защитит себя даже с дрянным пользовательским интерфейсом — потому что он будет настолько удивительным, что люди в конце концов разберутся в нем. Алеку (в настоящее время CPO Resider) потребовалось много терпения и настойчивости, чтобы убедить меня, что все как раз наоборот и что без отличного пользовательского интерфейса даже самые лучшие области аналитики и машинного обучения обречены на провал.

Совершайте ошибки в безопасной среде

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

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

Создание любимого проекта сложно, но полезно

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

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

Я надеюсь, что эта статья побудит вас начать любимый проект и даст советы, если вы уже работаете над ним.

Спасибо за ваше время!