На днях я разговаривал с бывшей студенткой Университета Вашингтона Сарой Рич, которая получила степень по математике и компьютерным наукам, а затем ушла в Твиттер. Я спросил ее: так что бы вы сказали доктору математики? студент, который задавался вопросом, хотели бы они быть специалистом по данным в технологической отрасли? Откуда вы знаете, понравится ли вам такая работа? И если вы решили заняться этим, какова стратегия, чтобы стать хорошим кандидатом на работу?

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

Когда я вернулся и отредактировал свои первоначальные пункты списка Джордана, я понял, что мне есть что сказать по этой теме. Мои пункты списка начали переполняться. Итак, TL; DR (который, я признаю, все еще довольно длинный) находится в пунктах списка. Однако, если вы ищете приключения в стиле Фостера-Уоллеса, а также, возможно, самые уникальные идеи, которые я могу предложить по этим вопросам, сноски — это то, что вам нужно.

Несколько пунктов, чтобы определить, хотите ли вы (аспирант математики) такую ​​работу:

  • Нравится ли вам общаться с разнообразной аудиторией, многие из которых не являются знатоками математики? Умеете ли вы переводить математические идеи на нематематический или менее математический язык?
  • Можете ли вы уйти от проблемы, когда решение «достаточно хорошо», можете ли вы относительно легко переключаться между задачами или проблемами? Вы согласны с простыми решениями проблем, у которых могут быть более сложные решения, но только с быстро убывающей отдачей?
  • Согласны ли вы отказаться от работы над своей диссертацией и, возможно, больше не публиковаться в научных журналах? (Если вы не работаете в Google или Microsoft Research, скорее всего, у вас не будет такой возможности. Однако вы можете публиковаться в отраслевых журналах или на междисциплинарных научных конференциях). Согласны ли вы стать больше практиком, чем теоретиком?
  • Нравится ли вам программировать на объектно-ориентированном, статически типизированном языке, и вы хотя бы прилично в нем разбираетесь? Это действительно зависит от компании и роли; в Twitter, чтобы хоть как-то повлиять, нужно было создавать его самому, а это означало писать код на Scala; если вы хотели сделать что-то ДЕЙСТВИТЕЛЬНО интересное, вы должны были ДЕЙСТВИТЕЛЬНО хорошо разбираться в Scala, что является серьезной инвестицией. В других компаниях все может быть по-другому, но, по моему мнению, действительно интересная работа требует знания программирования на уровне, на котором вы могли бы сойти за инженера-программиста. Однако есть целая категория Data Scientist, для которой вам нужно знать только R или Pandas (R-подобный пакет Python) и хорошо разбираться в статистике. Для этой работы вы в основном выполняете автономный анализ различных бизнес-показателей; если вы начнете создавать модели пользователей в R, вы довольно быстро столкнетесь с ограничениями по размеру, а затем также «производите» (т. е. создадите работающую систему для обновления и реализации вашей модели), ваш подход должен быть принят кем-то другим, что затем берет на себя вы с места водителя в хаотической среде большинства технологических компаний. В заключение, доктора математических наук рискуют стать бесполезными в технологиях, если они не могут что-то строить[1].
  • У вас есть один или два проекта по программированию на Java или C++ (или Scala, или Go), в которых есть реальное приложение для машинного обучения. Выберите набор данных, решите проблему, разместите его в своем блоге.

