Интервью со Scala-разработчиком

Возможно, вам никогда не придётся искать разработчика со знанием Scala. А если такой запрос поступит, придётся попотеть: соотношение Scala-разработчиков к Java на российском рынке выглядит как 1:30.
Что такое Scala и с чем его едят? Это язык программирования, который реализован для платформы Java. Используется для создания серверной части приложений.
Кто пишет на Scala? Можно смело говорить о том, что большинство Scala-разработчиков пришли из Java, так как это очень похожие, в плане синтаксиса и реализуемых задач, языки.
Что еще используют эти люди? Есть два сервиса, которые Scala-разработчики достаточно часто используют. Речь идет про Akka и Play Framework.
- Akka — это библиотека, которая позволяет упростить разработку многопоточных и распределенных приложений.
- Play — это полноценный фреймворк, который также иногда называют каркасом разработки. Его основная задача — повышение производительности кода, а также отображение появляющихся ошибок в браузере. Создатели Play, при разработке ориентировались на такие популярные решения как Ruby on Rails и Django.
Scala в основном используется как enterprise язык (для разработки корпоративных приложений), что подтверждают сервисы использующие его. Например это Twitter, LinkedIn, Foursquare, Тинькофф и другие. Разумеется, есть не столь большие решения на Scala, однако это можно считать исключениями.
Scala я выбрал по историческим причинам. Когда учился в университете, ходил на курсы по Java. Мне интересно было функциональное программирование, и я самостоятельно изучал Lisp и OCaml. А потом из всего этого синтезировалась Scala. В этом языке много инструментария, которым можно делать сложные вещи, но, если не задаваться такой целью, то можно писать и довольно просто. Всё равно существует баланс между выразительностью и абстрактной сложностью. В интернете была шутка про языки, в которой говорилось, что Scala пытается объединить возможности функционального и объектно-ориентированного программирования, а в итоге его начинают люто ненавидеть обе стороны. Действительно, когда пытаешься объединить две стороны, то порой наталкиваешься на непонимание обеих.
У разработчика на интервью стоит уточнить несколько наиболее важных моментов:
- Почему находится в поиске (если находится)?
- Какие задачи решал в текущем и предыдущем проектах?
- Разработка велась исключительно на Scala или же параллельно писал на Java?
- Кто ставил задачи?
- В какой команде работал?
- Участвовал ли в выборе технологий для проекта?
- На какие факторы будет обращать внимание при выборе нового места?