Из физиков в Data Science (Из двигателей науки в офисный планктон). Вторая часть

image

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


(Заранее извиняюсь за обилие английских слов, какие-то из них я не знаю как перевести, а какие-то мне переводить не хочется)



Краткое содержание первой части:


  • Январь — пришло четкое осознание, что защита через несколько месяцев и пора думать, что делать после того как я покину Alma Mater и что постдок — это не вариант, а Data Scientist — это хоть и не работа моей мечты, но лучше сходу ничего не придумывается, и потому принимается за рабочий вариант, и что пора шевелится в этом направлении.
  • Июнь — выпуск из университета.
  • Июль-Август — полуактивный поиск работы.
  • Сентябрь — очень активный поиск работы.(Я спал в спальнике на полу в подвале дома одного своего знакомого)
  • Октябрь — предложение о работе, которое я, собственно, и принял.

Важно отметить, что ушел я из академической среды не потому что я не люблю науку — я ее очень люблю, а потому что у меня сложилось стойкое впечатление, что на данном этапе, работа в индустрии даст мне больше. Например, мне откровенно не нравился код, который я пишу, особенно после прочтения какой-нибудь книжки на тему «clean code», а также не нравилось как я его поддерживаю. Да, я активно использовал git и для каких-то проектов, и при написании статей (правда научного руководителя на это не раскрутил, он больше по старинке), но это все самообучение, что замечательно, все-таки отличается от реального проекта со 100 разработчиками. И то, что академическая среда очень консервативна и нетороплива — это тоже меня всегда раздражало. Хотелось окунуться во что-то новое, динамичное, молодежное, так чтобы слова agile development, а также вещи вроде «round B financing» из абстрактных понятий из книжки превратились во что-то естественное и понятное. И стартап в кремниевой долине — это, однозначно, был замечательный вариант.


И что было дальше…

Контора, которая называется Bidgely предложила мне позицию Data Scientist с окладом $130k в год грязными (примерно $7400 в месяц чистыми) работать в офисе, расположенном в городке Sunnyvale, что в кремниевой долине, в паре километров от штаб квартир Google, Linkedin, Apple, и т.д.


Bidgely (далее по тексту иногда будут называться кодовым словом «Индусы») — это стартап, который занимался тем, что брал потребление энергии как функцию времени и раскладывал на компоненты — это стиральная машина, это кондиционер, это кухонная плита, это холодильник — и т. д.


image

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


В теории выглядеть это должно как-то вот так

Бизнес был построен по модель B2B, то есть клиентами были не простые смертные, а компании типа ПетроЭлектроСбыта.


И конечные пользователи видят что-то вот такое:


image

Зачем это надо поставщикам электроэнергии?


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


Или, например, вот такой интересный use case — в Австралии летом очень жарко, и поставщики энергии зашиваются в том смысле, что инфраструктура не справляется с нагрузкой, и для них решением котороое отчасти решило проблему было попросить (и предложить $20) тех, кто активно пользуется кондиционером в энергетический час пик, остужать жилище за час до предполагаемой максимальной нагрузки, что позволяет эту нагрузку распределить.


Что является продуктом? => алгоритм + визуализация.
Не смотря на то, что вышеописанное может показаться маркетинговой туфтой, продажники умудрились убедить кучу компанию в Австралии, США, Канаде, странах Европы, что за этим будущее и надо как минимум попробовать. Причина почему у меня были сомнения в коммерческой эффесктивности этого продукта это то, что уж больно он напоминает Google Fit, в том смысле что выдает некий анализ происходящего, но насколько этот анализ решает какие-то реальные проблемы мне было не очевидно.


Ни одна серьезная контора не будет сразу во что-то вписываться, поэтому охмурение компаний происходит в три этапа:


  1. Пилотный проект, стадия альфа. В 20–100 домов устанавливаются эти датчики которые по wifi пересылают данные о потреблении электроэнергии. А пользователи на сайте/телефоне могут отслеживать разложение этого потребления на компоненты.
  2. Пилотный проект, стадия бета. То же самое, но на 500–1000 домов.
  3. Доступ ко всем пользователям данного поставщика энергии.

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