Как позиционировать себя для этих типов вакансий (и под «этими типами вакансий» я подразумеваю технические должности в качестве специалиста по обработке и анализу данных или инженера по машинному обучению НЕ в Google Research или Microsoft Research):

  • У вас есть проект анализа данных R или Pandas, в котором вы берете некоторые общедоступные данные и собираете некоторые идеи. Здесь важны ясность общения и красивая презентация, а не супер впечатляющие технические характеристики, хотя это тоже хорошо. Если вы делаете свой проект в блокноте iPython, а затем выкладываете его на github, тем лучше.
  • Будьте готовы пройти собеседование по программированию. Ресурсов Google, которые помогут вам в подготовке, предостаточно. Вы можете набрать скорость в 5–10 раз быстрее, чем типичный студент-выпускник компьютерных наук (например, вам не придется неделями мучиться с нотацией суммирования), но для этого все равно требуется немного В идеале вы должны начать практиковаться регулярно (например, 1–2 часа в день, если у вас есть минимальный опыт работы с CS или алгоритмами) за 2–6 месяцев до выхода на рынок труда. Смотри на это как на квалификационный экзамен. В большинстве мест вам позволят пройти собеседование на Python, но также может быть неплохо знать, как вы будете отвечать на вопросы на Java или C++. Возмущение или страх перед этой частью процесса не поможет вам добиться успеха, и, возможно, стоит потратить время на то, чтобы добиться успеха. По крайней мере, это даст вам гораздо больше вариантов трудоустройства на выбор. Кроме того, эти затраты времени могут частично совпадать со временем, которое вы тратите на перечисленные выше пункты. И последнее замечание: если вы еще не знакомы с java, я не рекомендую книгу Cracking the Coding Interview. Многие люди клянутся им, но я нашел его слишком ошеломляющим в качестве первого ресурса. Для начала я закодировал алгоритмы, представленные в книге Кляйнберга и Тардоса Algorithm Design (или, по крайней мере, первые 2/3–3/4 ее); книга небольшая и достаточно хорошо написана, чтобы ее можно было прочитать за отведенное время, она охватывает большинство структур данных, которые вас могут попросить реализовать на собеседовании, и на самом деле кодирование представленных алгоритмов было очень хорошей практикой для кодирования интервью. Кроме того, это поможет вам хорошо анализировать время выполнения алгоритмов, что вас обычно просят сделать. Сочетание этого (или работы с похожей книгой) с хорошим веб-сайтом, на котором размещены практические вопросы для интервью, должно быть адекватной подготовкой. Единственная дыра здесь в том, что это совсем не поможет вам понять объектно-ориентированное программирование; Вероятно, рекомендуется найти хороший интернет-ресурс, который поможет вам понять реализацию структур данных в виде классов. Стоит потратить время на практическое введение в объектно-ориентированное программирование, но это, вероятно, наименее важная из уже упомянутых вещей (но может быть очень важной, когда вы действительно начинаете работать, в зависимости от того, сколько производственного кода вы на самом деле должны написать). ).
  • Работодатели могут выбрать вместо собеседования по программированию дать вам проект по кодированию на дом. Вам также нужно подготовиться к ним так же, как вам нужно подготовиться к собеседованию по программированию; поскольку эти проекты, как правило, имеют ожидаемое время выполнения, вам не следует ждать, пока вы его получите, чтобы подготовиться. Первые два пункта также являются очень хорошей подготовкой к этому типу задач.
  • Уметь рассказывать о том, чем вы занимаетесь и что вам интересно, на разных уровнях, с разной аудиторией. Самое важное в переходе на технологии — это то, что вы, возможно, начнете общаться с людьми, которые на самом деле не знают, что такое векторное пространство«[2]». Будьте готовы к этим разговорам. Честно спросите себя, согласны ли вы с этими разговорами.
  • Изучите отрасль и выясните, какие реальные проблемы вам было бы интересно решить. Имейте целенаправленный поиск работы, который отражает, что у вас уже есть понимание того, что там есть, и путь для вашего собственного карьерного роста. Не рассматривайте переход в промышленность как отказ от академической карьеры; иногда аспиранты-математики рассматривают работу в сфере технологий как своего рода запасной вариант, на который они имеют право, если академический путь не сработает. Попытайтесь продолжить эту главу с энтузиазмом, который вы привнесли в свои академические усилия, и представьте себе путь в этом новом контексте.
  • «[1]» Тем не менее, что касается этого пункта, интеграция результатов работы докторов математических наук в рабочий процесс технологической компании является известным камнем преткновения, и существует общее мнение, что отличные навыки программирования в дополнение к строгому математическому образованию могут быть слишком многого требовать от сотрудников; просто не хватает людей, которые имеют эти квалификации. Существует целая кустарная индустрия, которая возникла вокруг перевода идей и моделирования специалистов по данным в развертываемый код, который в равной степени увлекателен и утомителен. Эти аналитические пакеты «черного ящика» являются частью более широкого пространства реализованных решений абстрактно определенных проблем, называемого корпоративным программным обеспечением, где компании-потребители начинают переводить свои проблемы в форму, представляемую программным решением, а затем получают соответствующие ответы, запрограммированные для этого. решение. Как математик, вы можете обнаружить, что предпочитаете идею работы на предприятии или в компании «B2B»; вы имеете дело с абстрактными проблемами и реализуете решения, возможно, в соответствии с некоторым математическим моделированием. У вас может быть возможность быть строгим и требовательным при разработке этого программного обеспечения и сделать критический выбор в отношении того, как информация агрегируется, обрабатывается и распространяется в течение ее жизненного цикла через вашу систему. Вы можете быть более непосредственно на критическом пути создания конечного продукта компании, чем в компании, основной целью которой является не производство аналитических решений. С другой стороны, как Data Scientist, работающий в компании, которая является потребителем корпоративного решения, вы можете стать свидетелем явления, при котором сотрудники переводят свои выходные данные в формат, пригодный для использования корпоративным решением, а затем соответствующим образом формируются этим переводом. и его влияние на имплицитную характеристику значения и ценности их работы*. Это происходит постоянно и повсюду и может привести к возникновению феномена компании, которая на самом деле сейчас представляет собой не что иное, как взаимодействие множества собак, каждая из которых виляет множеством крошечных хвостиков. Еще больше мета: как специалисту по данным определенного типа, вам может быть поручена роль выделения значимого сигнала из множества выходных данных, генерируемых различными корпоративными системами для отслеживания и агрегирования данных. На самом деле именно этот тип неясной бизнес-проблемы лучше всего подходит для решения, и хороший работодатель обратится к вам за помощью в выборе показателей*, которые будут правильно информировать руководство о прогрессе компании. Однако возможность создания роли Data Scientist на этом уровне редко признается или ценится. Скорее всего, ваши навыки будут ограничены более техническими занятиями, которые в первую очередь могут быть плохо информированы с точки зрения бизнеса; вы потратите свое время на поиск решения слегка или сильно неверно истолкованной и поэтому неверно сформулированной проблемы. Но пока вы создаете модели машинного обучения или системы глубокого обучения или что-то еще, что вас интересует, и вам за это много платят, это может не иметь для вас значения.

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

