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

в 2:51, , рубрики: data science, кремниевая долина, работа в it, стартап, Учебный процесс в IT

image

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

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

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

  • Январь — пришло четкое осознание, что защита через несколько месяцев и пора думать, что делать после того как я покину альма матер и что постдок — это не вариант, а 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 выбрала его как инструмент и после трех лет использования не поменала его на что-то более внятное — это сигнал о том, что уровень квалификаций этой команды ниже чем то, где хотелось бы работать.

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

Когда я cпросил нашего 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", был преодолен.

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

Стали нанимать. Bigely связались с рекрутерскими агенствами, запостили везде где надо, описание вакансии и в нашу сторону полетели резюме. Большую часть наш 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 — принял предложение о работе.

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

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

Первый

Какова структура Data Science Team? И если бы кто-то говорил, что самоорганизация энтузиастов => на этом бы все закончилось. Но к счастью такого не случилось. В идеале от стартапов хотелось услышать: Вот это команда N человек, John — Data Analyst, Mary — Data Engineer, Mike — Head of Data Science, Jennifer — experimentation, и т. д.

Второй

Если у нас будет взаимная любовь и я начну работать на этой позиции, какие кокретно задачи планируется я буду делать. Хотелось избежать ситуации когда надо будет делать какие-то совершенно не интересные мне вещи, особенно когда их много и разных, и одновременно. Как, например, улучшение алгоритма, маркировка данных(я бы этого избежал), высокоуровневый анализ пилотных данных вручную в Google Sheets, то есть то, что в автоматическом режиме бы решила связка DataDog и Tableau. И тут же оценка того, насколько это Junior позиция.

Третий вопрос

Какие языки программирования/инструменты используются? Влететь, как получилось с Matlab’ом, очень не хотелось.

Четвертый

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

Пятый

Как обстоит ситуация с прямыми конкурентами? Большие компании я об этом не спрашивал, но у стартапов однозначно интересовался. Очень хотелось избежать ситуации как в Bidgely, когда несколько( больше пяти ) игроков дышут друг другу в спину, число поставщиков электро энергии сильно ограничено, и продажники втюхивают то, чего нет, а потом приходится изворачиваться чтобы клиент не поймал на лжи во время пилотного эксперимента, включая все эти нездоровые манипуляции с hand labeling, когда вручную подкручиваются результаты. Да и весь этот режим “пожаротушения”, когда прыгаешь с одной задачи на другую, пытаясь впихнуть невпихуемое тоже ногами растет во многом именно оттуда.

Самый главный вопрос?

Насколько будет комфортно работать в этом офисе? А для этого требуется прогуляться по офису во время onsite интервью.

Так вот не смотря на то, что TrueAccord на фоне гигантов вроде Google, Uber и Twitter, мною рассматривался, как запасной вариант на все вышеперечисленные вопросы они дали ответы, которые меня устроили и я принял их предложение о работе и, четыре месяца спустя, все выглядит так, что я с выбором не ошибся. Ну и тот факт что у нашего CEO это третий или четвертый стартап и у всех предыдущих был удачный выход(их всех задорого купили) добавил некой уверенности что менеджеры тут поопытнее и рабочий процесс организован на уровне и вроде пока так оно и есть.

Заключение

На фоне вышеописанного текста может сложиться впечатление, что я пытаюсь выставить Bidgly в плохом и свете и я тут один Д'Артаньян. И если такое впечатление сложилось, за это я прошу прощения. Bidgely это замечательный стартап, только, пожалуй, не для меня. Яркий тому пример Pratik, который начал работать примерно в то же время что и я ему действительно нравится культура в Bidgely, правда он и сам индус, но не факт, что это важно.

Скорее всего разница была в другом.

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

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

В-третьих, Pratik пришел в Bidgely работать. Я же пришел учиться. Возможно, те, кто дочитает этот тест до этого места скажут, что таких работников как я сразу надо гнать вшею. И скорее всего будут правы, потому что я рассматриваю работу как процесс конвертации одной валюты в другую, а именно секунд моей жизни в комбинацию денег и знаний. Причем знания имеют больший вес чем деньги, и, например, 5 лет в аспирантуре за маленькие деньги я воспринимаю как удачную сделку. И при совершении такой сделки хочется чтобы курс был выгодный и всяческие скрытые накрутки вроде полуночных совещаний без дополнительной оплаты я воспринимаю как попытку меня развести. А использование Google Sheets там где надо использовать Tableu и Matlab там где есть гораздо более внятные инструменты как потерю своего времени. С другой стороны я крайне негативно отношусь к тем, кто приходит на работу не работать. Если подписал контракт, то свои восемь часов в день надо работать с максимально возможной отдачей.

Я пообщался c Pratik и он мне сказал, что сейчас многое не так как раньше, а гораздо лучше, и я на это сильно надюсь, и даже отзывы на Glassdoor сменили свой крайне негативный окрас на очень позитивный(насколько они объективные сказать сложно, год назад наш CEO рассылал всем email с текстом вроде: “Было бы неплохо всем написать крайне позитивные отзывы о нас." Но хочется верить, что так оно и есть.)

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

P.S. Завлекающая картинка в шапке — это вид с балкона, который я наблюдаю, когда вечером пью чай и думаю о смысле жизни.
P.P.S. В новый офис Bidgely так и не переехали.
P.P.P.S. Для тех, кому интересно, как может выглядеть резюме и LinkedIn под позицию Data Scientist в кремниевой долине:

Автор: ternaus

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js