Компания за год выросла с 18 до 50 с лишним человек. Пока она была совсем маленькой, Data Science team была представлена одной девушкой, которая незадолго до того, как наняли меня перешла в Facebook, а так же парнем по имени Алекс, который то ли у нее на подхвате был, то ли они работали параллельно. После того, как компания разрослась было решение усилить команду Data Scientist«ов и под это наняли меня и индуса по имени Pratik, оба, только что закончили обучение, то что называется fresh grad, для того, чтобы снять часть нагрузки с Алексa, впитать от него часть знаний и после того, как эти знания впитались — усиленно двинуть искомый алгоритм в светлое будущее, а компанию к миллиардным прибылям.


Алекс выглядит вот так.

Frontend, продажники, высший менеджмент, Data Science в США, весь backend и QA из соображений экономии — в Индии.


Все вычисления на AWS. Основные языки программирования Java — frontend/backend. Matlab — для Data Science.


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


То есть это индусское предложение я принял, с одной стороны потому что спать в спальнике в подвале у приятеля каждое утро вставая с мыслью, что деньги на кредитках скоро закончатся, работы нет и вообще перспективы у новоиспеченного кандидата наук достаточно мутные, мне надоело. А с другой мне предложили внятные для Junior позиции деньги (диапазон по зарплатам в долине на похожую позицию 100–150k/год) в компании, которая вся из себя динамичная (то, что она динамичная я понял на oniste интервью у них в офисе, когда увидел как все метаются). И задача интересная с математической точки зрения, да и имеет практическое применение.


Одно мне у них не понравилось — это офис. Шумный, и очень много света. Яркие лампы, с одной стороны окно, в которое агрессивно светит солнце по утрам. По глазам бьет мама не горюй. Во время onsite я уточнил про офис, на что мне CEO сказал, что беспокоиться совершенно не о чем, потому что этот офис никому не нравится и через пару месяцев все-равно переезжаем в новое помещение в Mountain View.


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


За исключением офиса, который всего лишь временная проблема, это не работа, а песня.


Первый день

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


По приходу мне выдали MacBook 13» 2012 года с 4Gb ram, что на мой взгляд слегка слабовато для разработки алгоритмов даже и на небольших объемах данных. Алекс, который был назначен мне ментором, по-быстрому набросал схему того, что надо сделать, ткнул в кусок кода, добавил что это очень важно, выдал инструкцию о том как компилировать код и улетел по своим делам.


Следую инструкции — пытаюсь скомпилировать код, а он не компилируется. Поймал Алекса и выяснилось, что для того, чтобы все получилось надо отключить unit тесты, потому как они устарели, и вообще unit тесты — низкий стиль. Не смотря на то, что я задавил в себе Чувство Собственного Величия и всем окружающим выдал большой кредит доверия, такой подход к тестированию кода меня напряг.


Открываю код, в Matlab«е и мне становится страшно. Одна из причин, почему я ушел из академической среды — это для того, чтобы я со временем смог научиться писать production quality code. И для того, чтобы этому научиться, кроме чтения правильных книжек, надо работать над сложным кодом, в команде со старшими опытными товарищами, которые тебя если что во время code review носом ткнут куда надо, используя правильные инструменты вроде умных IDE, написания тестов, правильной архитектуры и т.д.


А страшно мне стало, потому что от первого взгляда на код мне стало ясно, что я жестко попал на код которого насмотрелся и с которым накувыркался в аспириантуре. Да, они пытались разделить код на модули, и что-то где-то получилось, но рандомная индентация, функции по 1000 строк, полное отсутствие комментариев к коду, названия переменных с мистическим смыслом вроде pkI, vIdx, featsT, pkPos, M1, и практически в каждой функции по магическому числу, и никакой документации. Я Алекса спрашиваю:» Как быть? Тут вилы.» А он мне так и говорит искренне: «Ну у меня времени не было писать хороший код, хотя я, конечно, умею, потому что у нас на все времени не хватало, а вот теперь когда нас трое — мы все будем делать по уму, а пока, говорит, в принципе тут все просто. Debagger«ом прогони строчку за строчкой и посмотри на эволюцию переменных, и сразу все будет понятно. Тут всего то 10000 строк».


Две недели спустя я таки сделал коммит, который от меня требовался в мой первый день.


Далее