* Метрика в сфере бизнеса — это просто измерение, обычно вещь, которую можно подсчитать, или процент, часто просматриваемый с течением времени. например ИТ-отдел может иметь корпоративное программное обеспечение для управления своими задачами, которое показывает количество открытых запросов, которые у него есть в любой момент времени, текущее количество решенных запросов или решенных запросов каждый день или неделю. Превратить эти показатели в стандарт для оценки эффективности ИТ-отдела не так-то просто; компания может расти; приобретение другой компании могло привести к шквалу ИТ-запросов на быстрое привлечение новых сотрудников при сохранении рабочей среды рабочего стола, аналогичной той, которая была у них раньше, или что-то в этом роде. Какая метрика является достаточно гибкой, чтобы отражать успехи сотрудников в разнообразных ситуациях, возникающих в реальной жизни? Это пример не совсем тривиального вопроса о метриках для измерения успеха, который постоянно возникает на всех уровнях компании.

«[2]» До сих пор у вас была привилегия работать на математиков (в основном). По крайней мере, вашим непосредственным руководителем был математик, чью математическую проницательность и интуицию вы (надеюсь) очень уважаете; вы, вероятно, привыкли работать на кого-то, кто может не только понять, но и проанализировать и оценить ваше решение проблемы (действительно, в некоторых случаях им, возможно, приходилось активно избегать размышлений о вашей проблеме, чтобы избежать ее решения до вас). Одним из самых больших изменений, когда вы переходите в промышленность, является то, что вы, возможно, перейдете на должность местного эксперта. Это означает не только то, что вы являетесь экспертом по C*-алгебрам, но и кто-то другой является экспертом по этальным когомологиям (кстати, я более или менее забыл, что такое любая из этих вещей; этот факт заставляет вас чувствовать себя грустным или опустошенным? ? На вашу реакцию стоит обратить внимание.); вы, возможно, будете работать на кого-то и с другими людьми, которые так и не развили реального понимания математической логики, которые в основном видят в вас какого-то компьютерно-математического колдуна, чью работу они не могут понять (и я говорю здесь не о о C*-алгебрах, а о стохастическом градиентном спуске или умножении матриц или просто матрицах). Степень, в которой это верно, очевидно, варьируется, но было бы неплохо узнать заранее, насколько важно для вас иметь коллег-математиков, а также насколько важно для вас иметь математически грамотного начальника. Оба вполне возможны, но никоим образом не гарантируются. Вы можете обнаружить, что это имеет решающее значение для вашего счастья на работе, поэтому, сравнивая предложения, не забывайте об этом. Чем меньше ваш непосредственный руководитель может непосредственно видеть достоинства вашей работы, тем больше времени вам придется тратить на ее объяснение и, что более важно, на ее продажу. Однако меньшая способность вашего руководителя контролировать вашу работу может также означать большую творческую свободу; когда у вас возникает проблема, вы можете иметь полную гибкость в определении правильного метода решения; если никто в комнате не может понять, что вы делаете, у вас есть большой контроль. Но на вас также лежит гораздо большая ответственность постоянно демонстрировать ценность вашей работы. Есть компромиссы, и разные личности процветают в каждой ситуации.

Первоначально опубликовано на сайте quomodocumque.wordpress.com 26 февраля 2017 г.

Математики становятся учеными данных: должны ли вы? Как?