Рубрика:
Карьера/Образование /
Рынок труда
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
Вакансия: разработчик Clojure
Важное место среди популярных парадигм ИТ-индустрии занимает функциональное программирование. Оно используется при реализации экспертных систем, искусственного интеллекта, веб-разработки, игр и многого другого. Яркое воплощение его концепция получила в виде реализации языка программирования Clojure. Clojure работает на Java Virtual Machine (JVM), кроссплатформен, а область его применения довольно широка и порой ограничивается лишь фантазией разработчика. Мы обратились к экспертам и представителям различных компаний, чтобы выяснить, каких кандидатов они видят на позиции разработчика Clojure
- Какими знаниями и навыками должен обладать разработчик Clojure?
- Каков инструментарий разработчика Clojure?
- Каковы требования компании к уровню образования потенциальных сотрудников?
- Какие требования предьявляются к опыту работы?
- Есть ли особые требования, которые обусловлены спецификой деятельности компании?
Сергей Собко, руководитель группы разработки пользовательского интерфейса, Positive Technologies
1. Перед ответом на этот вопрос нужно сделать ремарку, что рекомендации относятся только к Clojure, но не к ClojureScript, ибо фронтенд – это большой мир со своими библиотеками, паттернами и особенностями.
Итак, помимо стандартных компетенций разработчика в алгоритмах и структурах данных, должно присутствовать общее понимание концепций функционального программирования (чистые функции, функции высшего порядка, замыкания). Плюсом было бы знание стандартной библиотеки Clojure для оперирования данными, но это необязательное условие – это знание можно обрести, прочитав книгу «Clojure for the Brave and True» и получив небольшой практический опыт, а дальше можно просто пользоваться шпаргалками по функциям и официальной документацией. Для участия в проектах, которые активно используют прямые интеграции с Java, а не только другие Clojure-библиотеки, разработчику также пригодилось бы умение читать код на Java и понимать его (а впоследствии и модифицировать).
2. Что касается инструментария, то здесь каждый разработчик выбирает что-то под себя: в базовом варианте всем начинающим рекомендуют ознакомиться с Emacs и CIDER, но на самом деле подойдет любой редактор, позволяющий использовать REPL-driven development – основное преимущество быстрой разработки на Clojure (есть даже полноценное IDE, построенное на базе IntelliJ, – Cursive). Что касается всего остального процесса разработки, то благодаря основному средству управления зависимостями и пакетирования Leiningen и его плагинам можно делать буквально все необходимые в разработке действия (от статического анализа кода, управления версиями и удаленной отладки через nREPL до сборки и деплоя Docker-образов).
3. Формальное наличие образования у потенциальных сотрудников на самом деле не так важно, как квалификация, опыт работы и умение работать в команде. Неплохо если есть высшее образование, но его отсутствие не является чем-токритичным. В конечном итоге все зависит от человека и от того, насколько он сам готов влиться в команду, где ему предстоит работать.
4. Что касается опыта работы, то так как рынок Clojure-разработчиков небольшой, то самое простое решение и одновременно пожелание к кандидатам – наличие опыта разработки на Python, Java или любом LISP-подобном языке программирования от нескольких лет. При этом миграция с другой платформы может проходить очень быстро: начать писать код можно так же, как в Python, используя REPL прямо с первых глав вышеуказанной книги, а для полноценного погружения в платформу при наличии оного достаточно нескольких недель.
5. Специфика компании Positive Technologies – информационная безопасность – определяет некоторые требования, в частности, мы руководствуемся принципами безопасной разработки. Однако некоторые наши разработки не слишком завязаны на специфичные требования: например, Open Source-библиотека flower, созданная с использованием Clojure для построения систем автоматизации управления задачами, контроля версий и обмена сообщениями (которую мыназываем «Автоматический тимлид»). Тем не менее для некоторых других вакансий, напрямую связанных с информационной безопасностью, такие требования могут быть критичными.
Андрей Тропин, ведущий инженер-программист в компании Health Samurai
1. Сильно зависит от области в которой работают и позиции, которую занимают, поэтому дам только общие рекомендации:
- знанием протокола HTTP (практически любая система на Сlojure так или иначе взаимодействует по http);
- основами функционального программирования;
- основами проектирования баз данных;
- базовым представлением об алгоритмах и структурах данных;
- пониманием систем контроля версий, предпочтительно git;
- основами логического программирования.
Фундаментальные знания из области computer science будут плюсом, как и другие знания и навыки, полезные разработчикам (в том числе soft skills).
2. Опять же специфично для компании/проекта/человека и отчасти дело вкуса, я бы рекомендовал обратить внимание на инструменты, которые используем мы для решения наших задач:
- для сборки и зависимостей: Clojure deps, Leiningen;
- для разработки: Emacs, Spacemacs, Cider;
- для фронтенда: Reagent, Re-frame, Zenform;
- для тестирования: Matcho, Test-runner;
- для хранения и преобразования данных: Postgres, Honeysql, Ironhide;
- для инфраструктуры: Kubernetes, Ci3.
P.S. Для людей, только осваивающих Сlojure и не имеющих опыта с Emacs, я бы рекомендовал что-то более знакомое и понятное, например Cursive или Vscode/Atom.
3. Если вопрос касательно инженеров, то университетское образование опционально, есть люди и со средним специальным и с докторской степенью.
4. Снова зависит от позиции – набираем и ребят, недавно пришедших в разработку, и старичков в нашей области. Из интересных моментов: знание Сlojure не критично, т.к. язык простой, тут намного важнее умение быстро втянуться. Большим плюсом является знание Jvm и/или React js/native, Postgres и опыт в проектах на практически любом стеке веб-технологий. Так как программировать на Сlojure просто, то инженеру хорошо бы иметь базовые знания винфраструктуре и опыт с nginx/docker/kubernetes, чтобы было чем заняться, когда кончатся таски (шутка – таски никогда не кончаются).
5. Специфических требований нет, есть специфическое пожелание: знание стандартов обмена медицинской информацией fhir, hl7v2.
Алексей Голда, Clojure-разработчик в Equipage (разработчик сервиса персональных водителей с автомобилями бизнес- и премиум-класса)
1. Навыками программирования ООП и пониманием проблем, связанных с ООП (объектно-ориентированным программированием), «состоянием» и проблем, связанных с ним. А дальше, как следствие, преимуществами и буквально базовыми понятиями ФП (далее и по тексту – функционального программирования) на примере любого из языков (Haskell, Erlang, Clojure). Функции, функции высшего порядка, иммутабельность (неизменяемость), персистентность, композиция и так далее.
2. Clojure, Java, REPL, IDE или текстовый редактор, который умеет работать с REPL, – это может быть Cursive, Emacs, Vim, Visual Studio Code, Atom. Наиболее популярны Cursive и Emacs.
3. Такие же, как и к программистам в принципе и вообще. Кардинальных отличий нет, главное – голова на плечах, очень желателен опыт программирования на функциональных языках (если говорить о Clojure) или понимание парадигмы ФП. Честно говоря, за карьеру программистом ни разу не слышал вопроса на собеседовании об уровне образования вообще. Но если говорить от себя, могу с уверенностью сказать, что физико-математическая база помогает сильно инесколько ускоряет процесс.
4. Опыт – это, пожалуй, самое ценное, поэтому чем его больше, тем, разумеется, лучше. Если этот опыт еще и на функциональных языках или хотя бы с применением парадигмы, то это уже большой плюс. Но это не сильно принципиально ииндивидуально. Условно: если у вас есть опыт работы на Haskell, Erlang, Scala, то вам будет достаточно комфортно, это очень хороший опыт. Если это более распространенные языки вроде PHP, JavaScript, C#, Java, то преимуществом будет опыт с Java, поскольку Clojure работает на JVM-платформе, но придется «повернуть мозги» в плане смены парадигмы, образа мышления. Тут индивидуально. Ценится опыт от года и больше на функциональных языках, и примерно три – пять лет.
5. Как правило, нет, специфика работы компании влияет только на общие требования, как то удаленные сотрудники и невозможность работы с ними, или вообще на технологический стек целиком, например компании, специализирующиеся на программном обеспечении для виртуальной реальности, вряд ли станут вообще работать на Clojure, так как там сложился свой стек технологий. Поэтому в целом ответ «нет», специфических требований обусловленных деятельностью компании нет.
Артур Алиев, бэкенд-разработчик компании SoftServe
1. Стандартный набор теоретических и практических знаний, который требуется от бэкенд-разработчика, плюс желатeльно понимание JVM и опыт с базовыми библиотеками Java.
2. На мой взгляд, на сегодняшний день наиболее актуальными средами разработки являются Emacs/CIDER, IntelliJ IDEA/Cursive, Visual Studio Code/СlojureVSCode.
3. Ситуация, как и с любой вакансией в сфере разработки ПО: есть техническое образование – хорошо, нет – не критично, если есть опыт.
4. Большая часть вакансий не предполагает предыдущего опыта работы с Clojure. Если такового нет – достаточно понимания функциональной парадигмы и опыта в два-три года с любым другим языком. Как и везде, засчитываются рабочие Оpen Source-проекты.
5. Специфических» требований не встречал.
Константин Маширов, разработчик Fullstack Clojure в XLucidity Ltd
1. Clojure достаточно молод, и обычно в него приходят осмысленно с других языков программирования.
Разработчик Clojure должен уметь писать короткий понятный и тестируемый код. Точнее, Clojure дает эту возможность.
2. IntelliJ Idea + Cursive; Visual Studio Code; Emacs; Vim.
3. Обычно опыт важнее образования, и главное, чтобы был интерес в саморазвитии.
4. Зависит от уровня позиции, но так как найти Clojure-разработчиков сложно, компании готовы нанимать людей без опыта в Clojure, но с опытом (два-три года) в Java/JavaScript.
5. Опыт работы определяет круг задач, который сотрудник способен решать.
Подготовил Игорь Штомпель
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|