Я думаю, что вся эта индусятина в коде во многом вызвана тем, что и Алекс, и та ушедшая в Facebook девушка, как и я, пришли прямо из академической среды (где в среднем пишут хреновейший код) в стартап на ранних стадиях развития, в котором надо было фичи плодить быстро, причем для этого использовался MatLab, который заставляет писать нечитаемый код и не имеет IDE, которая поддерживает рефракторинг. А так как инженеры в принципе не понимают даже на высоком уровне, что происходит в коде, который пишут Data Scientist«ы получилось что кода писался теми кто нормальный код писать еще не научились, времени на то, чтобы научиться не было, и не было того, кто этому научит, и язык программирования и IDE для него всячески препятствовали всему хорошему.


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


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


Когда я просил нашего CEO: «Красиво — это сколько?», он сказал, что понимает, что данные шумные, абсолютной точности не достичь и то что сейчас уже все почти замечатально, и осталось слегка подкрутить, так чтобы стало 90%. Времени осталось немного, так что мне надо это сделать для алгоритмов, которые детектируют посудомоечную и стиральную машину, а электроплиты, бассейны, холодильники — это сделают Data Scientist«ы, которые в индийском офисе.


Устроит 90% — значит попытаемся выдать 90%. Два месяца — это немного, но на kaggle.com я хорошие модели и за меньшее время выдавал, поэтому «партия сказала надо, комсомол ответил есть».


Встает вопрос —, а как вообще это точность меряется? Я представлял, что это типа классического cross validation или еще что-то в этом роде, но выяснилось, что у Индусов свои Индусские пути. По уму нужен некий набор размеченных данных, которые пытается изображать себя общее распределение того на чем алгоритм будет применяться, на нем сравниваются предсказания и то, что размечено — получается оценка точности модели. Тут море нюансов, как это делать правильно (точность модели на тренировочных, тестовых данных и в production — это три большие разницы), но как ни крути, чтобы понять что такое плохо, а что такое хорошо — нужен некий эталон, с которым предсказания и сравниваются.


После трех лет работы над всеми этими алгоритмами у Индусов такого эталонного отмаркированного набора данных не было. А это очень-очень плохо. Данные это важно.(Хороший пост на эту тему). Надо заметить, что в большинстве случаев, насобачившись, можно визуально, по форме сигнала отличать, кто тут стиральная машина, а кто бассейн. Так вот Индусы сделали что — они наняли целую команду, которая за небольшие деньги визуально сравнивает наши предсказания c тем, что видят глазами. И в случае несовпадения сабмитят bug report. Но при этом не делают никаких попыток создать отмаркированный набор данных. То есть оценка точности алгоритма происходит субъективно.


И все еще печальнее, потому что решение о переходе пилотного проекта не следующую стадию принимается во многом по тому, как менеджеры компании поставщика электроэнергии впечатлены нашим disaggregation, для их собственных домов. И слова про 90% точность в целом их волнуют постолько поскольку, они смотрят на то, как алгоритм работает на данных, которые поступают из их домов.


То есть надо 3 разные точности:


  1. Зашкаливающая точность на данных поступающих из VIP домов.
  2. Хорошая точность в домах пилотного проекта.
  3. Средняя точность для всех остальных.

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


Иногда поставщики электроэнергии устраивали конкурс, чтобы выбрать с кем начать пилотный проект и тогда начинался жесточайший hand labeling, когда пол нашего и весь индийский офис вручную маркировали данные. Как потом выдавать такую же точность, когда мы впишемся в пилотный проект вопрос не поднимался.


И вот сижу я и думаю, c чего вообще начать? Отмаркированных данных нет. Оценка точности алгоритма непонятна. С грехом пополам разобрался что примерно происходит на идеологическом уровне с этими посудомоечными машинами. А там система хаков и противовесов, которые работают с магическими числами, которыми пестрит код. И идея вроде неглупая. Но что делать непонятно. Спрашиваю Алекса —, а он опять говорит — ты говорит дебагером пробегись, да посмотри как и что эволюционирует. И это, конечно, вариант, если ты код понимаешь, а если по верхам, то черт его знает. И я обеими руками за то, чтобы осуществлять визульную инспекцию того, что происходит как можно больше и чаще, но полное отсутствие документации, даже и устаревшей это неправильно, как минимум потому что в долгосрочной перспективе это на мой взгляд неэффективно. И то что наш CTO на этот вопрос ответил: «Ну что ты хочешь? Мы же стартап» — это, но мой взгляд, не ответ, для компании в 50+ человек.


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


