Scala — функциональный объектно-ориентированный язык программирования, который характеризуется компактным и лаконичным стилем. Он не столь распространен, но при этом подходит для разработки сложных приложений. Стрим по поиску таких разработчиков регулярно появляется у нашей команды. Поговорили с консультантом GlobalCareer Вероникой Мироновой об особенностях подбора столь редких специалистов.
— Scala-разработчиков не так много на рынке. Как вам удается регулярно находить опытных кандидатов?
В.М.: Сообщество Scala достаточно закрытое и немногочисленное, поэтому основной секрет поиска специалистов этого профиля прокачанный нетворкинг. У нас хорошо выстроенные отношения с разработчиками этой специализации. Когда к нам обращается клиент с запросом, я практически всегда могу сразу называть кандидатов, которые по опыту и навыкам подойдут. Мы начинаем переговоры со специалистами — иногда они оказываются открыты к новым предложениям, иногда приходится ждать, когда кандидат выполнит свои обязательства на предыдущем проекте. Но хочу заметить, что в последнее время сообщество Scala активно развивается. Появляется все больше фреймворков и библиотек.
— В Scala-разработку часто приходят из Java. А в чем различие этих языков?
В.М.: Да, верно. Scala редко бывает первым и единственным языком, на котором пишет программист. Обычно Scala-разработчик — это опытный Java-разработчик. Java читабельный, но при этом весьма громоздкий, Scala же краткий и читабельный одновременно. То, что на Java занимает десять строк кода, на Scala может уместиться в одну. При этом Scala относительно легок в изучении благодаря своей функциональности.
— Какие навыки необходимы для разработки на Scala?
В.М.: От хорошего разработчика Scala требуется понимание функциональных языков программирования, фундаментальные знания работы с JVM, коллекциями и параллельными вычислениями. Необходимо понимать, что такое функциональное программирование (ФП) и в чем его плюсы. Также важно знание других объектно-ориентированных языков программирования, таких как Java и Python. Базовые знания Spark, Hadoop и MapReduce. Опыт работы с ETL-архитектурой и с облачными платформами. Опыт работы с фреймворками, такими как Play, Аkka, Аkka-http, Аkka-streams. Знания SQL и NoSQL баз данных, асинхронного программирования.
— Различаются ли требования к навыкам Scala-разработчиков в зависимости от проектов?
В.М.: Как правило, на Scala разрабатывают backend либо что-то, связанное с big data. Соответственно, и требования к этим направлениям различаются. В случае backend-проектов кандидату необходим набор знаний backend-разработчика: протоколы TCP, HTTP; REST, RPC и другие подобные подходы; понимание принципов построения высоконагруженных и отказоустойчивых систем; SQL и NoSQL базы данных. Обычно Scala в продакшене работает на Linux/Unix-серверах, следовательно, нужно уметь с ними работать.
В случае проектов big data стек очень широк, и в зависимости от компании, технологии могут варьироваться. Но как правило нужно знать самые распространенные инструменты big data — Spark и Hadoop. Также важно понимать принципы работы распределенных вычислений. Будут плюсом базовые знания, типичные для Data Science-направления, — статистика, нейронные сети, машинное обучение и т.п.
Знаю, что на технических интервью клиенты много внимания уделяют синхронному и асинхронному программированию. Сейчас появляется все больше технологий и подходов, которые базируются именно на асинхронном коде, а Scala предоставляет удобные инструменты для работы с многопоточностью и асинхронностью. Важно уметь этим пользоваться.
— А как обстоит ситуация с опытом кандидатов?
В.М.: Scala не очень распространенный язык, из-за этого получить опыт работы на нем сложнее. Поэтому для подтверждения квалификации могут подойти свои проекты с открытым исходным кодом или сертификаты по Scala-курсам. К тому же работодатели знают, что рынок Scala не так широк, поэтому готовы принимать людей без опыта production. В этом случае важно, чтобы у кандидата был уверенный опыт коммерческой разработки на другом языке.
Если вам нужен Scala-разработчик или любой другой IT-специалист, напишите нам, и мы найдем подходящего кандидата.