[Из песочницы] Из физиков в Data Science (Из двигателей науки в офисный планктон)

Не так давно, а именно год назад, наступил мой последний год аспирантуры на физическом факультете ВУЗа под названием University of California, Davis. Вставал законный вопрос — что дальше? За преподаванием, движением науки и прочими развлечениями год пройдёт очень быстро. Решать надо было заранее. Основной план был найти позицию постдока, причем где-нибудь в Токио, Рио де Жанейро или Сингапуре вроде как и путешествуешь, а вроде как и работаешь. И по идее под это дело у меня всё было подготовлено: и статьи, и знакомые, и знаний в определённых областях физики конденсированных сред — на троих. Я начал активно гуглить сайты разных вузов, в интересующих меня географически частях мира, написал научно ориентированный CV, подписался на рассылки где публикуются вакансии постдоков, намекнул всем знакомым, что если что — то мне надо сказать в первую очередь. Я даже по скайпу с какими то профессорами общался на тему работы в их научных группах. В общем всё куда-то катилось. Примерно в то же время к нам в городок заехал один мой знакомый, который тоже выпустился с нашего факультета, но на пару лет раньше. Последние пару лет он мыкался и тыкался в разные конторы и вот наконец нашёл работу с названием Data Scientist. Посидели в баре, потрепались — то, чем он занимается особенно не зацепило (когда каждый день пытаешься разобраться что и куда квантовать, чтобы описать свойства наноматериалов, рассказы о том, как в некой базе данных что-то куда-то аггрегируется и почему это важно для каких-то продаж офисных принадлежностей вообще не цепляют.), но зацепила зарплата. Для справки, в США грязными, то есть до вычета налогов:

  1. Аспирант — $27k
  2. Постдок — $45k
  3. Профессор — $117k

А мой знакомый на позиции без профильного образования, без опыта работы был принят сходу на $100k. То есть лихо объехал весь недружный коллектив постдоков. (Как выяснилось позже он ещё и продешевил, ему надо было на 130-150 идти, так бы и профессуру обошёл.)

Но не в деньгах счастье и даже не в их количестве. Деньги — это всё таки инструмент и не более того.

Знакомый уехал, я окунулся обратно в пучину академической среды. Я как раз лекции в той четверти читал, то есть и лекцию подготовить, и quiz'ы, и на email'ы студентов ответить. Замотался я. Но как четверть закончилась я снова начал думать о том, куда податься после окончания обучения. Что меня всегда смущало в академической среде, так это то, насколько она закостенелая, всмысле не динамичная. Все сидят в зоне комфорта и отказываются из неё вылезать. Скучно. А вот судя по фильмам про кремниевую долину, там всё динамично, молодёжно и прикольно. Но в программисты идти не хотелось, во-первых, неинтересно, а, во-вторых, меня туда и не возьмут. Всё мои околопрограммистские знания — это самообучение, а фундаментального образования в этой области нет. Тут как раз ещё один знакомый проявился, который как раз недавно выпустился и он тоже устроился на позицию Data Scientist'а. И то ли он сам по себе на уши вешает лучше, то ли его работа и правда была интереснее, но в этот раз меня зацепило.

Начал гуглить: непонятно ничего. Data Science упоминается в совершенно различных контекстах, описания требований на позицию Data Scientist принципиально отличаются от вакансии к вакансии. Куча красивых слов про большие данные и искусственный интеллект, но в общую картину они никак не скаладывались.

Надо было с чего-то начинать. И первый шаг, который я сделал — это записался на специализацию Data Science на Coursera. В специализации 9 курсов, каждый в месяц длинной, так что всё это в теории растягивается на 9 месяцев, но этого времени у меня не было. Было начало января, а выпускаться я собирался в июне. То есть времени для того, чтобы набраться знаний в совершенно новой для меня области, да ещё и работу найти толком не оставалось. Поэтому эти 9 курсов я брал по три за раз. Иногда было тяжко, но вцелом это реально.

Что я из этой специалиазации вынес: Data Science — дело тёмное, в том смысле, что каждый пытается натянуть эти два слова на всё что хоть как-то связано с данными. Но стало понятно, что универсальный Data Scientist должен знать статистику, разбираться в машинном обучении и уметь писать код на R, Python, Java.

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

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

