Извилистый путь через «скалу» в Spark: как одинэсник стал дата-инженером и полюбил строго типизированные языки

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

В этом интервью своим уникальным опытом освоения Scala и Spark поделится Михаил Кузнецов, ведущий инженер департамента разработки компании «Криптонит». Его карьерная лестница сделала крутой разворот, в результате которого из ритейла он перешёл в Big Data и анализ данных, полностью сменив не только привычные инструменты, но и сами подходы к программированию.

— Михаил, расскажи, с чего вообще началось твоё знакомство с программированием?

— Серьёзное программирование вошло в мою жизнь недавно, года три-четыре назад. Изначально заинтересовался программированием после выпуска из университета. В 2008 году я закончил Орловский государственный технический университет (ОрелГТУ) по профилю «Проектирование и технология электронно-вычислительных средств».

— Как затем ты пришёл в ИТ?

— Как ни странно — через ритейл. После университета я работал во Francesco Donni. В основном я занимался настройкой программ от «1С», их поддержкой и доработкой, но быстро захотелось чего-то большего. Я решил учиться по программе сертификации и выбрал направление «1С: ERP». Это большой программный комплекс, нацеленный на производственные предприятия полного цикла, с тысячами пользователей. После этого перешёл в частную лабораторию, которая занимается медицинскими анализами, где начиналось внедрение этого продукта.

— Что тебе понравилось в этом направлении?

— Это очень крутая штука: спецификации, планирование, наряд-заказы, циклы производства — всё это интересно, сложно и нужно как-то автоматизировать. Я стал заниматься внедрением и доработками «1С:ERP», которая замыкает все эти проблемы в круг и позволяет их эффективно решать.

— Тогда что побудило тебя изучать Spark и другие языки?

— Особенности бизнес-процессов у всех свои, поэтому иногда возможностей «1С» не хватало. Для решения таких эпизодических задач я использовал Delphi. За десять лет я достиг своего «потолка» в «1С» — получил все возможные «лычки» по программам сертификации, крутую зарплату, но начал постепенно выгорать. Было страшновато уходить в другой язык, но ещё страшнее было оставаться и заниматься рутиной. Очень хотелось освоить что-то новое. Подтолкнуло принять решение участие в одном плохо организованном проекте, на котором у меня совсем нервов не осталось. Тогда я подумал: «Всё, хватит!». Финансовая подушка к тому времени была, и я спокойно стал думать, чем бы мне хотелось заниматься дальше.

— Какие рассматривал варианты?

— Направление frontend оказалось совсем не моё. Backend-разработка была ближе, но это опять классика жанра: запрос / обработка / ответ. Python я отмёл просто потому, что он динамически типизированный. Стал посматривать на типобезопасные языки, и увидел большой спрос на Java. После первичного знакомства оказалось, что язык в освоении не тяжёлый и в нём есть свои интересные парадигмы. Начал читать книжки, понемногу кодить, общаться… и в какой-то момент заинтересовался Scala. Нарвался на него в статье, которая описывала бэкенд в функциональной парадигме с использованием фреймворка Cats Effect и паттерна Tagless Final. Эффект на меня он произвёл очень сильный, просто потрясающий! Первая реакция была: «Ничего не понятно, но жутко интересно!»

— Что именно понравилось в Scala?

— Это совершенно другой мир. Вот читаешь код на Java — там всё привычно: циклы, ветвления… скучная классика. Посмотришь на код Scala… господи, это как будто инопланетяне писали! Хочу в этом разобраться! Мне было важно найти новую работу, которая была бы мне интересна достаточно долго. Значит, она должна быть связана с интересным языком.

— Scala подходил на эту роль?

— Да. Я стал читать всё о Scala и выяснил для себя два важных момента: этот язык активно используется в бэкенде и в дата-инжиниринге. Оба направления мне нравились. В data engineering оказалось много общего с тем, что меня привлекало на прошлой работе: изучение бизнес-процессов и поиск путей их оптимизации, сбор и преобразование данных, их нормализация, глубокий анализ и генерация отчётов. Так я определился с направлением и стал копать в сторону дата-инжиниринга.

— На этом этапе уже пробовал искать вакансии?

— Я смотрел на HH, чего ждут от специалистов по data engineering, какой пул скиллов, что мне нужно подтянуть, а что освоить почти с нуля. Соответственно, читал по этой теме разные книжки, смотрел онлайн-курсы... На это ушло месяцев пять.

