Чтобы сделать
подбор ит персонала немного проще, мы написали эту статью, в которой подробно объясняется, что вам нужно сделать, чтобы найти подходящего разработчика Scala.
1. Что нужно знать о Scala, чтобы нанять Scala-разработчиков
Scala - это язык программирования общего назначения, обеспечивающий поддержку функционального программирования и сильную систему статических типов. Разработка Scala началась в 2001 году Мартином Одерски в Федеральной политехнической школе Лозанны (EPFL). Он стал продолжением работы над Funnel, языком программирования, сочетающим идеи функционального программирования и сетей Петри. Одерский ранее работал над Generic Java и javac, компилятором Sun Java. Scala в основном используется в серверной разработке приложений с высокой степенью параллелизма.
Ключевые преимущества Scala: Объекты неизменяемы «по умолчанию» (например, все коллекции).
Это делает язык гораздо менее подверженным ошибкам, особенно в отношении потоков.
Расширенная система типов. Больше типов означает, что Scala может выполнять больше видов задач, чем языки с более простыми системами типов, например Java.
Возможны функциональное, объектно-ориентированное и императивное программирование.
Различные задачи требуют разных стилей программирования. В то время как другие языки работают только с одним или двумя стилями программирования, Scala работает со всеми тремя. Это означает, что разработчик, работающий в среде Scala, может выполнять больше типов задач без необходимости переключаться на другую среду программирования.
2. Что важно знать ИТ рекрутеру о Scala? Прежде всего, есть три очень важных вещи, которые должен знать любой технический рекрутер, пытаясь найти разработчика Scala.
В настоящее время Scala - самый популярный язык функционального программирования. Хотя у него есть несколько различных приложений, вероятно, наиболее популярным сейчас он является в области больших данных.
Scala использует ту же среду выполнения, что и Java, и называется виртуальной машиной Java. Благодаря этому он полностью совместим с Java. Это причудливый способ сказать, что вы можете использовать библиотеки Scala для приложений Java и библиотеки Java для приложений Scala. Это дает разработчикам Scala огромное преимущество перед другими разработчиками, поскольку они могут получить доступ к невероятно большой и разнообразной экосистеме Java.
Единственное, что может оттолкнуть разработчиков от Scala, - это более сложный синтаксис в таких языках, как Java или C#. В результате кривая обучения может быть особенно сложной, а это означает, что может быть трудно найти квалифицированного разработчика Scala.
В марте 2015 года бывший вице-президент группы разработки платформ в Twitter Раффи Крикориан заявил, что не выбрал бы Scala в 2011 году из-за его кривой обучения. В том же месяце старший вице-президент LinkedIn Кевин Скотт заявил о своем решении «минимизировать зависимость от Scala. «В ноябре 2011 года Yammer отошел от Scala по причинам, которые включали кривую обучения для новых членов команды и несовместимость от одной версии компилятора Scala к другой. (Источник: Wikipedia)
При поиске разработчиков Scala вы должны понимать, что будете искать элиту, которая была готова преодолеть барьеры для входа, которые создает язык.
3. Как проверить навыки Scala на этапе проверки 3.1. Технический отбор навыков Scala программистов на основе резюме кандидата Перед тем, как проводить какой-либо более широкий технический отбор, стоит проверить интерес ваших кандидатов в разработку к функциональному программированию. Это означает, насколько они заинтересованы в изучении новых языков, а также таких функциональных языков, как Haskell, F sharp и OCam.
Глоссарий Scala для ИТ рекрутера
Фреймворки и библиотеки Scala: - Бэкэнд: Akka, Finagle
- Большие данные: Spark , Scalding
- Веб: Play, Lift, Scalatra
Утилиты: Scalaz, Cats
Инструменты тестирования Scala: ScalaTest, Specs2
Инструменты сборки Scala: sbt ( простой инструмент сборки)
Отношения между соответствующими версиями технологии Scala
В основном используется версия 2.12 с меньшим количеством разработчиков, использующих версию 2.11. Версия 3.0 планируется выпустить в 2020 году. Эти основные версии Scala не совместимы с двоичным кодом - вам необходимо перекомпилировать все библиотеки, но второстепенные версии (2.11.1, 2.11.2 и т. д.); все версии совместимы с исходным кодом.
Значение сертификата Scala для оценки навыков разработчика Scala Доступно множество курсов. Самые популярные из них предлагает Lightbend, который также выдает сертификаты. Но многие люди используют трек Coursera Scala, разработанный Scala Center. Хотя сертификаты могут показывать некоторые способности, существует еще много факторов, которые определяют, будет ли кандидат подходящим разработчиком Scala для вас.
3.2. Техническая проверка навыков программистов Scala во время телефонного / видео-интервью (Вопросы для собеседования с Разработчиком Scala) Обычно после резюме следующим шагом в процессе приема на работу является телефонное или видео-интервью с кандидатом. Основное преимущество этой части процесса - возможность задавать поведенческие вопросы, чтобы увидеть, как ваш кандидат отреагирует в определенных жизненных ситуациях. Часто это является основным фактором, решающим, будет ли кандидат приглашен на место для индивидуального технического собеседования, поэтому на этом этапе важно задать правильные технические вопросы.
Конечно, эти вопросы могут варьироваться в зависимости от типов навыков, которые вы набираете. Тем не менее, вопросы здесь должны быть полезны для заполнения любой позиции разработчика Scala.
В1: Что такое сопоставление с образцом?
Почему вы должны это спросить: это важно знать, потому что Scala имеет встроенный общий механизм сопоставления с образцом. Этот механизм позволяет сопоставлять любые данные с политикой первого сопоставления.
В2: Что такое case-классы?
Почему вы должны спросить об этом: классы Case уникальны для Scala. На самом деле это обычные классы, к которым добавлено несколько дополнительных условий. По умолчанию они неизменяемы, разлагаемые через сопоставление с образцом, сравниваются по структурному равенству, а не по ссылке, и краткие для создания экземпляров и работы с ними.
В3: Какие объектно-ориентированные шаблоны реализованы в Scala?
Почему вам следует спросить об этом : существует три основных объектно-ориентированных шаблона, которые должен знать разработчик Scala. С помощью Singleton Scala обеспечивает прямую реализацию шаблона Singleton в языке. Шаблоны объектов значений возможны с использованием кортежей, типов или классов. Наконец, в Scala есть ключевое слово lazy, которое предлагает отложенную инициализацию.
В4: Что такое черта и есть ли эквивалент в Java?
Почему вы должны это спросить: черты похожи на интерфейсы в Java и частично реализованы. Помимо конкретных технических вопросов, есть ряд вопросов о поведении, которые помогут определить, как ваш кандидат будет действовать в определенных ситуациях.
В5: С какими технологиями у вас был коммерческий опыт за последние 2 года? Каковы были ваши обязанности? Какое ваше самое большое достижение?
Почему вы должны спросить об этом: не все навыки программирования одинаковы. Разработчики часто имеют самые разные интересы и пробовали использовать различные технологии, но важно выяснить, какие у них есть практические функциональные знания, а какие - просто пробовали. Этот вопрос также поможет показать, как они будут использовать технология для коммерческих земель.
В6: Какие библиотеки Java с открытым исходным кодом вы считаете ценными и почему?
Почему вы должны спросить об этом: упоминается до того, как Scala станет совместимой с Java. Поскольку в Java есть намного больше библиотек, эффективность вашего движка Scylla будет зависеть от года, с которым они знакомы. Этот вопрос даст вам представление о том, с какими библиотеками помимо Scala знаком ваш программист и как они использовали это в прошлом.
В7: Я заметил, что вы указали фреймворк X в своем резюме. Каково ваше мнение об этом? Это хороший выбор?
Почему вам следует спросить об этом: настоящая ценность разработчика не просто в их знании языка для способности эффективно выполнять проект. Лучшие из них знакомы с рядом инструментов и ресурсов, которые увеличивают объем того, чего они могут достичь. этот вопрос поможет понять, насколько удобно разработчику использовать эти внешние ресурсы для ускорения разработки программного обеспечения.