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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Рынок труда  

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Друзья сайта  

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

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

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

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

Важное место среди популярных парадигм ИТ-индустрии занимает функциональное программирование. Оно используется при реализации экспертных систем, искусственного интеллекта, веб-разработки, игр и многого другого. Яркое воплощение его концепция получила в виде реализации языка программирования Clojure. Clojure работает на Java Virtual Machine (JVM), кроссплатформен, а область его применения довольно широка и порой ограничивается лишь фантазией разработчика. Мы обратились к экспертам и представителям различных компаний, чтобы выяснить, каких кандидатов они видят на позиции разработчика Clojure

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

Сергей СобкоСергей Собко, руководитель группы разработки пользовательского интерфейса, 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. Опыт работы определяет круг задач, который сотрудник способен решать.


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


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

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

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

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

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