Электронная библиотека » Роман Зыков » » онлайн чтение - страница 4


  • Текст добавлен: 16 июня 2021, 04:41


Автор книги: Роман Зыков


Жанр: О бизнесе популярно, Бизнес-Книги


Возрастные ограничения: +16

сообщить о неприемлемом содержимом

Текущая страница: 4 (всего у книги 21 страниц) [доступный отрывок для чтения: 6 страниц]

Шрифт:
- 100% +

Глава 3
Строим аналитику с нуля

В этой главе я изложу свой подход к построению аналитики в компании с нуля. За всю мою карьеру в найме я делал это дважды – в Ozon.ru, Wikimart.ru и один раз как сооснователь – в компании Retail Rocket. И еще помог сделать это нескольким компаниям в режиме консультирования, заодно поучаствовав в найме сотрудников.

Первый шаг

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

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

• Какие метрики понадобится считать?

• Какие дашборды собрать?

• Какую информацию отправить в интерактивные системы?

• Будут ли тут задачи ML (машинное обучение)?

Сложность этого шага в том, что потребители (заказчики) не всегда представляют, какая именно информация им понадобится. И для того чтобы выстроить эффективную систему, аналитику необходимо самому обладать хотя бы минимальной экспертизой в том бизнесе, который он анализирует. После работы в интернет-магазинах мне поначалу было непросто в Ostrovok.ru (система бронирования отелей) – да, продажи идут тоже через интернет, но тут понадобились очень специфические знания отельного бизнеса. Ваша собственная экспертиза помогает вам во время интервью с заказчиком задавать правильные вопросы и на основе ответов формировать структуру данных, которые понадобятся для решения задач клиента.

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

• Список вопросов, которые покрываются текущими данными.

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

• Данные, которые пока не решают никаких актуальных задач.

• Источники данных и их примерные объемы.

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

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

Выбираем технологии

Это будет моим вторым шагом. Правильный технологический стек избавит вас от головной боли на несколько лет вперед. Детально технологии я буду обсуждать в следующих главах. Сейчас обрисую общую картину. Примерный список вопросов к технологиям звучит так:

• Собственное хранилище или облачное?

• Использовать ли open-source-технологии?

• Какой язык программирования использовать для артефактов инженерии?

• Можем ли отдать разработку аналитики стороннему подрядчику?

• Какую отчетную систему выбрать?

• Требуется ли где-нибудь скорость анализа, близкая к real-time?

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

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

Цель работы коммерческой компании – прибыль. Прибыль является разностью выручки и затрат, куда входит и себестоимость хранилища. И может быть довольно большой, если данные хранятся в облаке. Ее можно оптимизировать, создав собственное хранилище. Да, тут будут затраты на администрирование. Внимания такая система будет требовать больше. Но и способов снизить затраты у вас будет явно больше, система будет намного гибче. Если же аналитическая система не имеет такого прямого влияния на P&L (прибыли и убытки), то гораздо проще будет работать с облачным хранилищем. Тогда вам не придется думать об отказавших серверах – «облака» сделают за вас свою работу сами.

Технологии open-source (свободно распространяемое ПО с открытым исходным кодом) имеют очень большой вес в аналитике. Впервые я столкнулся с ними, когда учился на Физтехе. На втором курсе у меня появился компьютер, он имел очень слабую производительность даже по тем временам, поэтому я установил туда Linux. Часами компилировал ядро под свои нужды, учился работать в консоли. И это пригодилось мне ровно через десять лет. Именно тогда я посетил офис компании Netflix в Лос-Гатосе (Калифорния) и познакомился с директором по аналитике Эриком Колсоном. Он рассказал тогда об инструментах, которые используют его сотрудники в работе, и даже нарисовал маркерами на доске их названия. И как раз он много говорил об открытом ПО для анализа данных, таком как Python, Hadoop и R. До этого я пользовался только коммерческим софтом, но несколько месяцев спустя по следам этой встречи, летом, в пустом офисе, когда все сотрудники офиса Wikimart.ru отправились на корпоратив, я написал первые 9 строчек кода на языке Pig для платформы Hadoop (тут мне пригодилось знание Linux). На это ушло 4 часа. Тогда я еще не знал, что через несколько лет именно на этом языке и на этой платформе будет написан «мозг» рекомендательной системы Retail Rocket. К слову сказать, вся аналитическая система RR, как внутренняя для принятия решений, так и вычислительная для расчета рекомендаций, написана с использованием только open-source-технологий.