До этого были сказки. А теперь я попытаюсь писать более структурировано, потому что поиск работы — это дело серьёзное.

Процесс интервью на позицию Data Scientist в США состоит из следующих стадий:

  1. Резюме попадает к рекрутеру.
  2. Если резюме рекрутеру понравилось — вы попадаете на следующую ступегь, а именно телефонный разговор с рекрутером.
  3. Если этот телефонный разговор прошёл успешно — вы переходите на следующую ступень, а именно разговор с членом Data Science team.
  4. Если и этот разговор прошёл успешно — вы переходите на следующую ступень, а именно телефонное техническое интервью. Обычно в расшареных google docs или в каком-нибудь похожем инструменте.
  5. Как правило, если сомнений в ваших технических навыках нет, то вас пригласят на on-site интервью, где вас будут интервьюировать куча разных людей на протяжении многих часов с перерывом на обед.
  6. Если прошлая стадия прошла нормально вам сделают предложение о работе и вы начнёте оговаривать детали.(negotiation)

Это стандартный набор, но! Вопрос как нанять правильного Data Scientist'a стоит очень остро. Поэтому в каждой компании немного свой подход, например, после технического интервью вам могут на дом дать некие данные, которые надо как-то проанализировать, и представить в виде презентации на onsite интервью(Пример — Pivotal, Bidgely, Uptake), или же это задание дадут перед техническим интервью(Пример — Capital One). Могут попросить решить задачки на HackerRank (Опять же Capital One). А могут пропустить техническое и сразу пригласить на onsite(Пример Affirm).

Между каждой из ступеней может проходить от одного дня до нескольких недель, поэтому начинать надо заранее! В больших компаниях вроде LinkedIn или Google, можно смело подавать на работу за 9 месяцев до окончания обучения. (Это был один из моих серьёзных просчётов, я никак не ожидал, что поиск работы требует так много времени.)

Каждая из ступеней этого процесса требует различных навыков. Итак.

Резюме / профиль на LinkedIn

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

Распространённая ошибка людей, которые составляют резюме/заполняют LinkedIn — они вставляют в него то, чем они гордятся, а вовсе не то, что там надо на самом деле писать. Например, критерием вашей личной крутизны в академической среде являются ваши статьи(порядок авторов важен, лучше быть первым — это жутко модно.), выступления на конференциях и прочие ваши достижения, которые в общем-то всем, вне вашего замкнутого мирка безразличны. Они вам дороги, вы о них усиленно думали на протяжении последних многих лет, но о них писать не надо. В крайнем случае можно упомянуть.

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

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

Научные публикации и выступления на конференциях по темам, которые с Data Science напрямую не связяны — не продать.

Образование — это продаётся, но плохо. У меня сложилось стойкое впечатление, что в San Francisco Bay Area никто не хочет смотреть на твоё резюме если у тебя нет опыта работы, PhD по чему-то, или вы как минимум магистр по специальности Computer Science. Осложняется это ещё и тем, что выпускники (Fresh Grads) делятся на людей первого сорта(выпускники Stanford и UC Berkley) и на всех остальных. Это распространено и вполне ожидаемо, что вы не получите phone screening только потому что у ваc нет PhD, а даже если оно у вас есть, то phone screening вы всё-равно не получите, потому что вы не со Stanford'a. (Есть достаточно много стартапов у которых жёсткое правило. Набирать только из top schools. про большие компании не знаю, но думаю, что они более адекватно относятся к процессу и такой фигнёй страдают меньше). Короче, в резюме идёт образование, но без подробностей (имя университета, специализация, период обучения).

Хорошо ценится, если то, чем вы занимались во время обучения в университете связано с анализом данных, особенно если рекрутер может понять хотя бы на уровне идеи, как эти знания можно применить в компани. (Тут можно врать, но не очень сильно)

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

Важный, но неочевидный кусок резюме — это Communication and Leadership. Идея в том, что академическая среда деформирует личность в том плане, что общаться с «ботаниками» тяжело. Плюс часто в команде работать они не умеют. Тут мне моё преподавание пригодилось, как минимум как строчка в резюме, которая пытается сказать, что я умею объяснять технически сложные темы людям, которые в этом мало что понимают.