— Так мало?

— Только потому, что мне было жутко интересно. Я занимался ежедневно и тратил больше времени, чем обычно на рабочий день. Буквально с головой погрузился. В какой-то момент меня ждала очередная развилка. Оказалось, что дата-инженеры тоже бывают разные. Есть «софтовые», которым достаточно знать SQL, а есть «хардкорные», которым нужно уметь программировать на разных языках, уметь в алгоритмику, знать паттерны… Я выбрал второе. Начал изучать инструменты, которые Scala предлагает дата-инженерам, и наткнулся на Spark.

 — В какой момент ты решил начать работать по этому профилю?

— Сначала я работал у одного интегратора в подразделении, занимающимся разработкой аналитической платформы на базе Spark. Если кратко, эта платформа позволяет аналитикам ворочать терабайтами данных «почти» в real-time.

— Это уже сфера «больших данных»?

— Big data и data engineering тесно связаны. Эта платформа была своеобразным «ответом Западу» в области больших данных. Её основной компонент был написан на Spark. Для пользователя он выглядит как красивое окошко в браузере. Ты пишешь в него запрос, и он быстро обрабатывается, а по ту сторону сети выполняется анализ огромных массивов данных. В основном эта платформа использовалась банками и в нефтегазовой промышленности. Также её активно применяли для поиска различных «инсайтов», «узких мест» — способов оптимизации технических и бизнес-процессов. Например, датасайентисты определили, в каком режиме лучше эксплуатировать насос, чтобы он качал столько же нефти, но ломался реже и потреблял меньше электроэнергии.

— А пробовали применять эту платформу для прогнозирования?

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

— Что было самым сложным на этой работе?

— Глубокая оптимизация. Spark — это классика дата-инжиниринга. Архитектурно он проектировался под максимизацию объемов обрабатываемых данных, а не времени отклика. Сегодня аналитику нужен результат сразу, максимум — в течение минуты. Мне пришлось лезть «под самый капот», чтобы сделать максимально производительное решение. Я тюнил JVM, «игрался» с параметрами Spark и его внутренними «хаками»… да много всего.

— Как ты получил необходимые для этого знания?

— Я параллельно учился. Посещал различные курсы, из которых хотел бы особо выделить Spark Advanced от NewProLab, который вели Андрей Титов и Егор Матещук. Конечно, можно было и самостоятельно это освоить, изучая код Spark, читая книги и статьи, прогоняя тесты, но это потребовало бы огромного объема времени, а задачи были в стиле «сделать красиво и ещё вчера».

— Что заставило вновь сменить работу?

— Внезапно ушёл единственный человек с большим опытом работы и в Scala, и в Spark. Планировалось, что он будет учить меня и ещё несколько джунов. Без него смысла оставаться не было. Я стал искать альтернативу. Хотелось найти вакансию, на которой можно было бы и выполнять задачи на своём уровне, и учиться дальше. Одновременно я осознал, что тот набор скиллов, который можно получить при самостоятельном изучении, уже достигнут, а дальше мне нужен опытный наставник и работа в профессиональной команде.

— Такая команда нашлась в «Криптоните»?

— Да. Наш HR-отдел вышел на меня буквально сразу после размещения резюме на HH. Может быть, они даже до его публикации как-то меня нашли. Собеседование было достаточно тяжёлое. В нём затрагивались не только хорошо знакомые мне темы по обработке данных, но и классический скаловый бэкенд. По дата-инжиниринговой части я отстрелялся хорошо, а вот по бэкенду — мягко говоря, плохо. Я не планировал развиваться в эту сторону и честно об этом сказал, на что мне ответили: «Нам нужно и то, и то». Я подумал, что не прошёл, но расстраиваться времени не было, так как меня ждали три недели каждодневных собеседований в другие компании. Почти во всех получил офферы.

— А потом тебе перезвонили из «Криптонита»?

— Позвонили и сказали, что бэкендщиков довольно много, а вот скалистов и спарководов, которые могли бы двигать дата-инжиниринговые проекты, сейчас трудно найти. Скалисты — действительно редкие ребята, а скалисты-спарководы совсем редко встречаются. Причём, среди них если кто-то и находится, то это в основном джуны. В «Криптоните» уже был сеньор по Scala и Spark, но ему сложно было тянуть всё одному, а я готов был у него учиться.

