Вакансия: разработчик Scala::Журнал СА 11.2017
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Наука и технологии
Авторам
Рекламодателям
Контакты
   

  Опросы
  Статьи

День сисадмина  

Учите матчасть! Или как стать системным администратором

Лето – время не только отпусков, но и хорошая возможность определиться с профессией

 Читать далее...

День сисадмина  

Живой айтишник – это всегда движение. Остановка смерти подобна

Наши авторы рассказывают о своем опыте и дают советы начинающим системным администраторам.

 Читать далее...

Виртуализация  

Рынок решений для виртуализации

По данным «Обзора российского рынка инфраструктурного ПО и перспектив его развития», сделанного

 Читать далее...

Книжная полка  

Как стать креативным и востребованным

Издательский дом «Питер» предлагает новинки компьютерной литературы, а также книги по бизнесу

 Читать далее...

Книжная полка  

От создания сайтов до разработки и реализации API

В издательстве «БХВ» недавно вышли книги, которые будут интересны системным администраторам, создателям

 Читать далее...

Разбор полетов  

Ошибок опыт трудный

Как часто мы легко повторяем, что не надо бояться совершать ошибки, мол,

 Читать далее...

Принципы проектирования  

Dependency Inversion Principle. Принцип инверсии зависимостей в разработке

Мы подошли к последнему принципу проектирования приложений из серии SOLID – Dependency

 Читать далее...

Рынок труда  

Вакансия: Администратор 1С

Администратор 1С – это специалист, который необходим любой организации, где установлены программы

 Читать далее...

Книжная полка  

Книги для профессионалов, студентов и пользователей

Книги издательства «БХВ» вышли книги для тех, кто хочет овладеть самыми востребованными

 Читать далее...

Принципы проектирования  

Interface Segregation Principle. Принцип разделения интерфейсов в проектировании приложений

Эта статья из серии «SOLID» посвящена четвертому принципу проектирования приложений – Interface

 Читать далее...

Книжная полка  

Секрет успешных людей

Книги издательства «БХВ» по ИТ рассчитаны на разные категории читателей: от новичков

 Читать далее...

Учебные центры  

Карьерные мечты нужно воплощать! А мы поможем

Школа Bell Integrator открывает свои двери для всех, кто хочет освоить перспективную

 Читать далее...

Гость номера  

Дмитрий Галов: «Нельзя сказать, что люди становятся доверчивее, скорее эволюционирует ландшафт киберугроз»

Использование мобильных устройств растет. А вместе с ними быстро растет количество мобильных

 Читать далее...

Прошу слова  

Твердая рука в бархатной перчатке: принципы soft skills

Лауреат Нобелевской премии, специалист по рынку труда, профессор Лондонской школы экономики Кристофер

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 11274
Комментарии: 0
Потоковая обработка данных

 Читать далее...

19.03.2018г.
Просмотров: 9530
Комментарии: 0
Релевантный поиск с использованием Elasticsearch и Solr

 Читать далее...

19.03.2018г.
Просмотров: 9578
Комментарии: 0
Конкурентное программирование на SCALA

 Читать далее...

19.03.2018г.
Просмотров: 5986
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 6695
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 3988
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 2907
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 3715
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 3719
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 6209
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 3064
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 3363
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 7180
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 10558
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 12274
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 13908
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 9039
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 7000
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 5310
Комментарии: 3
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 4543
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 3350
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

Друзья сайта  

 Вакансия: разработчик Scala

Архив номеров / 2017 / Выпуск №11 (180) / Вакансия: разработчик Scala

Рубрика: Карьера/Образование /  Рынок труда

Вакансия: разработчик Scala

Важное место среди языков программирования, которые сочетают объектно-ориентированный подход с функциональным программированием, занимает Scala. Он нашел свое применение в крупных компаниях (LinkedIn, Siemens, Twitter идр.). Согласно рейтингу TIOBE, Scala, например, опережает такие языки, как Lua, Lisp, F#, Haskell, Groovy. Мы обратились к экспертам и представителям различных компаний, чтобы выяснить, каких кандидатов они видят на этой позиции

  1. Какими знаниями и навыками должен обладать разработчик Scala?
  2. Каков инструментарий разработчика Scala?
  3. Каковы требования компании к уровню образования потенциальных сотрудников?
  4. Какие требования предъявляются к опыту работы?
  5. Есть ли особые требования, которые обусловлены спецификой деятельности компании?