Сейчас, оборачиваясь в прошлое, я могу сказать, что Retail Rocket – это самое крутое, что я сделал в своей карьере: компания быстро вышла в прибыльность, успешно конкурирует с западными аналогами, и сейчас там работает больше сотни сотрудников по всему миру с основными офисами в Москве, Тольятти, Гааге, Сантьяго, Мадриде и Барселоне. Российская компания развивается и создает рабочие места за рубежом! Сейчас вектор развития изменился: RR продает не только рекомендательную систему, но и много сопутствующих услуг для интернет-магазинов. Технологии анализа больших данных и машинного обучения, которые мы создали в далеком 2013 году, актуальны до сих пор, и я очень горд, что мы были на голову выше наших конкурентов в технологическом плане.

Когда стоит связываться с коммерческим ПО? Ответ: когда на это есть деньги. Практически у любого коммерческого ПО есть open-source-аналог. Да, как правило, они хуже, особенно в каких-то деталях. Например, я так и не нашел достойный open-source-аналог для OLAP-кубов. Отчетные системы тоже выглядят недоделанными. Но что касается инженерных технологий, таких как Hadoop, Spark, Kafka, – то это очень надежные и мощные инструменты разработчиков. Они очень хорошо зарекомендовали себя в коммерческом применении.

Обсудим языки программирования, которые будут использоваться при разработке системы. Мой принцип – чем их меньше, тем лучше. До Retail Rocket мне удавалось обходиться одним SQL. Правда, для перекачивания данных (ETL) из источника в хранилище приходилось использовать специальные коммерческие инструменты от Microsoft. В Retail Rocket в свое время использовалось аж четыре языка программирования для создания рекомендаций: Pig, Hive, Java, Python. Потом мы заменили их все на Scala, так как он относится к семейству JVM, на котором написана Hadoop. Поэтому на нем очень легко программировать на платформе Hadoop/Spark, для последней он еще является родным. Но пару лет назад мы стали использовать Python и SQL. Здесь пришлось отойти от Scala – некоторые вещи на нем делать было неудобно.

Scala – прекрасный и изящный язык программирования, но мы уперлись в две проблемы. Во-первых, пользователям очень сложно было бы работать с ним в качестве интерфейса к данным, для этого намного лучше подходит SQL. Во-вторых, все современные библиотеки машинного обучения сейчас пишутся на Python. Сейчас Scala используется для разработки центрального ядра системы, агрегации и доставки данных, SQL для отчетов, Python для разработки моделей машинного обучения и несложных прототипов. Обычно выбор языка программирования зависит от нескольких вещей:

• для какой системы он будет использоваться (например, SQL идеально подходит для баз данных);

• есть ли специалисты по этому языку в вашей компании и на рынке.

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

Специалисты на рынке – моя головная боль. Scala – очень редкий язык, довольно непростой в изучении. Специалистов на рынке очень мало, а имеющиеся стоят дорого. Вот на Python работают очень многие. Хотя за одного Scala-разработчика я бы дал трех на Python. Здесь мы приняли сознательное решение: качество нашей работы для нас важнее, поэтому выбрали Scala. Нанимать готовых Scala-людей почти не получалось, поэтому мы сделали свой курс молодого бойца [19], когда новичок в течение полугода обучается программировать на нем.

Поговорим об аутсорсе

Обсудим возможность привлечения внешнего подрядчика для создания аналитической системы. Ему на откуп можно отдать разные аспекты:

• создание и поддержка технической части системы;

• аналитическая часть;

• выделенные задачи.

Когда требуется сократить время развертывания технической части проекта и получить качественный результат – нужен хороший подрядчик. Но попробуй его еще найди! Мало того что редкий подрядчик достаточно глубоко знает предмет – ситуация часто усугубляется тем, что заказчик не знает, чего хочет.

В одной из компаний, где я работал, была собрана команда для реализации проекта. Проект не аналитический, в теории он выглядел замечательно. К тому же командой руководил человек, который преподавал проектирование таких систем чуть ли не в топовом университете. Для технической реализации были выбраны самые «современные» технологии. В итоге три или четыре разработчика писали эту систему целый год. В попытке запустить ее потратили целые сутки… Не завелось, и всю систему выбросили на свалку. То же самое может случиться и с аналитикой. Теория очень сильно отличается от практики, тем более в нашем быстро меняющемся мире.