Ясное море что для выживания компании в принципе надо, чтобы была клиентская база и строить ее надо по возможности быстро, пока не закончилось финансирование. Но все-таки развитие компании — это марафон, а не спринт, и пытаться выжать из работников все соки не надо, как минимум потому что в долгосрочной перспективе это не работает. Я не парился в том смысле, что приходил в 9, уходил в 5 вечера. У меня в контракте написано, что я работаю 8 часов в день. Я под этим подписался, значит так оно и есть. Но тот же Алекс в день работал часов по 10 минимум. Он, конечно, религиозный азиат (в церковь несколько раз в неделю ходил в обязательном порядке), может ему так нравится. Но меня такая перспектива не возбуждала.


Еще важный нюанс — это то, что нам часто требовалось взаимодейтсвие с QA и backend, поэтому нужна была коммуникация с индийским офисом, где они и находились, а часовые зоны сильно разные, поэтому назначались какие-то meeting«и по вечерам и выходным. Я к паре из них присоединялся —, но потом пришло осознание, что полуночные совещания — это не исключение, а правило, и что работу по ночам и по выходным мы не обсуждали, и то, как правильно организовать взаимодействие между командами в разных часовых поясах — это проблема менеджеров, а вовсе не моя. Так что я себе в календарь добавил, что занят с пяти вечера и вроде как меня на такие полуночные совещания приглашать перестали. При этом я не против участвовать в on-call ротации, когда в случае каких-то больших проблем тому кто on-call в аварийном порядке надо что-то решать, даже если это два часа ночи.


И то, что надо напрячься сейчас, а вот после запуска пилотного проекта будет чуть проще — это вообще не аргумент, в силу того, что продажники охмуряли кучу разных компаний и какой-то очередной проект запускался каждые пару месяцев. (И таки да, после Австралии пришла Германия, а после нее шла подготовка к Италии и шли разговоры про Гон Конг)


Отмаркировал я сколько-то этих стиральных машин, штук 100 наверное. Написал код, который оценивает точность, переписал кучу всего для увеличения скорости (Мой слабый Macbook уж больно слаб был под это дело, а на мое предложение выполнять вычисления в облаке Алекс отмахнулся). Прогнал алгоритм. F1 score = 0.5 (если грубо, то можно интерпретировать как точность). А это даже и не рядом с 0.9 о которых возбужденно говорил наш генеральный директор. Алексу показал — тот расстроился, что точность маленькая, но обрадовался, что наконец-то у нас будет правильный систематичный научный подход. Я ему чуть по голове не стукнул, ибо у него PhD по Computer Science, полученное в UC Berkley, то есть про то как оценивать точность моделей в машинном обучении он, как минимум, слышал. Но этот олень и вся эта контора за 3 года этим не озадачилась и вместо этого страдали какой-то неструктурированной неэффективной фигней.


К середине декабря, после переписавания каких-то кусков кода, подкручивания магических чисел и добавления пары эвристик, наш алгоритм расподнования стриральных машин выдавал F1 = 0.65. Прошел пилотный запуск в Австралии и я уехал домой в Питер на пару недель с мыслью, что по приезду надо будет искать новую работу.


После нового года

Надо отметить, что я находился на студенческой визе, которая давно истекла. Тут все легально, хоть и непрозрачно. Находится в США я мог, работать мог, выехать мог, а вот въехать нет. Для того, чтобы въехать, надо получать новую визу. Причем для того, чтобы ее получить из США надо выехать. За пять лет обучения я этим пару раз занимался и оформение новой визы занимало чуть больше недели. Предполагалось что раз раньше это работало, то и сейчас это сработает точно так же. Но был нюанс… В те разы я был студентом и получал студенческую визу, а тут я получал студенческую визу, для того чтобы работать. Американец, который у меня в американском консульстве в Санкт Петербурге документы принимал — сильно удивился всей этой ситуации, попросил прислать список публикаций и резюме и отправил мои документы куда-то на рассмотрение.


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


Так вот вся эта нервотрепка с визой изменила мои планы на тему поиска работы и вместе того, чтобы искать сразу я решил дождаться H1B и уже потом, когда тылы прикрыты, делать какие-то движения. Плюс было совершенно не очевидно, что если я начну поиск работы, индусы меня не уволят (я такое в фильмах видел), и что поиск новой работы не затянется на многие месяцы, и это опять же проблемы с визой и деньгами. (по студенческой визе я могу не работать, как максимум, 90 дней в первый год). Но то, вопрос с поимком новой работы встанет достаточно скоро — это было очевидно.