И всё-равно куча свободного места. Туда я вствил названия online курсов, которые я брал на coursera и edx на связянную с Data Science тематикой и подсекцию назвал Independent Coursework. Любят американцы слово Independent да и Coursework звучит хорошо.

Собственно и всё. По сути только научная степень, kaggle и куча воды. Но и бог с ним. Задача резюме получить phone screening.

В общем вышло как-то вот так.

Как сделать так, чтобы ваше резюме попало к рекрутеру?

  1. LinkedIn — список вакансий, которые создали на самом LinkedIn, а также те вакансии, которые LinkedIn надёргал с других ресурсов. Недостаток — легкий доступ к списку вакансий и как следствие много апликантов. 300 — 1000 апликантов на одну вакансию — это нормально. Из достоинств — вакансий много, можно очень быстро всюду подавать.
  2. dice.com — какие-то вакансии есть и там, но я ни одного интервью с ними не получил.
  3. monster.com — тоже ксть какие-то вакансии, но я на нём зарегестрировался достаточно поздно
  4. Секция jobs на kaggle.com
  5. Знакомые, которые где-то работают могут вас посоветовать. Я так получил интервью с (Google и Pebble)
  6. Знакомые, которые получили job offer, но отклонили его, но вместо себя посоветовали вас. (Я так получил интервью с Uptake и Bidgely)
  7. Career Fair в UC Davis было бесполезное, а на Career Fair в Stanford или Berkley без соответствующего студенческого билета не просочится. Но это я поздно спохватился. Если бы раньше мозг включил, может быть что-нибудь бы и придумал.
  8. Meetups — в Bay Area чуть не каждый день проводятся всевозможные митапы на темы связанные с Data Science. Там как минимум можно с кем-то познакомится, а как максимум, можно и впечатлить(Недавний пример — надо мне было пробки переждать, я зашёл на митап, который проходил не подалёку под названием Deep Learning в Natural Language Processing. И мне эта тема никогда не давалась. По отдельности и нейронные сети и NLP работают, а когда их скрещиваешь — резльтат у меня получался средненький. Вот я и зашёл просветится. Но не угадал. Там все были неопытные, поэтому я два часа у доски им лекцию читал о том, что знаю на эту тему и на следующий день пара присутствующих на митапе написали, что у них на работе есть вакансия ну вот как раз для меня. Но это скорее исключения. Да и митапы где я ничему не учусь мне не нравятся.).

И вот вроде бы у вас замечательное резюме, и вы его рассылаете, но что-то вам не отвечают. Одна из проблем состоит в том, что в большие компании, где рекрутеры опытные, море кандидатов, причём их рекомендуют, а вы сами по себе. Короче вы теряетесь в общей массе. Но, рекрутеры адекватные. (В хорошую сторону отмечаю Googe, Pivotal и LinkedIn)

Со стартапами ситуация другая — там рекрутеры юные и неопытные и не очень знают что они хотят в резюме увидеть. Например объявления о работе у крупных компаний они короткие, но конкретные, а у многих мелких стартапов — целая простыня требований. Например, был один стартап, который хотел от потенциального Data Scientist'a:

  1. Знания алгоритмов машинного обучения на уровне эксперта.
  2. Знания статистики на уровне эксперта
  3. Знания генетики на уровне эксперта.
  4. Умение писать Product Quality code
  5. Умение работать со всевозможными базами данных.
  6. Естественно, у вас должна быть PhD.


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

Это я к тому, что рассылать своё резюме надо везде и всюду. Даже если это вакансия вам не интересна. Каждое интервью — это опыт прохождения интервью. А этот опыт для того, кто этого делать не умеет, на вес золота.

Phone Screening.