Риск уменьшится, если привлечь очень опытного аналитика, который не раз лично реализовывал подобные проекты. На вашем проекте он будет выступать в качестве независимого советника или даже арбитра. Это нужно, чтобы, с одной стороны, «приземлить» заказчика, с другой – ограничить подрядчика. Я считаю, что проект на старте лучше сильно урезать по «хотелкам», чтобы получить на выходе работающую версию как можно быстрее. На то есть несколько причин. Во-первых, после того как вы, заказчик, вживую поработаете с ней, вам гораздо легче будет сформулировать, что вы действительно хотите. Это тяжело делать абстрактно на бумаге, конструируя сферического коня в вакууме. Вторая причина – драйв, лично для меня это очень важно. Когда время течет медленно, у команды, да и у заказчиков, постепенно угасает интерес. И на выходе мы уже получаем вымученный проект, которым уже не так сильно хочется заниматься.

Если нет возможности найти советника – попытайтесь хоть немного разобраться в вопросе самостоятельно, почитайте книгу, посмотрите видеозаписи конференций. Иначе велика вероятность, что проект просто не взлетит. А если и взлетит, то будет потрачено много времени и денег.

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

Еще один вариант аутсорса – отдать какую-то часть проекта целиком: вы отдаете данные, а на выходе получаете готовый продукт. Пример такого сотрудничества – компания Retail Rocket. Начали мы бизнес с товарных рекомендаций. Интернет-магазины отдавали нам данные и товарную базу, на выходе они получали готовые рекомендации. Лично у меня идея такого бизнеса зародилась во время работы в компании Wikimart.ru. Я сделал рекомендации для сайта компании и подумал: почему бы не запустить тиражируемое решение. Это бы сняло необходимость интернет-магазину нанимать инженеров машинного обучения и изобретать велосипед. Результат получался гораздо быстрее, буквально за неделю. Среднее качество рекомендаций нашего сервиса гораздо лучше внутренней разработки. Если бы меня наняли сейчас в интернет-магазин, то, скорее всего, я бы привлек внешний сервис рекомендаций вместо того, чтобы делать собственную разработку.

Немного расскажу о своем личном опыте работы на аутсорсе. В 2009 году я ушел из Ozon.ru. В то время у меня был достаточно популярный блог по аналитике KPIs.ru, созданный за пару лет до этого. И оттуда ко мне стали приходить запросы на консалтинг по аналитике из самых разных сфер: разработчики игр, e-commerce, венчурный фонд и т. д. Потихоньку я стал наращивать темп консультаций, одновременно работая на три компании. Первой я помог выбрать нужную технологию и нанять людей в команду, проводил собеседования. Второй – помогал растить стартапы. В третьей компании я поработал руками, подняв аналитическую систему. Мне этот опыт много дал – прежде всего я помогал компаниям, не отвлекаясь на корпоративные детали и бюрократию, как было бы, работай я в штате. Ну а компаниям моя работа позволила осуществлять быстрый старт проектов. Кстати, в третьей компании я в результате остался работать (это был Wikimart.ru): ее основатель предложил мне возглавить отдел аналитики – и я согласился, потому что в тот момент хотел быть ближе к данным и работать руками. На этом тогда закончился мой аутсорс.

Наем и увольнения

Допустим, технологии выбраны, задачи понятны, есть информация по имеющимся данным. Возможно, даже «поднята» аналитическая система – бери и пользуйся. Поговорим о найме сотрудников.

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

Будем считать, что вы определились со списком необходимых сотрудников. Теперь поделюсь своим опытом найма – за свою карьеру я собеседовал сотни специалистов, и у меня в голове есть некоторая картинка без лишних подробностей (оставим их HR-отделу). При найме любого сотрудника для меня прежде всего важно, чтобы кандидат был здравомыслящий, ищущий развитие и разделяющий мои ценности. Младших аналитиков, джуниоров, стажеров на неполный рабочий день иногда получалось найти через групповое интервью. Делается это следующим образом. Даются объявления, в том числе в вузах, через вакансии. Рекрутер обзванивает кандидатов и приглашает всех собраться в одно время в один день. Сама встреча делится на несколько частей:

1. Вводное слово – рассказ о компании, работе и т. д. Пятнадцати минут достаточно.