Что мне не нравилось в текущей ситуации и над чем надо было работать


  • Однозначно не нравился офис. Каждый вечер болели глаза.
  • Мне не нравились те технические навыки, которым я учился на работе. Магию git«а и Jira на том уровне что она использовалась в компании я давно впитал. Качество написания кода не повышается, как минимум потому что весь Data Science team пишет хреновый код, то есть впитывать не от кого. Да, я привыкал к Matlab«у, но без этого навыка я был готов спокойно жить. В алгоритмах, которые использовались в конторе, я разобрался, причем большого потенциала у них я не видел, а о нейронных сетях (Это я не к тому что мне хочется везде воткнуть нейронные сети, а потому что под эту задачу они ложатся очень естественно и на эту тему есть интересные статьи), Алекс слышать не хотел. Была попытка подтолкнуть компанию начать двигаться в сторону python, как языка разработки и наш CTO, и все Data Scienist«ы были обеими руками за, но Алекс, как большой фанат Matlab«а был непреклонен. Причем логика была такая: «У Matlab«а бинарник скомпилировал — залил на сервер и все. А тут инженеру в Индии придется и бинарник компилировать и питоновский код из репозитория дергать — это сложно, так делать не будем.» Причем я пообщал сам переписывать функцию за функцией, тестировать что все работает, и объяснить инженеру в индии как и что делать по шагам, но не получилось. Видимо не те слова говорил и не так. Машинным обучением, которое мне очень сильно нравится и которое во многом обусловило мое решение уйти из университета как это ни странно Bidgely не занималось. Алгоритмы, которые использовались — это по большему счету просто набор эвристик и чуть чуть статистики. А машинным обучением я занимался по вечерам после работы выжигая свободное время.
  • Мне не нравился Sunnyvale. Я думал, что Кремниевая долина — это молодежно динамично, инновации на каждом шагу, и в Mountain View и Palo Alto во многом так оно и есть, но Sunnyvale к этому коллективу не относился — это большая деревня где по большому счету в свободное время и делать то нечего.
  • Зарплата меня вполне устраивала, но тот факт, что другие выпускники нашего доблестного факультета получали 140–150k, что не намного, но приятнее, тоже подталкивало к мысли, что пока что-то менять.

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


Наш CEO с Алексом тоже сделали выводы из того что ставка на то, что достаточно нанять пару неглупых Fresh Grad«ов и вопрос с главным алгоритмом будет закрыт за пару месяцев не сработала, и было принято решение нанять пару Data Scienеist«ов, но с 2–3 годами опыта работы в индустрии, а также Director of Analytics который и поведет весь наш коллектив к светлому будущему.


А кроме всего прочего наш CEO, решил влится в процесс разработки всех этих алгоритмов и лично присутствовать на наших митингах, но при этом так, чтобы они назначались в соотвествии с тем, когда у него окно свободного времени, например, в 6 вечера в пятницу. Из плюсов то, что ему можно было подкинуть идею, которую Алекс не одобрил, и убедить попробовать, и тормозящий момент от Алексовского: «I am not convinced that this your idea will work, let’s not do it», был преодолен.


Проведение интервью


Стали нанимать. Bidhely связалось с рекрутерскими агенствами, запостили везде, где надо, описание вакансии и в нашу сторону полетели резюме. Большую часть наш VP of Engineering, отсеивал, но и из того что оставалось получилось много. Процесс интервью был организован так:


  1. Общение кандидатов с рекрутерами.
  2. Телефонное: Проверка навыков написания кода в collabedit.
  3. Телефонное: Знание статистики/машинного обучения теории и умения эти знания применять.
  4. Oniste к которому надо подготовить некое домашнее задание. (Ссылка для тех, кому интересно.)

И понеслось. У меня и Pratik 4–5 по интервью в неделю. Производительность труда просела еще больше. У Алекса все еще хуже, потому что ему надо еще кандидатов на Director Of Analytics оценивать. Я поначалу достаточно жестко фильтровал в надежде на сильного кандидата, но после первого месяца в таком режиме сильно все ослабил мотивируя тем, что так мы вообще никого не наймем, а хотелось бы чтобы люди были уже вчера. Была пара сильных кандидатов, но они от оферов отказались. И процесс общения с десятками кандидатов с 2–3 годами работы сильно поднял мою уверенность в себе и своих техническиз навыках. Забегая вперед скажу что Bidgely таки наняли Data Scientist«a через 5 месяцев (В Data Science не соображал, но зато писал хороший код, что и не удивительно при том, что его предыдущая позиция Sr. Software Engineer) и Director of Data Science через 8 всего этого процесса.


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