Вам звонит рекрутер. Что он хочет? А хочет он(гораздо чаще это она) дополнить ваше резюме комментариями.
Типичные вопросы:

  1. Почему вы хотите работать в нашей компании?
  2. Закончили вы ваше образование и если нет, то когда заканчиваете?
  3. Интервьюируитесь ли с другими компаниями?
  4. Каков ваш визовый статус? И когда ваша виза позволит вам выйти на работу?
  5. Каков ваш опыт работы с данными?
  6. Куча вопросов по резюме. Ответами на которые вы должны убедить её, что она не получит по шапке за трату драгоценного времени, когда передаст ваше резюме с комментариями кому-то кому она должна его передать.

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

Разговор с членом Data Science team.

Разговор похож на разговор с рекрутером, но более технический. Про визу тут уже не спрашивают.

Начинаются мутные мотивы. Народ приходит в Data Science со всевозможных направлений: Computer Science, Statistics, Physics, Math, Economics, Biology, и т.д. Причём интервьюировать обычно начинают чуть не сразу. То есть опыта работы толком нет, опыта интервьюирования толком нет, но есть идеи и желание попрактиковаться… И тут им попадаетесь вы…

Хотят они от вас немного разных вещей.

Типичные вопросы:

  1. Приведите пример вашей работы с данными?
  2. Вот вам такая задача, как бы вы к ней подступились?
  3. А вот какие проблемы были бы у нас если бы мы взяли эти данные, этот алгоритм и попытались ответить на этот вопрос?

Тут у меня выстреливал кагл. После полу года работы над различными данными на эту тему я могу трепаться часами. Но без кагла я бы тут сильно плыл. Спектр вопросов вроде узок — про данные и про ваш опыт, но при этом он необъятен, потому что спросить могут про что угодно из Machine Learning, Statistics, про Use Case, причём не обязательно, что вопрос будет на базовом уровне. И по темам разным гоняют. Могут про Natural Language Processing, могут про Credit Card Fraud detection, а могут про Recommender systems. И нет никаких гарантий, что они сами в этой теме разбираются хоть как-то. Вы тренируете проходить интервью, а они на вас тренируются интервьюировать людей, а как известно, дурацкие вопросы проще задавать, чем отвечать на них.

Был такой случай. В Pebble меня парень спросил:«Гики нашей продукцией пользуются, а вот как бы нам начать продвигать наши часы в негиковскую среду?». Я ему и ответил:«Я и без Data Science скажу — увольте вашего дизайнера. В ваших часах ни одни уважающий себя президент войну не объявит даже если захочет. Он просто постесняется на публике повиться с вашей продукцией на руке.». Следующим утром я получил email, что я им не подхожу. Но и бог с ними.

Что помогает — зайти на GlassDoor и посмотреть какие вопросы задают подающим на позицию Data Analyst, Data Scientist, Software Developer, ну и естественно всех их прорешать. Это не панацея, но часто на интревью попадаются задачки, которые ты видел.

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

Опять же в больших кампаниях или больших стартапах более внятные вопросы, более адекватные интервьюеры. В лучшую сторону отмечаю (LinkedIn, Google, Pivotal, Bidgely, Affirm). В худшую (Pivotal, Pebble, Turn, Workday, Leap Motion). (Pivotal дважды, потому что эту стадию я дважды проходил. И один раз попал на самоуверенную тётку с низким коэффициентом интеллекта и с ней у меня не срослось.)

Техническое интервью

Интервьюировать вас будет член Data Science team. На двоих рашаривается google docs или что-то вроде того. при этом вы находитесь в состоянии телефонного разговора. Так что вам надо будет одновременно и говорить, и печатать. Телефонная гарнитура будет очень кстати.

Вопросы будут разные.

  1. Задачки про вероятность.
  2. Статистика
  3. Программирование. Обычно это python, R, Java.
  4. Машинное обучение — теория
  5. Алгоритмы и структуры данных
  6. mapReduce

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

Готовиться — решать задачки с GlassDoor и улучшать свой background по всем направлениям.

Onsite interview

Это марафон на несколько часов в офисе компании. Причём если вы добираетесь из другого города вам оплатят перелёт и гостиницу. (Я так в Чикаго очень приятно слетал)

Куча разных людей с вами общается по пол-часа, час каждый. По середине, как правило, обед.

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

Тут и написание кода на доске, и как бы вы атаковали эту проблему, и вопросы по теории, и просто разговоры за жизнь.

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