Сергей ТолмачевСергей Толмачев, разработчик в Waves platform, лектор курса scala.wtf

1. Обычно разработчик Scala – это хороший, любознательный и заинтересованный в своем профессиональном развитии Java-разработчик. Он имеет фундаментальные знания работы с JVM, коллекций и параллельных вычислений. Вчастности, умеет грамотно и к месту использовать мощные функциональные возможности, которые дает Scala, в своей работе, потому что стоит всегда задумываться не только о простоте и понятности кода, но и о других участниках команды, которым придется его поддерживать. «С большой силой приходит и большая ответственность» – это точно про Scala, поэтому стоит не злоупотреблять.

2. Инструментарий почти тот же, что и у Java-разработчика. Обычно Scala-разработчики используют IDE Intellij Idea как систему сборки sbt, в некоторых компаниях используют более консервативный Maven или Gradle. Для профилирования и диагностики выполнения кода используют VisualVM.

3. Нет конкретных и четких требований, это определяет должность и предметная область, с которой сотрудник будет работать: от базовых знаний HTML/CSS/JS для веб-разработки и вплоть до научных степеней, научных публикаций иглубоких знаний криптографии и математики для исследования и разработки экспериментальных наукоемких прототипов и новых проектов. Я считаю, что главное требование для работы в современной компании – это возможность решать поставленные задачи, неважно, кем ты был вчера – дворником или победителем олимпиад по программированию.

Для Scala-разработчика мы обычно даем тестовое задание, чтобы оценить подход человека к решению задач и качество его кода, затем проводим техническое собеседование и уже принимаем решение. Также компания помогала ворганизации Scala-курсов scala.wtf, где сотрудники компании обучали всех желающих основам работы со Scala.

4. Обычно считается, что Scala-разработчик – это достаточно опытный Java-разработчик, который осмысленно выбрал, изучил и применил удобный для себя и своей работы инструмент. Обычно заявляют опыт на Java, превосходящий на 1-3года опыт на Scala. При этом понятно, что из-за меньшей распространенности Scala сложнее получить опыт работы на этом языке, поэтому для подтвержения квалификации могут подойти свои проекты с открытым исходным кодом илисертификаты по Scala-курсам на Coursera.

5. В Waves platform мы разрабатываем на Scala децентрализованную блокчейн-платформу с открытым исходным кодом, что привносит уникальный опыт в решение задач, да и сами задачи решаются совсем не теми способами, что в обычной backend- разработке, где обновление всех сервисов под вашим контролем: сеть состоит из сотен серверов по всему миру, их поддерживает большое сообщество, и людям разного уровня должно быть удобно им пользоваться.