Дальше улучшать стиральную машину повесили на Pratik«a, чтобы уж он то выдал 90 процентную точность за месяц. Я у него на днях спросил — он ее до сих пор оптимизирует. А на мне осталась посудомоечная.


Еще один вопрос, который надо было решать — это отсутствие знакомых в долине. В Дэвисе, где я учился — море, а вот в долине и нет никого, а так при поиске работы сильно помогает, если кто-то может пробросить твое резюме, то эту проблему надо было как-то решать. Не смотря на то, что выше я сказал, что Sunnyvale — это деревня, он все-таки недалеко от Mountain View, в котором много правильных стартапов и компаний имеют свои офисы, и, как следствие, организуют интересные и не очень митапы, на которые я активно и начал гонять, благо в велосипедной доступности.


Весна

В начале апреля почти в один день со мной связались рекрутеры с Google и Facebook, и предложили пообщаться, и стало понятно, что пора. Я слегка поправил резюмe, начал его рассылать, связался с рекрутерами которые работали на Bidgely и попросил их помочь, а также пробросил свое резюме используя наработанные знакомства. И выяснилось, что ситуация на фоне того, что было за год до этого сильно изменился c лучшую сторону, и что мои страхи на тему того, что работу будет не найти и что никому не понравится мое резюме в котором небольшой опыт работы были напрасны.


Чего мне хотелось:


  • Офис, в котором у меня бы не болели глаза из-за неправильного освещения.
  • География — San Francisco. Пустынные Sunnyvale — это не мой вариант. Надо чтобы было всего и много и рядом. Если в компании офисы в различных часовых поясах, то чтобы меня это напрямую не касалось.
  • Чтобы было напрямую связано с машинным обучением. Я себя достаточно комфортно чувствую в этой области, но хотелось бы углубить эти знания. Вариации на тему когда я днем работаю и не получаю знаний, а потом компенсирую это занимаясь по вечерам — это не круто и этого бы хотелось избежать.
  • Основной язык программирования: Python — оптимально. R — тоже можно. Java/Scala — по ситуации, но скорее нет чем да, Java/Scala и Data Science — это ближе к Data Engineering, а это мне не интересно. Занимаюсь, лишь потому что приходится. Matlab — это даже не обсуждается.
  • Позиция: либо Junior в большой компании — пусть меня научат. Либо Senior в стартапе, чтобы мое мнение имело какой-то вес при планировании и выборе инструментов — я все сделаю красиво, главное не мешайте.
  • Жизнь в долине очень дорогая, поэтому очень бы не хотелось, чтобы зарплата была ниже. Такая же вполне бы устроила.
  • Поменьше индусов. Это, конечно, расизм и среди индусов много классных ребят, да и вообще по отдельности они все нормальные, но когда их целый коллектив, в него тяжело вписаться, наверно так же как и индусу было бы тяжело вписаться в преимущественно русскоговорящую команду.
  • Чтобы присутствовал Head of Data Science/Director of Analytics, то есть менеджер, который понимает что происходит в команеде, сам разбирается в Data Science и нарезает правильные задачи с правильными интервалами и в правильной последовательности. Это самоорганизующася структура с вкраплениям влияния нашего CEO, которую представляла из себя Data Science, в Bidgely мне не понравилась.

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


Краткий список тех компаний, где были интервью. (Примерно такой же длины список которым не понравилось мое резюме.):


  • Facebook — завалил онсайт.
  • Google — добрался до onsite, но отменил.
  • Uber — добрался до онсайт, но отменил.
  • Twitter — они долго телились с рассмотрением резюме, отменил телефонное интервью.
  • Quad Analytix — взаимно не понравились друг другу на onsite.
  • LendUp — взаимно не понравились друг другу на onsite.
  • TrueAccord — принял предложение о работе.

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


Вот список вопросов который я в той или иной форме спрашивал у всех компаний с которыми общался на тему работы.


Первый


Какова структура Data Science Team? И если бы кто-то говорил, что са

© Habrahabr.ru