Поиск работы в области Data Science в San Francisko Bay area — это непросто. Особенно если заниматься этим как я, в последний момент. Это нервный процесс, который занимает много сил и времени. Во многом, потому что сам по себе процесс долгий. И при этом вы интервьюируетесь со многими компаниями параллельно. Два — три интервью в день — это нормально. По началу напрягает, а потом привыкаешь. Я выпустился в июне, а получил предложение о работе только в октябре. Да. Это первая работа, а её найти в любом случае тяжело. Но каждый день из этих месяцев — это отмирающие нервные клетки, которые не восстанавливаются, причём не только у вас, но и у ваших друзей, семьи и всех тех, кому вы не безразличны.

Можно ли срезать угол и не прорубаться через все эти стадии или хотя бы их упростить? Да можно. Существуют организации, которые занимаются тем, что берут талантливых выпускников, обучают и помогают трудоустроиться(Пример Insight Fellowship, Data Science Incubator). Но! Число мест сильно ограничено, а число желающих огромно. И на бумаге они почти наверняка выглядят лучше вас. Но я знаю несколько человек, которые прошли отбор в Insight и проблем с поиском работы у них не было. Так что всем своим знакомым, которым предстоит вся эта эпопея с поиском работы в Data Science активно подавать в эти организации.

Другая возможность срезать угол — это internship в какой-нибудь компании. Если бы я был умнее, я бы пытался протиснуться в какой-нибудь internship каждое лето, что я учился в UC Davis. Жизнь была бы сильно проще.

Встаёт вопрос: а стоило ли оно того и что вообще изменилось?

Альтернативой поиска работы в Data Science была позиция постдока. Из преимуществ — тот же знакомый рабочий процесс, что и в аспирантуре, море свободного времени. Из недостатков, число вакансий на позицию постдока сильно ограничено и найти такую вакансию гораздо сложнее, чем найти работу. То есть выбрать место где жить и работать, то есть выбора в географическом плане нет. По деньгам всё печально, да и непонятно что с перспективой. Примерно 3% тех, кто после аспирантуры идёт на постдок, после 5-10 лет постдока находят себе позицию профессора, опять же там где им эту позицию дадут, а не там где им хочется. Как правило, почти все(есть радующие мне душу исключения) мои знакомые постдоки параллельно двигают науку и занимаются поиском работы, причём многие именно в Data Science.

Позиция Data Scientist'a:

  • Приятнее по деньгам. Например, во время обучения в аспирантуре я вечно жил в каких-то халупах, снимая их сдругими, обычно малознакомыми или не интересными мне людьми. Сейчас я снимаю однокомнатную квартиру и когда я прихожу домой чувства отвращения у меня моя квартира не вызывает. Это хоть и временный, но дом.
  • Неприятнее по времени. Мне не нравится продавать своё время за деньги. Я предпочитаю продавать его за знания. И нет никаких гарантий, что в течение рабочего дня вы будете заниматься тем, что вам интересно. Это печальный факт. Отчасти решается тем, что рабочее время тратится не только на работу, но и на самообучение. Но тем не менее после многих лет работы над какими-то фундаментальными задачами, поиск багов в недокументированном коде, воспринимается, как трансформация в офисный планктон. Но есть надежда, что после вводного периода задачи будут интереснее.
  • На данном этапе много знаний идёт со стороны психологии. Последние много лет я вращался в академической среде, и чем живут студенты, аспиранты, профессура я представляю. Их систему ценностей, то чем они живут и дышут. Они как родные. Это скучно. А вот чем живут люди в кремниевой долине, как тут всё устроено и функциониует, и кто все эти люди — этого я не знаю и сейчас в этом направлении знания вливаются широкой рекой.
  • При поиске работы я сильно влетал на том, что не было связей и строчки в резюме о том, что у меня есть опыт работы. Сейчас появляется и то, и другое. Предполагается, что если мне захочется поменять работу, жизнь будет чуть проще.
  • Опять же проще выбирать место работы/жительства. Надоест в кремниевой долине — поеду, как и планировал в первом абзаце, в Токио, Рио или Сингапур.

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

Как и что будет через год я не знаю, но пока всё идёт нормально.

© Megamozg