Что я должен изучить чтобы получить работу Clojure-разработчика?

4 minute read Published:

Оригинальная статья What do I have to learn to be hirable in Clojure? появилась 10 августа в сообществе dev.to за авторством Eric Normand, который может быть вам известен по курсам функционального программирования purelyfunctional.tv.

Один из его читателей спрашивает:

На данный момент я работаю разработчиком на Ruby, но хотел бы работать с Clojure, хотя я у меня еще начальный уровень языка. К сожалению, я не думаю что компания, в которой я работаю, будет использовать Clojure в ближайшем будущем. Также у меня не так много свободного времени для изучения Clojure. Что я должен изучить чтобы быть нанятым как Clojure-разработчик?

Данный вопрос немного с подвохом. Причина этому – технически вам необходимо 0 знания Clojure для получения работы с этим языком. Я знаю это, потому что недавно встретил кое-кого, кто был нанят сразу же после курсов Ruby on Rails для работы с кодом на Clojure. У него не было вообще никакого опыта с Clojure.

Я много общаюсь с людьми, которые работают с Clojure и нанимают разработчиков. Они руководствуются следующими двумя широкими категориями требований при найме.

1. Разработчики с хорошим опытом в Clojure

Вы найдете подобные вакансии вакансии по нескольким причинам. Иногда компании стараются заменить разработчиков, которые уходят. А иногда они только начинают разработку на Clojure и планируют быстро взяться за дело. Я так же видел как технический директор (CTO), которому нравится Clojure, желает найти более опытных разработчиков на этом языке чем существующая команда, т.к. это совершенно новый мир.

Для подобной работы компании действительно ищут людей с уверенными навыками в Clojure. Но есть один секрет, который я расскажу в конце данной статьи.

2. Разработчики без опыта в Clojure

Данная категория наиболее интересна, т.к. достаточно много компаний ищут просто «хороших людей». Они прекрасно понимают, что найти опытного программиста на Clojure будет достаточно сложно.

Для решения данной проблемы компании инвестируют время и деньги делая вас Clojure-разработчиком. Вам будут платить за изучение языка, и вы будете часто работать с менторами.

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

1. Опыт разработки на Clojure

Завершенные проекты на Github. Если вы такой же как я, то ваши проекты врядли когда-нибудь завершаются. Но “завершенный” проект достигает определенной цели. Это полезно, и это работает.

Они не обязательно должны занимать много времени или быть сложными. Просто демонстрация того, что вы можете разрабатывать на Clojure.

Бонусные очки за:

  • Использование базы данных
  • Обращение к стороннему API или сервису
  • Использование нескольких потоков (threads)
  • Развертывание приложения на Heroku или другом сервисе
  • Написание full-stack приложения на Clojure + ClojureScript

2. Опыт с другим Lisp-подобным языком

По крайней мере это показывает, что вы будете подготовлены к Clojure. Даже курс университета или любые завершенные упражнения SICP вам помогут.

Бонусные очки за:

  • Понимание макросов
  • Решение интересных задач (с кодом на Github!)

3. Опыт функционального программирования

Haskell, Erlang, Scala, F# – черт, даже функциональный JavaScript или Java 8 потоки (streams) будут впечатляющими.

Бонусные очки за:

  • Понимание трех важных функций map, filter, и reduce
  • Использование иммутабельных (immutable) структур данных при моделировании решения задачи

4. Опыт с JVM

Clojure работает поверх JVM (Java Virtual Machine). По этой причине хорошо бы понимать как работают объекты, как развертывать и конфигурировать JVM приложения, и многие другие вещи которые могут быть полезными когда вы разрабатываете на Clojure. Это поможет вам немного выделиться.

Бонусные очки за:

  • Опыт развертывания (deploy) JVM приложений
  • Использование JVM языков помимо Java
  • Опыт с потоками (streams) в Java 8
  • Конфигурирование или тюнинг JVM

5. Опыт с JavaScript

Если вы собираетесь использовать ClojureScript в работе, то знание устройства браузера, DOM API, и сборки фронтенд-проекта будут полезны.

Бонусные очки за:

  • Использование компилируемых в JavaScript языков, например, CoffeeScript
  • Опыт разработки React приложений (особенно в паре с Redux)
  • Использование Immutable.js или Mori

6. Несколько языков программирования

Без опыта работы с Clojure вам нужно показать способность изучения нового языка на будущей работе. Лучшие кандидаты будут иметь по крайней мере 4 языка с разными парадигмами в своем запасе/резюме.

Бонусные очки за:

  • Две или более парадигмы программирования (объекто-ориентированное, функциональное, процедурное, логическое)
  • Две или более синтаксические семьи языков (C vs Python vs Ruby vs Haskell)

В конце концов, основная причина почему люди не получают работу – они не отправляют резюме в достаточное количество компаний. Уделите время вашему резюме: перечислите достижения на работе, в университете, стороннем проекте и выделите вещи из приведенного выше списка. Затем, укажите на них в сопроводительном письме к вашему резюме (cover letter) и на интервью.

Маленький секрет, о котором я упоминал в начале статьи, заключается в том, что даже компании, нанимающие опытных Clojure-разработчиков, часто готовы рассматривать сообразительных людей, которые хотят изучать новое. Требования в описании вакансии – всего лишь желаемый набор навыков. Поэтому смело подавайтесь!

Примечание переводчика: Данная статья - первая попытка перевода с английского. Я по прежнему думаю как лучше обозвать стримы в Java, дабы не переводить их как "потоки". Если у вас, уважаемые читатели, есть своя версия, пожалуйста укажите ее в комментариях.
comments powered by Disqus