2. Групповая работа – ребят и девушек разбиваем случайным образом на группы по 3–4 человека. Им дается простое аналитическое задание. Они обсуждают его группой в течение 30 минут – в это время рекомендую подходить к ним, слушать, как они рассуждают. Далее кто-то из группы озвучивает свое решение.

3. Индивидуальное задание – нужно предложить подход или решение к какой-либо задаче, можно письменно. На задание – полчаса.

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

Со специалистами сложнее. В такую группу их не собрать, требования к их квалификации выше. А еще на рынке труда существует серьезный перекос. Совсем недавно мне нужно было нанять двух человек: инженера по данным и аналитика данных. Как вы думаете, на какую вакансию откликнулось больше кандидатов? Задам еще один вопрос: кого у нас в стране больше – гитаристов или барабанщиков? Я трижды играл на шоу #ROCKNMOB – это такой масштабный флешмоб для музыкантов-любителей: собирается толпа вокалистов, басистов, гитаристов и ударников, и банда из трех сотен человек пилит рок-хиты, от Queen до Rammstein. На одно из шоу было заявлено 27 ударников и 151 гитарист. Эта статистика более-менее отражает распределение сил в природе: парень с гитарой – это сексуальный архетип (я уже написал, что играю на электрогитаре?), и выглядит он всегда круче барабанщика. А еще гитару купить проще, чем барабанную установку. Инженеры по данным проигрывают аналитикам в еще более грустной пропорции: 95 % откликов приходит на вакансию data scientist. Они прямо как гитаристы! При этом большинство имеют крайне низкую квалификацию и очень скромный послужной список, но чувствуют себя опытными «сержантами». В этом тоже виноват хайп!

Аналитиков данных я собеседую так: делаю первым звонок на 15 минут, задаю несколько несложных вопросов на понимание концепции машинного обучения. Если все ок, приглашаем на собеседование. Первое собеседование делится на две части: полчаса общаемся на тему машинного обучения, от азов до более сложных вещей. Во второй части задаем инженерные вопросы, например, какие-то вещи делаем на SQL. Потом устраиваем еще одно собеседование – решаем простейшую задачу машинного обучения. Буквально – садимся вместе за один компьютер, и кандидат выполняет задание, а я в это время задаю вопросы, чтобы убедиться, что он понимает, что и почему делает, действительно ли кандидат – практик. Обычно это сразу видно по скорости написания кода. В целом этих собеседований достаточно, чтобы оценить человека и сделать ему оффер.

Тема увольнения обычно стыдливо замалчивается, но оно даже важнее найма. Популистские высказывания в духе «нанимай медленно, увольняй быстро» я не поддерживаю. К сотрудникам нужно относиться по-человечески. Расставаться тоже нужно по-человечески, это важная часть корпоративной культуры. Увольнения происходят с двух сторон: по инициативе сотрудника и по инициативе работодателя. В моей практике первых было больше. Главная причина – мало машинного обучения, а ведь на курсах рассказывали, что этого будет много. Наука сильно расходится здесь с жизнью. Не устаю повторять, что реального машинного обучения в проектах машинного обучения 5–10 % времени. После такого опыта я стал целенаправленно отсеивать таких кандидатов-мечтателей на этапе собеседования. Вторая причина – сотрудник сильно вырос или устал долго работать на одном проекте. В таких случаях я обычно помогаю ему найти новое место работы, используя свои связи.

Причины уволить сотрудника могут быть разными – откровенно лажает, не вписывается в нашу аналитическую культуру. Но я никогда не тороплю события, ведь я также могу ошибаться. Для начала советуюсь с командой, с каждым отдельно. Если получаю негативные отзывы – это практически всегда означает, что нужно расставаться. Можно попробовать поговорить, подкинуть проекты, но обычно это не работает. Я наблюдал за карьерой уволенных и обратил внимание, что часто эти сотрудники находят нормальную работу и приживаются там. То есть они не были плохими – просто они не подошли нам, и это нормально.


Страницы книги >> Предыдущая | 1 2 3 4 5 6 | Следующая
  • 0 Оценок: 0

Правообладателям!

Данное произведение размещено по согласованию с ООО "ЛитРес" (20% исходного текста). Если размещение книги нарушает чьи-либо права, то сообщите об этом.

Читателям!

Оплатили, но не знаете что делать дальше?


Популярные книги за неделю


Рекомендации