Название EPAM известно практически всем. Но не все знают о том, что компания среди прочего занимается биоинформатикой, что в ней ценят full-stack разработчиков, а её внутренняя система обучения/переквалификации рассчитана не только на джуниоров, и в качестве менторов там порой выступают архитекторы.
В преддверии конференции Joker, на которой EPAM будет активно присутствовать, мы задали сотрудникам компании вопросы о Java-разработке и всём, что вокруг неё. Нашими собеседниками стали:
- Марианна Округина, директор офиса в Санкт-Петербурге
- Алексей Зиновьев, тренер по Java/Big Data (спикер Joker 2016 и не только)
- Вячеслав Лапин, senior developer (спикер Joker 2015 и не только)
- Полина Панюкова, специалист по маркетингу
Марианна Округина
— Что даёт вам участие в Java-конференции?
— Для нас как ИТ-компании с множеством заказчиков в разных странах, а также для наших сотрудников, участие в такой конференции — это в первую очередь возможность показать профессиональному сообществу, какие проекты мы реализуем, какие проблемы и каким образом решаем, а также обменяться опытом и услышать новые идеи.
— Расскажите тогда и здесь: какие интересные проекты реализуете сейчас?
— Проектов чрезвычайно много. К примеру, в области решений по обработке больших данных у нас ведутся проекты по обработке человеческого генома, по исследованиям в области фармацевтики и анализу клинических данных, созданию информационных платформ на основе семантических сетей, по управлению инвестиционными портфелями и по анализу функционирования сетей доставки кабельных и интернет-провайдеров.
Кроме того, одно из наших подразделений, специализирующееся в области медико-биологических исследований (Life Science), помимо разработки решений для заказчиков, активно вовлечено в разработку и сопровождение различных Open Source проектов в области хим- и биоинформатики. Например, мы участвуем в развитии и оптимизации ряда важных биоинформатических программ/утилит с открытым кодом.
Наш вклад позволяет нам использовать наработки и опыт как основу для специализированных решений в конкретных производственных задачах заказчиков. Сюда входит портирование и адаптация результатов научных исследований и специализированных инструментов (например, с Perl и Python и даже с C/C++ на Java), оптимизация производительности, поиск лучших решений как в плане алгоритмов, так и работы с кодом.
Наконец, тотальная переделка унаследованного кода для адаптации к высокопроизводительным вычислениям (high performance computing) на основе параллелизма, включая те же Apache Spark, Apache Ignite и другие.
Всё это — следствие потребности перехода в области медико-биологических исследований от научных достижений к выстраиванию высокопроизводительных производственных конвейеров (pipelines) для массовой обработки уже не исследовательских, а клинических данных.
— Какую роль в целом играет Java в компании, и почему в этих случаях предпочтение отдаётся ей?
— Чрезвычайно важную, более 75% проектов выполняется именно на этой технологии. ЕРАМ разрабатывает приложения в области финансов, коммуникаций и медиа, медико-биологических исследований и здравоохранения, решений для онлайн-коммерции и в сфере развлечений — и Java оказывается востребована во всех этих областях без исключения.
Выбор Java во многом определяется техническими требованиями к ресурсам, необходимым для решения задач наших клиентов. Конечно, существенны и зрелость платформы, большое количество доступных решений и библиотек, а также лёгкость обучения и доступность специалистов на рынке.
— Какие технологии вы используете в случае с Java?
— В области решений по обработке больших данных мы используем следующие технологии, целиком реализованные на Java или предоставляющие Java API: Hadoop, Spark, Ignite, Flink.
Алексей Зиновьев
— О чём вы будете рассказывать на Joker?
— У меня уже возникла постоянная аудитория, ждущая «продолжения балета» про Big Data. Начинал с рассказа про то, как делать Data Science на Java в 2014-м, потом мы зашли глубоко в NoSQL и Hadoop. Следующий на очереди Spark, что логично, но Spark не простой, а режима реального времени.
Летом вышел горячий и интересный Spark 2. На данный момент у меня имеется некоторое количество боевого опыта с ним и его «бесконечными DataSet», специальной раскладкой объектов в памяти и проблемами этого революционного, но не допечённого релиза. Также мы поглядим на стыки самого движка обработки данных и его друзей (Kafka/Samza/MLlib), эти самые данные поставляющих группами или индивидуально.
Если вы ни разу не работали со Spark/Hadoop, то на Joker можете про Spark API сначала послушать в докладе Жени Борисова, это станет хорошим прологом к моему.
— Big Data нужна далеко не всем. Насколько она оказывается востребована конкретно в EPAM — много ли там проектов, связанных с ней?
— В EPAM есть несколько точек роста экспертизы в Big Data, и одна из них находится в Петербурге (мне кажется, что самая мощная, но есть разные мнения на этот счет), проектов очень много, эксперты есть очень бородатые, крутящие в проде первый Hadoop, собранный безо всяких святых образов, вроде HDP.
Так как сама сфера и количество инструментов велико, то есть уже отдельные специализации: кто-то занимается графами, кто-то специальными форматами хранения файлов, кто-то аналитикой и ETL, кто-то нейросетями и прочим машинным обучением. Есть чем заняться на разных уровнях — от DevOps до переговоров с заказчиком.
— Вы в EPAM «тренер по Java/Big Data» — что именно за этим стоит?
— У нас в EPAM очень мощная система обучения/переквалификации специалистов всех уровней, не только младшеньких, есть серьёзные программы менторинга, где участник программы грызёт гранит науки и практики под руководством ведущего программиста или даже архитектора.
В частности, я курирую две программы, параллельно читая в них тренинги: одна программа помогает уверенным в себе Regular Developers закрыть пробелы в знаниях по Java Memory Management, Spring, Concurrency и т.д. для перехода на следующую ступень профессионализма, а другая программа формирует у зрелых Java-программистов навык работы с технологиями стека Big Data (Hadoop, Hive, Spark, Kafka, Cassandra).
Работы в команде, деплоя, кодинга, решения нетривиальных задач на глазах у всех, говорения ртом во всём этом — непочатый край. Адреналин и новые вызовы — каждый день.
Вячеслав Лапин
— В EPAM вы senior developer — а над чем именно работаете?
— Мой официальный статус Senior Developer (D3, как у нас говорят) я сейчас меняю, и планирую это сделать уже этой зимой. А что касается того, над чем работаю — у меня достаточно специфическое положение, так что вряд ли по мне можно делать вывод о компании в целом.
Формально я — наполовину тренер, наполовину — team lead одного проекта по биоинформатике. Но я стараюсь позиционировать себя в компании прежде всего как внедренец технологических инноваций. Любые инновации имеют шанс только в случае, если ими владеет такая критическая масса сотрудников, что они перестают быть незаменимыми, и из этого вытекает моя тренерская активность. Иными словами, я формирую среду, в которой я смог бы достаточно просто предлагать на проектах продвинутые технологические решения, предъявляющие повышенные требования к технической компетентности разработчиков, поскольку легко смогу найти людей, этими технологиями владеющих на достаточно профессиональном уровне — как минимум из числа своих студентов.
— И что именно сейчас внедряете?
Например, не так давно была принята идея создания из студентов небольшой Scala-группы — в основном в связи с тем, что у нас во многих проектах используется Spark, который предоставляет более расширенный API для Scala, чем для Java. На большом количестве проектов вместо Maven уже используем Gradle. В некоторых используем Lombok.
Сейчас заканчиваю интенсивное обучение группы фронтендеров: помимо хитростей JavaScript ES2015, обучил их и TypeScript 2.0, дал небольшое введение в Vue, также им будут даваться React и Angular (в том числе и Angular 2, релиз которого состоялся только в сентябре). Возможно, следующей группе расскажу ещё про Riot. Ну а ребятам, которых учу базовой Java, уже кое-что между делом рассказываю про то, что будет в Java SE 9, Java EE 8; для более старшей группы готовлю материалы с обзором Spring 5.
Мои усилия в основном сосредоточены на привлечении внимания разработчиков EPAM к Java 8, чтобы, с одной стороны, как можно сильнее расширить сферу её применения, а с другой — не допустить профанации такого перехода. Не допустить ситуации, когда, пользуясь обратной совместимостью Java, в проекте просто анонимные классы заменяют на лямбды и переборы коллекций при помощи цикла for заменяются на вызов метода forEach — и на этом весь переход заканчивается.
Виктор Полищук из Infopulse читал на прошлом Joker замечательный доклад про legacy, показав, что если дать людям использовать последние модные технологии, по которым ещё нет опыта применения, то программисты очень быстро сделают из этого проект с большой болью. Да, в общем и целом это, наверное, так, и по инерции многие опытные разработчики, PM’ы и заказчики к этим новинкам и относятся скептически — мол, очередное сырое новьё им тут толкают, уговаривая их стать бесплатными бета-тестерами… Но в применении к новым возможностям Java 8 это не так: фактически, Java просто стала функциональной (или «функционально-подобной», по выражению Сергея Куксенко), как и многие языки до неё. Так что мой поинт состоит в том, что, не изучив вопроса, конечно, не нужно «городить огород», «изобретая велосипед», а нужно просто посмотреть на другие функциональные языки и почерпнуть опыт применения всех этих инструментов оттуда.
— А ваш интерес к языкам вроде Clojure и Groovy тоже как-то реализуется в EPAM, или это «для души»?
— Интерес не приводит к переходу проектов с Java на эти языки, однако не стал бы говорить, что это просто «для души»: я прежде всего воспринимаю эти языки как некоторый эксперимент. Каждый язык, каждая технология, обогащает тебя новыми приёмами кодирования. И если основной язык, на котором ты пишешь, достаточно развит, то в нём, как правило, можно сносно реализовать практически любой хороший приём, уже опробованный в другом языке.
Например, Lombok в сочетании с лямбдами Java 8, конечно, несколько уступает в элегантности Groovy, но в реальном проекте начать использовать Lombok и Java 8 намного легче, а большинство реально возникающих проблем это сочетание тоже решает. И так со многим другим. Когда я вижу какую-то фичу в каком-то языке, я сразу задаю себе вопрос: настолько ли она хороша? Используют ли её те, кто пишет на этом языке, и какие у неё есть подводные камни? Если она используется широко и проблемы, которые решает, актуальны и для Java-проектов, тогда у меня встаёт следующий вопрос: а можно ли похожим образом решить подобную проблему и в Java? И как правило, способ, пусть и не такой элегантный, находится!
— Вы выступаете и на конференциях и по Java, и по JavaScript. Насколько EPAM характерна такая «многостаночность», там есть full stack developers, или вы и тут оказываетесь исключением?
— Full-stack developers в EPAM есть и, насколько я могу судить, нас очень любят на проектах. Дело в том, что достаточно часто бывают некоторые «качели»: то на проекте преобладают задачи по фронтенду, то по бэкенду. Из-за этого узкоспециализированный разработчик попадает в ситуацию, когда у него задач «то пусто, то густо», а у full-stack разработчика задачи будет всегда. Однако достаточно тяжело «держать руку на пульсе», отслеживая и своевременно изучая новые технологии в двух настолько различных мирах.
— Один из ваших докладов называется «Низкоуровневое программирование в браузере» — а насколько вам вообще интересно низкоуровневое, и имеете ли с ним дело при работе в EPAM?
— В основном вопрос о спуске на более низкий уровень встаёт при тюнинге производительности. А тюнинг обычно производится на достаточно позднем этапе проекта, когда он уже в продакшене и просто возросшие нагрузки показывают, что кодовая база недостаточно шустро работает. Но это — на бэкенде. В контексте же браузера в том докладе я говорил о WebAssembly — технологии, которая выведет производительность SPA на такой уровень, который позволит окончательно стереть разницу в производительности оконных интерфейсов (GUI) и Web-интерфейсов. Что же касается моего интереса, то мне интересно решать задачу балансирования между понятностью кода и высоким перформансом, как можно дальше отодвигая развилку, где уже приходится выбирать между этими двумя качествами. Каждую новую технологию я стараюсь рассматривать прежде всего через эту призму.
Полина Панюкова
— Для того, чтобы заявить о себе, вы используете разные каналы. Какие преимущества есть у конференций, насколько важна возможность «посмотреть в глаза»?
— Конференция — это, прежде всего, возможность познакомиться и пообщаться с реальными сотрудниками компании, с теми, кто может ответить на все интересующие вопросы. Обычно на стенде можно встретить наших экспертов, которые могут поделиться своим опытом. Мы сами предпочитаем делать офлайн-конференции, чтобы было больше возможностей «посмотреть в глаза».
— Поскольку Joker проходит в Петербурге, хочется узнать: какую роль у вас играет офис в этом городе?
— Петербург – это приоритетная и стратегическая точка. Петербургский офис очень активно растёт, за год мы выросли практически в два раза. Сейчас нас 1500. Эта динамика, безусловно, означает, что всё больше и больше проектов приходят именно в наш офис. Здесь у нас представлены совершенно разные проекты во всех доменных областях от биоинформатики до банковских проектов и электронной коммерции. Более того, мы сейчас стараемся активно вливаться в городское IT-сообщество, делаем внешние мероприятия: ITsubbotnik, Global Day of Coderetreat.
— А если на конференции кто-то интересуется возможностью работать в EPAM, его обычно интересует офис в том же городе, или и в других?
— На самом деле, чаще спрашивают в целом о работе в компании EPAM. Мы, конечно, рассказываем о наших возможностях релокации сотрудников, у нас есть программа «Career without borders», в рамках которой можно устроиться на работу в любой офис EPAM. Сейчас активно ищем тех, кто готов уехать в Польшу, Беларусь и США.
— Говорят ли вам «захотел у вас работать из-за доклада вашего спикера», или влияние конкретного доклада можно измерить только косвенно?
Да, бывает такое. Я разговаривала с коллегами из команды рекрутеров, они говорят, что кандидаты рассказывают о том, что видели спикеров из EPAM на конференциях. Но сложно оценить влияние какого-то конкретного доклада, ребята выступают каждый раз с новыми темами, скорее это накопительный эффект.
— В EPAM существуют образовательные программы для студентов — можете ли рассказать подробнее?
— Для студентов ПМ-ПУ СПбГУ, ИТМО, Политеха и ЛЭТИ есть возможность пройти бесплатное обучение в Учебном центре ЕРАМ по направлениям: Основы Java, Разработка на платформе .NET, Автоматизация тестирования, Основы FrontEnd-разработки. Также в 2014 году EPAM открыл совместную учебную ИТ-лабораторию в ЛЭТИ, основные направления, по которым проходит обучение — языки программирования Java и C#.
— Спасибо! Будем ждать на Joker новый доклад от Алексея Зиновьева, а пока что вспомним некоторые из предыдущих Java-докладов спикеров из EPAM:
Автор: JUG.ru Group