— Сразу приступил к работе?

— После ещё одного собеседования с будущим руководителем. Кстати, все собеседования в «Криптоните» мне запомнились их глубиной. Они хоть и оказались технически сложными, но не были нервозными. Все разговоры проходили доброжелательно и честно. Это были не шаблонные вопросы, вроде «Кем вы видите себя через N лет?», и не дурные провокации, типа «В чём разница между уткой?», а толковые беседы по существу. Прямо по кирпичикам всё разбиралось. Сразу говорили, кого конкретно ищут, чего ждут, что реально готовы предложить, какие возможны варианты… Видно, что люди серьёзно настроены, и я был очень рад попасть в профессиональный коллектив. Ну и руководитель понравился как специалист. Я понял, что хотел бы с ним работать, научится у него чему-то новому.

— Когда ты в итоге устроился?

— В самое «весёлое» время — в конце февраля 2022 года. Мне тогда звонили из других компаний, где я тоже недавно собеседовался, и говорили, что сворачивают свою деятельность в России. Предлагали релокацию и работу в офисе, но я отказался. Живу в Орле, работаю из дома. Не вижу смысла ни переезжать, ни тратить время на дорогу в офис и обратно.

— Над чем ты сейчас трудишься?

— Работаю по профилю дата-инжиниринга. Если в общих чертах, то я занимаюсь обработкой дата-сетов на Spark. Делаю агрегацию, консолидацию, очистку данных для очень мощной платформы с простым интерфейсом. Грубо говоря, для эффективной работы приложения необходимо подготовить качественные данные, создать разнообразные представления по этим данным и их агрегатам для последующей наглядной визуализации бизнесу. Финальным пользователям проще принимать решения на основе данных, когда они представлены наглядно и расставлены акценты.

— Чувствуешь ли ты потребность освоить какие-то другие языки программирования в ближайшее время?

— Периодически хочется копнуть глубже Rust. Этот язык оставил очень положительное впечатление при первом знакомстве, но реальной необходимости его изучать у меня пока нет, да и времени тоже. Посмотрим, как сложится дальше. ИТ-сфера суперизменчивая, а дата-инжиниринг изменчив в квадрате. Помимо того, что постоянно появляются новые инструменты, уже освоенные быстро меняются. Они обрастают дополнительным функционалом, его изучение требует времени.

— Можешь порекомендовать книги, курсы и веб-ресурсы по Scala и Spark, которые действительно тебе помогли?

— В основном я читал книги издательства O’Reilly (Spark: The Definitive Guide, Learning Spark 2nd Ed, Stream Processing with Apache Spark). Насчёт курсов: я очень советую не просто их просматривать, а параллельно проверять всё увиденное и вести какой-то pet-project. Без кодинга и решения реальных задач всё быстро забудется. Мне очень помогли курсы NewProLab, где было много «подкапотной» практики по спарку. Они довольно хардкорные и имеют строгие дедлайны. Если возникнет желание их пройти — закладывайте на это значительный объём времени.

— Что посоветуешь молодым людям, которые только сейчас начинают карьеру программиста и стоят на распутье, как и ты в своё время?

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

Источник: https://habr.com/ru/company/kryptonite/blog/700678/


Интересные статьи

Интересные статьи

Экономика России переживает тектонические перемены, перестраиваются целые отрасли. Объясняем, зачем идти в IT — и в какие именно сферы.Это не просто мода, не очередной стереотип лучшей профессии, а ос...
Всем привет! Меня зовут Иван Спиридонов, я создатель сервиса сквозной аналитики R7K12. Наша система помогает выявить наиболее эффективные источники рекламы, которые приносят реальную прибыль комп...
С самого начала сентября широким потоком хлынули на Хабр публикации об успешном успехе на тему «Детство программиста», «Как стать программистом после N лет», «Как я ушёл в IT из другой професси...
Предисловие История начинается с того, что пол года назад я купил усилитель Yamaha A-S501. В комплекте с ним шёл пульт дистанционного управления, который мог управлять и усилителем, и ямаховс...
Столкнулся с проблемой «ненахода» актуального скрипта для массового создания сотрудников. Проблема связана с переходом Яндекса с PDD (Почта для домена), на Я.Коннект с новой версией API. Ск...