Путь инженера-программиста в науку о данных в Yelp и Uber

Я не буду обсуждать конкретную квалификацию и навыки, которые вам необходимы, чтобы стать специалистом по данным; существует много ресурсов по ​​этой теме, и это зависит от того, какая работа вам интересна. Вместо этого я расскажу о своем путешествии в науку о данных (DS) и общем мышлении и привычки, которые помогли мне пробиться в эту область. В конце я сделаю несколько выводов, которые, надеюсь, помогут вам проникнуть в DS независимо от вашего прошлого.

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

После пары лет изучения программной инженерии (SE) я присоединился к Yelp в качестве стажера в сфере SE, работая над проектами, связанными с DS. Примерно через год я присоединился к Uber в качестве стажера DS и вскоре получил высшее образование. Это моя история о том, как я перешел на DS, почему я решил снова переключиться на SE, и что я узнал за этот шестилетний период.

Начало

В 2012 году я поступил в Университет Ватерлоо по специальности мехатроника. Меня всегда восхищало, как можно положительно повлиять на жизнь людей, создавая вещи, которые напрямую им помогают. Сначала я думал, что это можно сделать только путем создания физических вещей, таких как роботы, но в конце концов я понял, что подобных целей можно достичь с помощью программного обеспечения; поэтому в 2014 году я перешел на SE из мехатроники.

Вскоре после запуска SE я начал слышать о машинном обучении (ML). Мой интерес к машинному обучению побудил меня начать изучать его в свободное время, хотя и на поверхностном уровне. Параллельно я продолжал учиться, как стать лучшим инженером-программистом, в основном через стажировки.

Увлечение машинным обучением

Начало моего пути в ML началось без происшествий. Мне не удалось пройти печально известный курс Машинное обучение Эндрю Нг; и не смог закончить студенческий исследовательский проект по компьютерному зрению. По крайней мере, я прошел курс Введение в статистику, единственный курс по статистике, который я когда-либо посещал в университете. Поскольку статистика является основополагающим компонентом ML и DS, по крайней мере, одна вещь шла правильно.

Это было непродуктивное время для моего перехода на DS. Я был больше сосредоточен на получении стажировки в США. Зимой 2015 года я наконец получил стажировку в стартапе в Маунтин-Вью, штат Калифорния. Я построил простую систему рекомендаций, используя k-NN, и панель аналитики. Работа над этими проектами показала мне, как данные и аналитику можно использовать для получения идей, которые помогут создавать отличные продукты. Это вызвало у меня такой интерес, что я, наконец, стал более серьезно относиться к DS и ML.

Погружение в науку о данных и машинное обучение

Осенью 2015 года я прошел стажировку в Yelp. Я присоединился к команде по качеству трафика, перед которой стояла общая цель выявления и предотвращения мошенничества и злоупотреблений. Мне посчастливилось работать над проектами, связанными с DS, хотя меня наняли в качестве стажера SE.

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

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

Мой опыт работы в Yelp дал мне уверенность в том, что я могу браться за более сложные проекты. На нашем хакатоне Yelp мы с моей командой построили классификатор логистической регрессии для выявления предприятий SLAPP. Это научило меня, что извлечение и обработка ваших данных так же важны, как и процедуры или алгоритмы, если не более важны. На другом хакатоне мы с моей командой создали чат-бота для Messenger (до того, как виртуальный помощник Messenger был в моде); он мог отвечать на запросы и выполнять команды. В 2016 году я несколько месяцев работал с постдоком, чтобы создать систему распознавания лиц, которая работает на мобильных устройствах с использованием новых методов глубокого обучения. Для школьного проекта наша команда решила создать инструмент анализа разговоров на основе API-интерфейсов Messenger, который давал бы представление о различных разговорах, таких как настроения, темы и часто используемые слова.

После успешного завершения этих проектов и прохождения еще одной стажировки в SE в Snap летом 2016 года я решил, что, наконец, пришло время заняться чем-то новым. Я подумал, что это может быть что-то в ML, а не в DS.

Серьезно относимся к науке о данных

Осенью 2016 года я рассматривал только стажировки в SE и ML. Посетив информационную сессию Uber DS, я понял, что это может быть отличная возможность из-за интересных проектов, над которыми работали специалисты по данным, и того, насколько талантливыми казались эти люди. Решил подать заявку. В конечном итоге это была единственная должность DS, на которую я когда-либо подавал заявку.

Я все еще не инвестировал в стажировку в Uber DS по нескольким причинам. Я был сосредоточен на прохождении стажировок в SE и ML; У меня не было времени на подготовку к собеседованию DS. Я знал, что эта стажировка DS очень востребована; была только одна вакансия, но были сотни соискателей (это было видно на доске объявлений о приеме на работу в нашем университете). Я соревновался со многими компетентными и увлеченными коллегами с формальным образованием DS. Хотя одним из преимуществ отсутствия слишком инвестиций было то, что во время собеседования это давало мне много душевного спокойствия; Обычно я начинал волноваться, просто думая об интервью.