Так что у нас есть пожелания к базовым знаниям криптографии и криптовалют, чтобы разработчик уже примерно представлял, чем ему предстоит заниматься. Многих наших кандидатов очень интересует эта сфера, они узнают о ней донашего знакомства и отдают приоритет нашим вакансиям. Как раз сейчас у нас открыта вакансия разработчика Scala (https://blog.wavesplatform.com/looking-for-scala-guru-ee384233fef0).


Василий ЗайцевВасилий Зайцев, Team Lead Data Processing Team at Propzmedia

1. Образование по специальности. Но так как порог входа для Scala достаточно высокий, то и качество образования должно быть высоким.

2. Нет особых предпочтений, обычно Intellij Idea.

3. Алгоритмы, структуры данных, многопоточность (часто Akka), Java-экосистема (JVM, модель памяти), Scala API.

4. Зависит от позиции, но специальных требований я не наблюдал.

5. Конечно, с ростом отрасли больших данных спрос на Scala-специалистов вырос и продолжает расти из-за Spark, Kafka, которые предоставляют как основной Scala API.


Дмитрий ЖиденковДмитрий Жиденков, Java/Scala-разработчик в компании UniCenter

1. В разработчике Scala ценятся те же качества, что и в разработчике на любом другом языке. Плюс Scala обладает своеобразной атмосферой свободы – она сочетает в себе две мощные парадигмы сразу – ООП и ФП – и в целом обладает крайне выразительным и гибким синтаксисом. Поэтому на программисте лежит больше ответственности за аккуратность и читаемость кода.

2. Самый удобный инструмент на текущий момент – это Intellij Idea с плагином на Scala. Система сборки – SBT, хотя можно без проблем прицепить и Gradle – дело вкуса.

3. Нет строгих требований именно к наличию каких-то дипломов и сертификатов. Необходим определенный запас любопытства и гибкость мышления. Как сам по себе Scala, так и многие сторонние фреймворки часто вносят необычные подходы к решению обычных задач. Например, модель акторов и стримов из Akka. Бывает необходимо перестроить привычную «картину мира», чтобы овладеть новым инструментом.

4. Требования к опыту зависят от конкретной вакансии. Желательно владеть Java и иметь представление о том, как работает его экосистема. Будет очень полезно иметь опыт с функциональными языками. Ну и если вы собеседуетесь навакансию сеньор-ниндзя-гуру-фуллстек-девелопер, от вас будут ждать того, что вы знакомы с инструментами, с которыми собираетесь работать.

5. В основном это классические энтерпрайзные инструменты Java – Spring, Cassandra, Kafka и т.п. Из чисто Scala-фреймворков – это Akka во всех его проявлениях.

Какой-то особой специфики нет, выбираются оптимальные инструменты под конкретные задачи, если только не попасть на поддержку легаси, где стек уже сформирован.


Андрейс ОлиньшАндрейс Олиньш, самозанятый разработчик, экс-Accenture (Латвия)

1. От хорошего разработчика Scala требуется понимание функциональных языков программирования и таких понятий, как Future, CallBack. Без этого понимания код скорее всего будет написан на Java или C# с использованием синтаксиса Scala.

Из навыков отмечу умение свести задачу к map-reduce.

В остальном требования такие же, как и к разработчикам на любом другом языке.

2. Любая среда разработки подойдет: Eclipse, IDEA, Atom, Sublime. Очень помогает sbt: сборщик, который написан авторами Scala (непрерывный прогон тестов sbt ~test выручает постоянно).

3. Обычно хватает записей в CV и пройденного теста. Я начинал с успешно сданного курса Мартина Одерского на Coursera. Теперь поддерживаю форму, щелкая задачки на Hackerrank.

Человек, претендующий на роль ведущего разработчика или архитектора, должен иметь высшее образование и пройти набор дополнительных курсов.

4. Два года опыта в коммерческих проектах на Scala или 4-6 лет опыта программирования вообще.

5. Уже давно каждый язык является экосистемой, в которой рождаются и умирают библиотеки инструментов. Каждый проект использует свой, иногда уникальный набор технологий из этой экосистемы, который определяет конечные требования: Play Framework, Akka, Camel.


Александр ЗайдельАлександр Зайдель, Senior Software Engineer в компании Agoda (Bangkok Metropolitan Area, Thailand)

1. Аналитический склад ума, умение работать в команде, ownership, быть ответственным. Необходимо понимать, что такое функциональное программирование (ФП), плюсы ФП. Знать различия между обычной рекурсией и хвостовой. Опыт работы с фреймворками, такими как Play, Аkka, Аkka-http, Аkka-streams. Знания SQL и NoSQL баз данных, асинхронное программирование. Я бы отметил TDD и чистый код, т.к. в конце концов работаешь не с компьютерами, а с людьми.

2. Среда разработки – Intellij Idea; для сборки проекта: Maven/sbt/Gradle; система контроля версий: Git; помимо этого не лишними окажутся знания Teamcity/Jenkins, Docker, SSH, Linux.

3. Высшее образование в сфере ИТ, как минимум степень бакалавра.

4. Так как найти Scala-разработчиков сложно, компания готова нанимать людей без опыта в Scala, а таковых кандидатов много. И в этом случае мы ожидаем понимания структур данных и алгоритмов, паттернов проектирования.

5. Предыдущий опыт в сфере букинга будет плюсом, но он не обязателен.


Алексей КравецАлексей Кравец, Mobile developer tools manager at NVIDIA

1. Во-первых, как и в случае любого другого инструмента, разработчик Scala должен знать как сам инструмент (т.е. Scala), так и теорию, лежащую в его основе. Как невозможно написать хорошую программу на Си, не зная основ машины, накоторой будет исполняться данная программа, так невозможно написать хорошую Scala-программу, не зная, во-первых, азов функционального и объектно-ориентированного программирования и, во-вторых, устройства исполнителя полученной программы (например, JVM).

Вторым по важности я бы назвал знание и понимание предметной области, умение представить базовые понятия и концепции, с которыми предстоит работать программе, в виде конструкций языка.

2. Я не считаю, что наличие специального инструмента для разработки является крайней необходимостью. В моем случае лучше всего подошел Vim с плагином Eclim.

3. Несмотря на то что ничего не мешает человеку самостоятельно изучить как сам язык, так и базовую теорию, необходимую для работы, вероятность этого достаточно мала. Наличие профильного высшего технического образования наданный момент можно считать необходимым требованием к потенциальному сотруднику, не имеющему аналогичного опыта работы. Дополнительным плюсом может быть прохождение профильных курсов (функциональное программирование, программирование на Java) как в рамках учебы, так и факультативно (например, Сoursera).

С другой стороны, если у человека уже есть опыт работы с нужной технологией (прошлые проекты, github), его уровень образования менее важен.

4. Язык довольно молодой, так что недавний выпускник, у которого было много времени изучить новую технологию во время учебы, может знать Scala не хуже уже устоявшегося специалиста.

5. Знание предметной области. Например, в ARM мы использовали Scala для разработки компилятора, так что в дополнение к работе со Scala от успешного кандидата требовались знания по внутреннему устройству компилятора.


Леонид ЧашниковЛеонид Чашников, Scala Developer, Captify

1. В Scala редко приходят «с улицы», обычно туда «переключаются» с других языков, попробовав делать пет-проекты на скале и почувствовав желание сделать этот язык своим основным. Так что обычно для того, чтобы компания рассматривала кандидата, необходимы знания более «популярных» языков, например Java или Python. Ну и быть готовым быстро учить новый язык.

2. Для удобного редактирования кода в Intellij Idea есть scala-plugin, а также существует Scala IDE, основанная на Eclipse, но особо большой популярностью она не пользуется. Некоторые также используют более легковесные редакторы типа Atom/SublimeText или даже Vim/Emacs.

Ну и плюс вещи, которые напрямую к Scala не относятся, но необходимы сейчас почти любому разработчику, – Docker, клиент базы данных, клиент системы контроля версий и т.п.

3-4 Зачастую компании готовы брать опытных (2-3 года) джава-разработчиков, которые хотят учить Scala. Именно уровень образования не оценивается напрямую (вряд ли какая-нибудь компания будет обязательно требовать от кандидата наличия диплома бакалавра/магистра), но, конечно, некоторое знакомство с функциональными парадигмами является плюсом. Иногда могут взять и бывшего студента, хотя в большинстве случаев Scala не является для человека первым языком.

5. Могут быть, если требуется специалист высокого уровня, сразу знакомый с предметной областью, чтобы на его обучение не пришлось тратить дополнительное время. Но в большинстве случаев компании готовы немного обучить подходящего кандидата (да и редко встречаются настолько сложные продукты, в которых требуется очень глубокое знание предметной области от каждого разработчика).


Юрий БадальянцЮрий Бадальянц, ведущий программист в компании 2ГИС

1. Обычно на Scala разрабатывают либо бэкенды общего назначения, либо делают что-то на тему big data. Соответственно, и требования к этим направлениям различаются.

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

  • протоколы – TCP, HTTP;
  • REST, RPC и другие подобные подходы;
  • понимание принципов построения высоконагруженных и отказоустойчивых систем;
  • SQL и NoSQL базы данных.

Обычно Scala в production работает на Linux/Unix-серверах. Нужно уметь с этим работать.

В случае с big data самые распространенные инструменты – Spark и Hadoop.

Однако big data-стэк очень широк, и в зависимости от компании технологии могут варьироваться. Нужно понимать принципы работы распределенных вычислений. Неплохо иметь какие-то базовые знания, типичные для Data Science-направления, – это статистика, нейронные сети, машинное обучение и т.п.

Что касается самой Scala, тут важно быть знакомым как с объектно-ориентированным программированием, так и с функциональным.

Сообщество в основном тяготеет именно к функциональному программированию: важно иметь хотя бы общее представление о функциональном программировании. Все эти монады, функторы и полугруппы используются в Scala каквполне обыденные концепции.

Также на собеседованиях мы много внимания уделяем пониманию синхронного и асинхронного кода. Сейчас появляется все больше технологий и подходов, которые базируются именно на асинхронном взаимодействии. Язык Scala предоставляет удобные инструменты для работы с асинхронным и многопоточным кодом. Очень важно понимать и уметь этим пользоваться.

2. В качестве основного инструмента для разработки де-факто стандартом в сообществе является Intellij Idea со Scala-плагином (он работает и в community-версии). Помимо IDEA есть плагины для Eclipse и Emacs, но вживую я не видел людей, которые бы ими пользовались.

Как основную операционную систему почти все используют Linux или Mac OS. В качестве системы сборки используют SBT. Что касается других инструментов, то все зависит от специфики работы.

3. По моему личному мнению, уровень образования не так важен. Главное, чтобы человек был заинтересован в собственном развитии и постоянно изучал что-то новое.

4. Scala – это не такой язык, в который можно зайти с улицы. Порог входа в него высокий. Обычно все Scala-разработчики до Scala писали хотя бы на одном-двух языках. Нельзя сказать, что знание нескольких языков является «требованием», но именно так обычно складывается история. В основном в Scala-вакансиях присутствует формулировка типа «желателен опыт разработки на Scala либо желание его получить». Рынок Scala-разработчиков не так широк, ипоэтому большинство компаний готовы принимать людей без опыта production-разработки на этом языке. Главное – заинтересованность, желание изучить язык и двигаться в сторону функционального программирования.

5. В 2ГИС есть скорее не требование, а некоторая специфика, потому что мы пишем ГИС-систему. Периодически нам приходится сталкиваться с математикой, связанной с координатами, расчетом расстояний и т.п. Однако стоит отметить, что задачи и технологии различаются от команды к команде. В 2ГИС существуют команды, которые абсолютно не пересекаются с ГИС-системой. В любом случае, даже если человек не работал раньше с подобным, мы всему научим.


Роман ГребенниковРоман Гребенников, Scala Developer в компании Findify

1. Знания и навыки: в глазах лучших скала-разработчиков, которых я видел в своей жизни, обычно читается хроническая тоска и печаль по текущему состоянию индустрии разработки ПО, где один случайно залетевший дятел может разрушить всю цивилизацию. Эти люди обычно не доверяют ничему, что не было проверено на валидность type checker.

Эта тоска – последствие личного опыта, в котором ломалось даже то, что не должно ломаться, и, чтобы подобное не повторялось, код надо писать так, как будто ты не доверяешь даже самому себе и собственной бабушке.

2. Инструментарий примерно тот же, что и в Java-мире, с небольшими исключениями. Я могу тут написать пару дюжин непонятных слов из трех букв, которые никому не интересны, но в скала-мире в плане инструментария всегда естьсвобода выбора: перебежчики из джавы любят использовать Maven для сборки, кто-то, зловеще хохоча, пишет код Vim. Но большинство вроде меня таки предпочитает попсовую Intellij Idea и sbt.

3. Уровень образования: по личным наблюдениям, в Scala чаще всего приходят из других языков, в большинстве случаев из Java, уже в сознательном возрасте и не от хорошей жизни, поэтому у многих работодателей возникло когнитивное искажение, что Scala-разработчики в массе своей настолько умные, что могут силой мысли исправлять баги в стиральной машине и гнуть арматуру. Другими словами, уровень образования обычно требуется чуть более высокий, чем в случае с Java-миром.

4. Опыт работы: в скала-мире, на мой взгляд, абсолютное значение опыта работы в годах редко кого волнует. Кто-то 10 лет протирал штаны в банке, а кто-то на пятом курсе университета уже слал пулл-реквесты в сам компилятор скалы. Ктому же из-за специфики миграции поголовья на скалу, которая редко бывает первым языком, непонятно, как этот опыт мерять.

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

5. Специфика: в скала-мире есть очень богатая экосистема библиотек, которые напрямую или косвенно используются почти в 90% всех проектов, и хорошо бы в этом зоопарке хорошо ориентироваться: Аkka, Scalatest и т.п.

Бонусные баллы можно получить, если уметь писать настолько строго типизированный код, что если он-таки наконец скомпилился, то с большой долей вероятности заработает без ошибок. Но для этого надо уметь уверенно и с умным лицом произносить фразы «моя макродеривация тайп-классов лучше твоей чепухи на генериках из shapeless» и «за использование мутабельных коллекций у нас бьют стримами по мьютексу».


Александр ХлыбовАлександр Хлыбов, Junior Scala Developer в компании INB Group

1. Не думаю, что Scala-разработчиков следует как-то выделять среди программистов всех направлений. Требования вполне стандартные: алгоритмическое мышление, техническая база в виде хорошего математического образования (желательно университетского, но отнюдь не обязательно), так как, если вы собираетесь углубиться в функциональное программирование, волей-неволей придется разбираться с теорией категорий и прочими «радостями» математических дисциплин. Единственное качество, которое хотелось бы все-таки выделить, – это непугливость к новым, более сложным вещам. Сказано это не для красного словца или чтобы превознести скалу над массами, а потому что при неимении релевантного опыта с функциональным программированием и сложными системами типов первое время скала может отпугивать.

2. Инструментарий идентичен набору Java-разработчиков: одна из двух IDE на выбор (Idea, Eclipse), опционально GUI для СУБД, которую вы используете. Если вы приверженец Emacs/Vim, можете настроить их для скалы, соответствующие плагины присутствуют и поддерживаются.

3. Как упоминалось в первом пункте, ничего сверхнеобычного, единственное, что на некоторых наукоемких проектах видел требования аспирантуры или даже PhD, но это не особенность именно скалы.

4. Так как специфика Scala обусловливает его использование в нетривиальных, высоконагруженных системах, джуниорам довольно сложно найти работу. Не столько из-за сложности самой скалы, сколько по причине требования наличия опыта в работе на проектах со сложной архитектурой, командной работы и так далее. Поэтому компании, осознавая это, набирают джавистов с желанием перейти на скалу. Так что новичкам остается либо начинать карьерный путь срелевантных технологий, либо надеяться найти стажировку при какой-то фирме.

5. Не повально, но намечается тенденция вопросов к кандидатам о знании и опыте работы с функциональными библиотеками (shapless, cats, scalaz). Конечно, это пока не решающий критерий, но, думаю, по мере проникновения Scala в IT-рынок будет больше энтузиастов, использующих эти библиотеки в продакшн-коде. И желающим писать на Scala, как на улучшенном Java, придется либо сменить язык, либо окунуться в мир монад и аппликативов.


Станислав КоваленкоСтанислав Коваленко, разработчик, сервис «МойСклад»

1. Основными, на мой взгляд, являются знания экосистемы JVM и основных дисциплин Computer Science. В остальном это, конечно, уверенные знания языка Scala и его библиотеки. Желательно понимать функциональную парадигму и какее использовать в языке Scala.

2. В первую очередь это редактор или IDE. Обычно выбор падает на самые популярные IDE для Java – Intellij Idea, Eclipse или NetBeans. Эти решения содержат в себе очень много полезных инструментов для анализа и рефактора кода, имеют встроенную поддержку многих фреймворков.

Помимо редактора, разработчику нужно работать с инструментами для сборки проектов. Стандарт де-факто для Scala-проектов – это SBT. Это очень мощный и гибкий инструмент, но при этом достаточно сложный в изучении. В нашей компании мы пользуемся им и Maven.

Также, когда работаешь в команде, становятся необходимыми инструменты для контроля версий (Git, Subversion, Mercurial...) и программы для организации работы над задачами (Jira, Redmine, Trello...). В нашей компании мы используем Git для контроля версий и Jira для организации работы над задачами.

3. В общем случае это должен быть человек с высшим техническим образованием или студент последних курсов.

4. Требования зависят от уровня разработчика (junior, middle, senior), однако что точно требуется от разработчика Scala – это опыт работы с экосистемой JVM и языком Java. Отсутствие опыта работы с самим языком Scala не является проблемой, если человек имел опыт работы с Java. Но в этом случае желательно, чтобы человек прошел первые три курса на Coursera по специализации Scala.

5. Из общих технических требований – наличие опыта работы с Linux, все наши разработчики используют OS этого семейства. А из не технических – это готовность и желание работать в рамках методологии разработки Scrum.

В остальном все зависит от команды. Если вы хотели бы заниматься созданием UI на Scala, то у нас есть проекты, использующие ScalaJS и ReactJS. Для них было бы полезно иметь некоторый опыт работы с JavaScript, немного разбираться вфункциональном (линзы, тайп-классы) и реактивном программировании. Если backend, то это понимание акторной модели, опыт работы с Websocket и библиотеками Аkka, Аkka-http.


Антонио Рамирез Круз (Antonio Ramirez Cruz)Антонио Рамирез Круз (Antonio Ramirez Cruz), Real Time Developer в Playtika

1. Компьютерные науки, базовые знания парадигмы функционального программирования (high order fn, inmutability, recursion, currying).

2. Cам Sсala, SBT (Simple build tool) для ручной работы со сторонними библиотеками, компиляции, выполнения тестов, сборки и т.д.

Ряд фреймворков:

  • доступ к БД (slick, Squeryl, finagle);
  • Web (Play Framework, finagle, Аkka-http).

Есть много полезных библиотек для решения различных задач, от использования командной строки (Scopt) до более специфических инструментов для работы с big data, таких как Spark.

3. Требования компании к уровню образования потенциальных сотрудников:

  • для Junior – как минимум образование в области Computer Science или смежных областях;
  • для SemiSenior/Senior – степень бакалавра в области Computer Science или смежным областям.

4. Для Junior – 2 года работы с экосистемой Java, с опытом работы с Scala или желанием изучить Scala.

Для SemiSenior – 4 года работы с экосистемой Java, с опытом работы с Scala или желанием изучить Scala.

Для Senior – 6 лет, владение как минимум тремя различными языками программирования, включая Scala.

5. Нет специфики, по сути, требования доступны для всех разработчиков Java, которые готовы обучаться и работать со Scala.


Андрей ПархоменкоАндрей Пархоменко, Lead Developer в slotbook.me

1. Исходя из того, что язык Scala является мультипарадигмальным, главным образом функциональным и объектно-ориентированным, программист должен владеть основными навыками, которые присущи этим парадигмам. Поддержка функциональной составляющей основана на объектном базисе, что позволяет писать выражения более грамотно и лаконично. Я бы отметил, что хорошая математическая подготовка есть большой плюс при постижении всех деталей языка Scala.

2. Лично я предпочитаю Intellij Idea с плагином для Scala-разработки. Этот инструмент предоставляет абсолютно все необходимое для решения задач, которые стоят перед нами в процессе разработки slotbook.

3. Если говорить в целом об образовании как о наличии у работника определенной совокупности знаний, которые помогают решать задачи компании, тогда не думаю, что кому-то потребуется номинальная бумага – диплом из университета. Отсутствие диплома об образовании никаким образом не влияет на представление о знаниях будущего сотрудника.

4. По моим наблюдениям, в мир Scala приходят из мира Java. Для одних этот переход – следующая ступень профессионального развития, для других – хобби. Я не видел ни одного человека, для которого Scala был бы первым языком программирования в карьере. Скорее наоборот, программисты устали от недостатков тех языков, с которыми уже долго работали. Захотелось что-то посложнее и увлекательнее. Существует мнение, что для того, чтобы освоить Java, нужно попробовать освоить Scala. А для тех, кто хочет освоить Scala, нужно поработать с haskell.

5. В нашей компании такие навыки, как ответственность и взаимопомощь, ценятся даже больше, чем технические скилы. Конечно, базовый набор знаний языка Scala/Java и его инфраструктуры требуется, но это не главное для работы с нами.

Подготовил Игорь Штомпель


Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-41
Fax: (499) 277-12-45
E-mail: sa@samag.ru