Компания EPAM давно работает с данными, первые крупные заказчики с проектами по Big Data появились в далёком 2001 году. В то время известные аналитические компании Gartner и Forrester, а также крупные поставщики Oracle, Microsoft и IBM отмечали, что компании должны двигаться в сторону Big Data, поскольку эти технологии незаменимы во всех областях, связанных с обработкой больших объёмов данных. С того времени команда экспертов EPAM постепенно росла, работая над всё более сложными проектами и предлагая проверенные решения и качественные продукты для работы с большими данными. Сегодня только в российском EPAM более 500 человек работают в Data-практике. О том, как всё начиналось, какие проекты встречались, какие провалы случались, к чему должны готовиться Data-специалисты и о том, какие вообще бывают Data-специалисты, я поговорила с руководителем Data-практики EPAM в России — Ильей Герасимовым.   В EPAM я пришёл в 2006 году как junior-разработчик на .NET и MS SQL Server, до этого работал в продуктовой компании и занимал должность тимлида, разрабатывал ПО для автоматизации гостиниц и ресторанов. Но в EPAM я начал карьеру с нуля. К 2013 году я дорос до тимлида и искал новые возможности своего развития в EPAM, и именно в это время я встретился на SEC’e в Минске с руководителем центра компетенций Big Data, и мы договорились о том, что в России надо развивать это направление.    Тогда нас было два или три человека. Нам помогали коллеги из других стран, читали нам курсы, вовлекали нас в различные активности, связанные с этим направлением. Очень много приходилось учиться, а потом распространять полученные знания.   Ещё до Data я подумывал пару раз уйти, но что-то не отпускало меня. Сейчас я могу сказать точно, что здесь меня держат люди, с которыми пройдено много всего. И здесь всегда появляется что-то новое — новые проекты, заказчики.  Потому что весь мир — это Data, и мы в ней Data.  :) Постепенно появлялись новые Data-компетенции: Data Science, Machine Learning, Business Intelligence, Enterprise Search, DevOps in Data, Data Quality, Business Data Analysis. Сегодня в нашей практике более 500 человек — это очень большое подразделение с глубокой экспертизой в разных областях.   Постепенно трансформировалось понимание подходов к реализации проектов в этой области. Если раньше мы отвечали на вопрос «Как» и концентрировались в основном на технологиях, то теперь фокусируемся на вопросе «Зачем» и методологии работы с данными.   Для любого крупного предприятия рано или поздно встает вопрос Data-менеджмента и Data governance, т.е. понимания какие данные у предприятия есть в активе, какие данные они могут получить, как объединить эти данные, источниками которых являются разные подразделения и внешние источники.  Понять кто несёт за эти данные ответственность, кто имеет к ним доступ, как быстро данные устаревают, насколько они достоверны и т.д.  Более глубокое понимание качества данных — это способ лучше понять бизнес клиента.   Ценность сотрудника в практике определяется не только глубиной его знаний и навыков, но также широтой охвата компетенций, связанных с данными. Сотрудники могут приобретать различные компетенции, переходя между подразделениями практики — разработка программного обеспечения, моделирование данных, аналитика данных, Data Science и др.   Когда в 2013-2014 году мы начинали, у нас было буквально два-три проекта, мы работали с иностранной нефтегазовой компанией, с российским банком, потом появился проект с расшифровкой генома, а затем и первый проект с Data Science.   Самым сложным и масштабным на тот момент был проект с расшифровкой генома, к тому же это был абсолютно новый для меня язык программирования Scala и первое знакомство с облачными технологиями, серьёзное погружение в DevOps, погружение без скафандра, как говорится. Мы до ночи сидели, пытаясь собрать проект, мы построили много различных акселераторов, это было действительно интересно.    Первое время провалов было много. В основном они были связаны с нехваткой людей, потому что мы не могли найти готовых людей с улицы со знанием технологий. Мы набираем разработчиков со знанием Java, Python, DevOps-инжиниринг и потом доучиваем.   Все специалисты проходят курсы «молодого бойца», чтобы освоить наши технологии и процессы, которые в своё время прошел и я. Внешние курсы не соответствовали нашим запросам, поэтому в 2012 году было принято решение создать свой собственный курс — ёмкий, а главное имеющий практическое применение. Писали его сами, своими руками, основываясь на собственном опыте, ошибках. Понятно, что курс требует адаптации и должен меняться в соответствии с технологических ландшафтом и приобретенным опытом. Для поддержания курса в актуальном состоянии требуется много ресурсов, и нам приходится идти на это, чтобы оставаться на передовой, потому что без этого никак, внешние курсы сильно запаздывают от бизнес-реалий, в которых находится EPAM.  Помимо общего курса нашими специалистами разработано много внутренних курсов по разным направлениям — Data Analytics, облачные решения, Data Engineering, Data Science и другие, — доступных всем сотрудникам EPAM.  Пока это курсы для текущих сотрудников, но сейчас мы пытаемся масштабировать вовне, чтобы к нам приходили специалисты уже подготовленными. В Нижнем Новгороде первый пилотный проект — мы открыли доступ к курсу, который могут пройти все желающие освоить эти технологии.   Если я начну перечислять все технологии, то какие-то пропущу, какие-то не вспомню, на какие-то обращу больше внимания, чем они этого заслуживают. Технологий очень много, они быстро стареют и так же быстро появляются новые. Гнаться за суперсовременными технологиями не всегда получается, да и не всегда нужно. Зачастую новые решения появляются на рынке в довольно сыром состоянии. Однажды на одном проекте мы погнались за технологией Cadence, которая показалась заказчику приемлемой, но в итоге с ней постоянно возникало много проблем с производительностью, она не справлялась с тем объёмом данных, который был на проекте, и мы с трудом находили людей, которые могли бы быстро в ней разобраться.  Был ещё один кейс, на этот раз с технологией Reinforcement Learning. Один из наших заказчиков хотел внедрить систему с использованием этой технологии. Этому фреймворку на тот момент было около 2-х месяцев, он был довольно сырой. В целом было очень мало систем промышленного масштаба, где эта технология используется. В итоге ничего не получилось, и нам пришлось быстро откатить систему и создать решение, которое справлялось с задачей заказчика уже без использования Reinforcement Learning. Хотя технология очень перспективна, мы следим за её развитием и, возможно, даже уже в этом году мы сможем использовать её в проектах.   Но всё же существует некоторый «золотой стандарт», который должны знать Data-специалисты. Причём этот стандарт тоже постоянно обновляется. На самом деле, в инкубаторе много проектов, которые «завтра» взлетят. Многие проекты, которые вошли в «золотой стандарт» — это вчерашний инкубатор. Были, конечно, технологии, которые не взлетели. Так случилось, например, с технологией Theano, она появилась примерно в одно время с TensorFlow, но Theano куда-то исчезла.   У Apache есть целый набор инструментов, технологий, которые нужно знать — среди них Spark, Cassandra, Elasticsearch и другие.   Yarn, HDFS, MapReduce, Hive, Kafka, ZooKeeper — это базовые технологии, с которых всё начиналось. Базовая технология Hadoop никуда не делась, хотя она выглядит немного устаревшей, но все принципы, которые в ней заложены, используются в современных технологиях.  В различных облачных технологиях — в Amazon, Microsoft Azure, GCP — есть свои аналоги Hadoop, с которыми мы работаем.   Также актуальными являются инструменты защиты данных, такие как Kerberos, Knox, Ranger.   Понятно, что различные NoSQL и NewSQL базы данных — Cassandra, например (уже не новая), Snowflake, Amazon Redshift, HBase, MongoDB, Teradata.  DevOps технологии — Kubernetes, Docker, Jenkins.   Технологии визуализации данных: Power BI, Tableau, QlikView.  В Data Science тоже множество различных фреймворков, например TensorFlow и Google BERT (который тоже уже «вчерашний день», сегодня есть реализации лучше), PyTorch, Keras.   Отдельно стоит перечислить технологии Streaming. Streaming это новый вызов мира Data, поэтому инструменты стоит знать — Spark Streaming, Kafka Streams, Apache Flink, Apache Storm.    Во многом набор знаний зависит от направления специалиста.    Для всех обязательно знание SQL (стандартного и аналитического), теории DWH (какие типы организации хранилищ данных бывают — звезда, снежинка, Data Vault, как организовать историчность хранения справочников и т.д.), нормализации данных (чем отличаются первая, вторая и третья нормальные формы, что это такое вообще, в каких случаях полезна денормализация), и понимать, чем отличается DWH, Data Mart, Data Lake.   Для всех обязательно понимание процесса промышленной разработки, знание систем контроля версий. В последние годы обязательным становится опыт работы с облаками, хотя бы с одним из наиболее популярных AWS, Azure, GCP.  Для тех, кто занимается ETL (загрузка и преобразование данных перед их использованием) обязательно понимание разницы ETL и ELT, стадий загрузки, способов проверки и очистки данных, понятия slowly changed dimension. Также обязательно знание как минимум одного языка программирования для написания ETL вручную (PL/SQL, T-SQL, pgSQL, Python, Spark), оркестраторов для запуска процессов (например, Airflow), специализированных программ как коммерческих, так и бесплатных (Talend, Informatica Power Center, Pentaho, etc.).  Для репортеров (Data Analytics and Visualization), помимо знания хотя бы 2-х репортинговых программ (Power BI, Tableau, TIBCO Spotfire, MicroStrategy, Pentaho, и т.д.) необходимо знание различных подходов в создании отчётов и дашбордов (например, Storytelling).  Наши сотрудники контрибьютят в Apache —  Spark, NiFi, Elasticsearch и многие другие. Любой сотрудник может принять участие в проекте. Даже в рамках нашего обучающего курса, о котором я рассказывал, одно из заданий — доработать какую-то фичу или исправить решение в Open Source проекте.   Кроме того, мы разрабатываем и свои Open Source продукты, например, Open Data Analytics Hub (ODAHU) проект, предоставляющий компоненты для создания систем автоматизации полного жизненного цикла ML моделей.   Мы немного по-другому смотрим на то, как должен строиться подход к управлению проектами в Data — он основан не на выборе технологий, а на методологиях. У нас есть несколько шаблонов (blueprint) для решения тех или иных задач. Это решения задач, с которыми мы часто сталкивались на наших проектах, уже проверенные временем. Грубо говоря, у нас есть шаблон, который мы наполняем технологиями в зависимости от задач заказчика, от его приоритетов, инфраструктуры.  С готовым blueprint мы можем прийти к заказчику и просто как по чек-листу собрать информацию, например, есть ли у него в архитектуре хранилище сырых данных, витрина данных, эксплуатируемое окружение для Data Scientists, процесс миграции данных, вычисления дельт и т.д.  Мы работаем с нефтегазовой отраслью, с банками, с фармацевтическими компаниями, e-commerce, с медиа, со страховым бизнесом, в области Life Science много проектов — одним словом, в различных бизнес-направлениях. Может показаться, что всё это абсолютно разные направления задач, но blueprints позволяют нам мыслить в одних шаблонах, решать разные задачи с помощью одних и тех же подходов.    Конечно, в каждой отрасли есть специфические задачи и подходы, и если мы видим растущий бизнес, то мы делаем специализированное решение для той или иной отрасли. Мы разрабатывали специализированные решения для нефтегазовой, фармацевтической, банковской сферы и других. Четкое осознание, что данные нужно уже не только копить, но и заставлять их работать на бизнес у компаний появилось в XXI веке. И 2020 год подтолкнул компании, так называемое позднее большинство (late majority), которые до этого сомневались в ценности использования данных, к изменениям взглядов и походов.  Существует много курсов как платных, так и бесплатных, где дают много информации о технологиях, подходах. И, возможно, придётся прослушать десятки курсов, прежде чем изучить тему.   Чтобы начать учиться, необходимо иметь желание, уверенность в будущем Data, и умение программировать хотя бы на одном из языков Java, Scala или Python.  В тренинг-центре EPAM есть бесплатные курсы для начинающих специалистов, в том числе по направлениям Data Engineering, Data Science, BI, а также Python и другим языкам, которые помогут стартовать в профессии.   Выше подробно описан стек технологий. Если кратко, идеальный Data герой должен уметь программировать — на Java, Scala или Python (вообще, большинство ребят полиглоты в терминах языков программирования), знать SQL, понимать различные подходы к хранению и обработке данных, их плюсы и минусы, знать различные архитектуры построения гетерогенных систем, обязательно знать DevOps-инструменты и методологии ведения проектов, умение работать с облачными технологиями и понимание Machine Learning также приветствуются.