Вскоре после подачи заявки в Uber мне дали вызов DS. Это включало написание SQL, разработку эксперимента и проведение исследовательского анализа - все это было связано с Uber. Это сделало его новым и интересным; Во время выполнения этого задания я действительно узнал несколько вещей. Отправив мои решения, рекрутер договорился о часовом собеседовании, которое, как мне показалось, прошло нормально. Через несколько недель рекрутер сказал мне, что я был их первым кандидатом на стажировку - я был удивлен и в восторге!

Я понял, что мой опыт, наконец, окупился - благодаря различным стажировкам в SE, побочным проектам ML и работе DS в Yelp. Я бы сказал, что этот опыт более чем компенсировал отсутствие у меня традиционного опыта работы с DS; они были тем, что сделало мой опыт DS уникальным.

Сделано в науке о данных

На этом этапе мне пришлось выбирать между стажировкой SE или DS. Я рассматривал DS как способ развития своих навыков, который отличал меня от других инженеров-программистов, например, узнал больше об анализе, последних исследованиях, машинном обучении и статистике. Я видел DS как возможность изучить более широкую область, чем я изначально предполагал. Со всем, что я узнал за последние пару лет, я внезапно понял, что у меня хорошие возможности для успеха в Uber. По этим причинам я решил принять предложение о стажировке в Uber DS зимой 2017 года.

Это была отличная стажировка. Я учился у одних из лучших в отрасли и имел возможность работать над интересными и сложными проблемами. Это было похоже на мой опыт работы с Yelp, за исключением того, что больше внимания уделялось независимости, презентациям, сообщению результатов и сотрудничеству. В Uber я был увереннее в своих способностях DS. Эта уверенность помогла мне работать над более амбициозными проектами DS после стажировки, такими как наш профиль класса SE. В этот момент я серьезно подумывал о том, чтобы перейти в DS на полный рабочий день.

Выбор между наукой о данных и разработкой программного обеспечения

Осенью 2017 года у меня была последняя стажировка - стажировка в сфере SE в WhatsApp. В 2018 году я заканчивал учебу, и первый вопрос, на который мне пришлось ответить, был: мне перейти в DS или SE?

В конце концов, я решил перейти на SE в WhatsApp. SE удовлетворила мое желание создавать вещи, которые влияют на людей. Это чувство возродилось во время моей стажировки в WhatsApp из-за возможности поставлять продукты, которые мгновенно повлияли на миллиарды пользователей. У меня, как у специалиста по данным, не возникало этого чувства из-за чрезмерного косвенного обращения к конечному пользователю; но вы действительно сильно влияете на продукт через анализ и понимание. Я заметил, что соотношение инженеров и специалистов по анализу данных обычно было несколько к одному. SE по-прежнему оставалась востребованной сферой - я думал, что с большим количеством должностей это обеспечит более стабильную карьеру.

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

Выводы

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

Узнайте, как учиться

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

Найдите наставников и примите отзывы

Попросите их дать честную и конструктивную обратную связь, особенно в тех областях, в которых вы хотите преуспеть. Если у вас нет наставника, вы потенциально можете найти его через работу или через взаимные связи; как правило, лучше познакомиться через Интернет, чем писать холодное письмо. Убедитесь, что вы открыты, четко сформулировали ожидания и пришли к соглашению со своими нынешними и / или потенциальными наставниками.

Рисковать легче, когда вы стабильны

Стабильность может означать стабильную карьеру, финансовую, эмоциональную и / или физическую стабильность. Мне было комфортно в инженерном деле и в жизни; это дало мне возможность исследовать, экспериментировать и терпеть неудачу в DS и ML. Стабильность избавляет вас от стресса и давления, заставляющего поспешно преуспеть с первой попытки. Убедитесь, что вы счастливы и уверены, что вам будет легче попробовать что-то новое, если у вас есть подстраховка.

Примите интуицию

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

Подделывайте, пока не добьетесь

Каждый должен с чего-то начинать. Это сложно, потому что в большинстве случаев от вас ждут, что вы будете знать, как выполнять работу, даже до того, как вас наняли. Это можно преодолеть, научившись достаточно, чтобы получить работу, а затем изучить все остальное на работе - точно так же, как я сделал в Yelp и Uber. Обучение на работе обычно бывает более качественным, потому что вы можете решать реальные проблемы, иметь доступ к ресурсам компании, а также сотрудничать с коллегами и учиться у них. По прошествии достаточного времени и настойчивости вы в конечном итоге станете настоящим человеком, и вам больше не нужно будет подделывать его.

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

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