«Навчаємо фахівців всіх рівнів»: EPAM про Java-розробки і конференціях



Назва 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 існують освітні програми для студентів — чи можете розповісти детальніше?

— Для студентів ПМ-ПУ Спбду, ІТМО, Політеху і LETI є можливість пройти безкоштовне навчання в Навчальному центрі ЕРАМ за напрямами: Основи Java, Розробка на платформі .NET, Автоматизація тестування, Основи FrontEnd-розробки. Також у 2014 році EPAM відкрив спільну навчальну ІТ-лабораторію у ЛЕТІ, основні напрями, за якими проходить навчання мови програмування Java та C#.

— Спасибі! Будемо чекати на Joker новий доповідь від Олексія Зінов'єва, а поки що згадаємо деякі з попередніх Java-доповідей спікерів з EPAM:






Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.