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

ЭКСПЕРТНАЯ СЕССИЯ 2019


  Опросы

Какие курсы вы бы выбрали для себя?  

Очные
Онлайновые
Платные
Бесплатные
Я и так все знаю

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

1001 и 1 книга  
28.05.2019г.
Просмотров: 537
Комментарии: 1
Анализ вредоносных программ

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

28.05.2019г.
Просмотров: 665
Комментарии: 1
Микросервисы и контейнеры Docker

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

28.05.2019г.
Просмотров: 530
Комментарии: 0
Django 2 в примерах

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

28.05.2019г.
Просмотров: 423
Комментарии: 0
Введение в анализ алгоритмов

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

27.03.2019г.
Просмотров: 1012
Комментарии: 0
Arduino Uno и Raspberry Pi 3: от схемотехники к интернету вещей

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

Друзья сайта  

Форум системных администраторов  

sysadmins.ru

 Вакансия: программист Java EE

Архив номеров / 2019 / Выпуск №06 (199) / Вакансия: программист Java EE

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

Java EE или Java Enterprise Edition представляет платформу для создания корпоративных приложений на языке Java. Прежде всего это сфера веб-приложений и веб-сервисов. Мы обратились к представителям компаний, чтобы выяснить, каких кандидатов они видят на позиции программиста Java EE

1. Программист Java EE: какими знаниями и навыками должен обладать?

2. Инструментарий программиста Java EE?

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

4. Какие требования предъявляются к опыту работы?

5. Есть ли специфические требования, которые обусловлены спецификой деятельности компании?

 

 

 

 

 

 

 

 

 

 

Николай Смирнов, руководитель Департамента разработки технологической платформы компании НПО «Криста» (г. Москва)

1. Дело в том, что Java EE – это набор специ-фикаций, каждая из которых описывает стандарт для функционирования некоторой подсистемы. Например, подсистемы хранения объектных данных JPA или подсистемы обработки http-запросов посредством Servlet. Таких спецификаций очень много. Часто существует несколько вариантов реализации спецификации, они отличаются в частях, не описанных стандартом. Поэтому речь никогда не идет о знании именно спецификаций и уж тем более всех спецификаций, входящих в Java EE. Как правило, разработчик знаком с некоторыми библиотеками, которые поддерживают те или иные стандарты.

Надо понимать, что Java EE используют в средних и крупных проектах, а это означает, что требования к разработчику достаточно серьезные, и не только как к профессионалу, но и как к командному игроку. Конечно, он должен знать все базовые структуры данных, алгоритмы их обработки, должен быть знаком с SQL, принципами проектирования баз данных, работой в многопоточном режиме, принципами асинхронной обработки сообщений и т.д.

Как правило, разработчик, приходящий в проект с Java EE, уже имеет серьезный опыт работы и профильное образование. В противном случае он будет обузой для команды, да и самому ему будет тяжело.

2.  Инструментарий разный, во многом зависит от требований проекта. Но, конечно, нужна среда разработки, эпоха блокнотов прошла. Как правило, это IntelliJ IDEA. Eclipse тоже применяем, когда требуется работать с BIRT (системой создания печатных форм) и jBPM (системой бизнес процессов).

Конечно, нужно уметь использовать JUnit – систему модульного тестирования. Контейнеризации в Docker может помочь решить многие проблемы при развертывании для тестирования и отладки. Конечно, важна автоматизация процесса разработки и проверки качества кода, у нас это Jenkins, Sonar.

Само собой, система учета задач, в нашем случае Redmine, сильно обвешана плагинами, в том числе собственного производства.

Кому-то требуется инструмент прототипирования интерфейсов, кому-то – построитель UML диаграмм.

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

3. У нас были попытки набирать разных кандидатов с разным уровнем. Да и до сих пор мы к каждому кандидату подходим индивидуально. Но если судить в целом, то профильное высшее образование – это серьезное подспорье. Оно, как правило, является необходимым условием. У нас есть примеры высококвалифицированных разработчиков, которые работают более 10 лет, но так и не получили высшего образования, но это, конечно, исключение. Все-таки разработка ПО является высокотехнологической областью, в которой требуются фундаментальные знания. Четыре года обучения в вузе как раз обеспечивают этот фундаментальный кругозор.

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

5.  У нас большая компания – мы осуществляем крупные проекты, в которых часто участвуют до сотни сотрудников различных специализаций: аналитики, тестировщики, внедренцы, администраторы и т.д. Поэтому важно, чтобы будущий сотрудник имел опыт работы в коллективе. Фрилансеры приживаются трудно.

Жизненный цикл наших проектов десятки лет. И все это время мы их поддерживаем и развиваем. Поэтому важно умение, желание работать с кодом, написанным другими разработчиками. Важно понимание того, что надо постоянно эволюционировать продукт, а не просто все выкинуть и написать заново. Хотя такое тоже было, когда переходили на другую платформу разработки.

 

 

 

 

 

 

 

 

Владимир Плизга, главный инженер-программист, Дирекция предоплаченных карт, ЦФТ

1.  В первую очередь обозначу, что под Java EE я понимаю не свод специ-фикаций (также известный как Jakarta EE и переживающий не лучшие времена, https://habr.com/ru/company/haulmont/blog/450914/), а серверную (backend) промышленную разработку в широком смысле. Отсюда и требования: программист этой сферы должен знать не только сам язык Java (либо иной JVM язык), но и хотя бы поверхностно понимать устройство используемых им компонентов платформы (JDK) и библиотек (фреймворков). Например, важно знать отличия в реализациях коллекций, пулов потоков, блокировок, проксирующих фабрик. Эта важность объясняется тем, что в такой сфере даже мелочное отличие одной реализации от другой, будучи возведенным в масштаб высокой нагрузки на сервер, может обернуться катастрофой. Так бывает и с неоптимальным поиском по коллекции, и с отсутствием кэша в пуле потоков, и с излишне рьяной блокировкой... Кроме того, нельзя не отметить, что backend-разработчик зачастую является связующим звеном между всеми остальными специалистами команды: аналитиками, разработчиками БД, разработчиками клиентских приложений (веб, мобильных), тестировщиками, Ops-инженерами. Как следствие, он должен обладать навыками ориентирования и в их предметных областях: корректировать постановки задач, строить и оптимизировать запросы к БД, проектировать адекватные API, помогать с покрытием тестами, продумывать и поддерживать метрики производительности своего приложения.

2. Сюда, в первую очередь, конечно, входит мощная IDE, например, IntelliJ IDEA, причем именно Ultimate Edition, так как только в этой редакции есть достаточная поддержка важных инструментов, например фреймворка Spring Boot. С ее же помощью можно решать и другие повседневные задачи (на моем примере):

  • работать с репозиторием исходного кода (Git);
  • писать и отлаживать скрипты сборки;
  • работать в консоли ОС;
  • подключаться к удаленным серверам;
  • вести документацию проекта;
  • строить компоненты CI/CD (например, создавать Helm-чарты);
  • оперировать объектами БД.

Помимо этого, в арсенале серверного разработчика должен быть профилировщик (например, бесплатный Java Mission Control или платный YourKit), анализатор heap-дампов (например, VisualVM или Eclipse Memory Analyzing Tool), средство для работы с API (например, Soap UI или Postman), иногда нужен хакерский инструментарий (например, Fiddler или BurpSuite).

Конечно же, нужны и мощные базовые инструменты: файловый менеджер (Double Commander или хотя бы FAR), легкий текстовый редактор (Notepad++ или Sublime), средство структурирования знаний (например, интеллект-карты XMind или MindMap, но можно и просто писать в блокнотик).

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

4.  Опять же не скажу за всю компанию, но в моем подразделении это зависит от целевой позиции: она бывает как для новичков, так и для опытных. В случае новичков я ожидаю уверенного знания самого языка (грубо говоря, теории), весомого учебно-практического опыта (крайне желательно не только в объеме лабораторных работ) и, что очень важно, явного активного стремления расти как профи. Если кандидат не соответствует этим требованиям, мы можем предложить пройти 100-часовой курс по Java на базе компании, с результатами успешного завершения которого он может прийти на собеседование снова. Ну а в случае опытных разработчиков мы отталкиваемся и от самого опыта, и от предполагаемого фронта работ, то есть см. вопрос №1.

5. Да, финтех имеет свои особенности. В одну из первых очередей это безопасность. Я работаю над интернет-банком – приложением с 20+ интеграциями, каждая из которых имеет свой способ защиты, адекватный используемому протоколу обмена. Поэтому для разработчиков важно хорошо разбираться в прикладной криптографии (шифрование, ЭЦП, хеширование), уметь строить и отлаживать защищенные каналы взаимодействия (HTTPS/TLS), владеть криптографическими инструментами платформы Java (JCA, JCE, JSSE). Где-то на том же уровне важности стоят производительность и отказоустойчивость. Казалось бы, финтех в этом не уникален, но есть особенность – да, к нам приходят далеко не миллионы людей в сутки, а всего десятки тысяч, но они приходят не смотреть котиков, а управлять своими деньгами. Поэтому производительность и отказоустойчивость все равно выходят на первый план, заставляя разработчиков продумывать масштабирование сервисов, их мониторинг и асинхронное взаимодействие. Кроме того, свою специфику вносит и финансовая составляющая: многие действия приходится выполнять в несколько шагов, например резервировать и лишь потом списывать средства. В случае отказа на одном из шагов нужно уметь обеспечивать гарантированный откат предыдущих действий. Это тоже отражается на архитектуре системы в целом и на требованиях, предъявляемых к кандидатам.

 

 

 

 

 

 

 

 

Максим Кирюшин, ведущий эксперт отделения разработки информационных систем, компания «ФОРС – Центр разработки» (ГК ФОРС)

1.  В первую очередь, нужно думать на языке Java. Знание спецификации Java EE обязательно и, на мой взгляд, в этом очень помогает подготовка к сертификации. Многие относятся к тестам с пренебрежением, но надо смотреть на сертификацию как на возможность расширить свой кругозор – многое из того, что приходится изучать во время подготовки, не встречается в работе только потому, что о существовании «короткой» дороги не знают и поэтому идут в обход. Но для стоящего разработчика только знаний Java EE недостаточно. За время своего существования Java «обросла» огромной экосистемой от простых библиотек Apache Foundation до целых фреймворков типа Spring.

Кроме того, каждый разработчик должен обладать знанием в области:

  • наиболее распространенных паттернов проектирования;
  • принципов работы виртуальной машины и способов ее оптимизации;
  • принципов работы операционных, файловых систем, сетевых протоколов;
  • основ информационной безопасности;
  • построения UML- и ER-диаграмм.

Абсолютно необходим опыт работы с базами данных SQL/
NoSQL и сопутствующими инструментами – IDE/Eclipse/NetBeans, Maven/Gradle, GIT/Mercurial. Отметим, что без знания английского языка разработчик будет всегда в роли догоняющего, а значит – уступать своим коллегам, потому что все новое, полезное и интересное можно найти, как правило, на англоязычных ресурсах.

2.  Инструментарий зависит от стандартов, принятых в компании, но, чтобы влиться в любую команду, достаточно уметь пользоваться:

  • средой разработки IDE/Eclipse/NetBeans;
  • универсальными инструментами – такими как DataGrip (хотя у каждой базы данных есть и своя админская консоль);
  • системами контроля версий GIT/Mercurial (где-то используют централизованные системы контроля версий типа SVN).

Нужно обладать хотя бы минимальным опытом работы с Linux через консоль, а также использования инструментов непрерывной интеграции, сборки проектов Maven/Gradle.

3. Обязательно наличие высшего профильного образования. Мы также рассматриваем в качестве потенциальных кандидатов студентов последних курсов для стажировки. Желательно окончание дополнительных курсов и/или наличие сертификатов об их прохождении. У нас в компании развита система наставничества, и мы с охотой берем специалистов, желающих развиваться и набираться опыта.

4.  Необходим не менее чем двухлетний опыт работы с Java EE. Очень важен реальный опыт участия в различных проектах, также важен опыт работы в команде. Более детальные требования зависят от позиции, на которую рассматривается кандидат.

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

 

 

 

 

 

 

 

 

Олег Галимов, Senior Performance Engineer & Middle Java Developer, Sberbank-Technology

1.  Как ни странно – хорошие знания Java Core. Поскольку JEE нет без него. Сегодня актуально в большей степени знать Java 7+. Кроме того, должны быть представления о CDI, Spring 4+, поскольку это фактически стандарт в этой сфере. Из навыков – полезно умение работать с исходным кодом, читать и понимать его логику.

2.  IDEи интернет-браузер – наше все. Экосистема Java в целом, и JEE в частности – довольно обширная. Поэтому не знать что-то и пойти поискать в интернете это нормально для разработчика. Кроме того, большинство задач повторяются, и наверняка до тебя уже написан хороший код, который можно свободно использовать для решения. Но не нужно впадать в крайности: в любой сфере профессионализм приобретается только упорным трудом и накопленными знаниями. Ну а представить современную разработку приложений без IDE практически невозможно – очень много среда разработки помогает сделать в пару щелчков, да и сам код представляет более читабельно и структурированно.

Но этим список не ограничивается. В «джентльменском наборе» обязательно должен быть Git, тестовый сервер с установленным сервером приложений (если, конечно, это не микросервис – привет Spring Boot и всем-всем-всем»), куда ваше приложение «поедет».

3.  Как правило – высшее образование. Но это скорее условное требование, компании готовы идти навстречу и часто набирают со средне-специальным и незаконченным высшим. Все зависит от задач, которые кандидат будет выполнять. На руководящей позиции оно больше необходимо, так как работа требует широкого кругозора помимо ИТ. Например, полезны знания менеджмента, управления проектами, бюджетирований и прочих вещей. Ну а если среди задач этого нет, то смотрят скорее на технические знания, а где вы их получили – уже дело второе.

4.  Опять же, зависит от задач. Вчерашнего студента не станут искать для управления сложным проектом, это очевидно. Аналогично, на позицию junior-разработчика не станут искать человека с 10 годами опыта кодирования за плечами. Я встречал в сети примерно такую градацию: для junior – можно без опыта, middle-разработчик – 3+ года опыта, либо 5+ если это сложный проект, 7+ и больше – для уровня senior. Разумеется, реальность полна сюрпризов.

5.  Специфика компании, так или иначе, влияет на требования, предъявляемые к кандидатам. В банковской среде ценятся навыки по написанию бэкэнда для высоконагруженных систем, интеграциям по разным протоколам. В маленьких компаниях – больше нужны fullstack-разработчики. В госпредприятиях – фреймворки для безопасности. Но это только мое суждение, основанное на собственном опыте.

 

 

 

 

 

 

 

 

Игорь Степин, Java Chief Architect, Trilogy, Inc.

1.  Начнем с того, кто ис-
пользует Java EE. Это банки, госорганы и телекомы, а также консалтинговые/оффшорные компании, которые их обслуживают. Как пра-
вило, это старые проекты (если
говорить о чисто EE без Spring Boot). Скорее всего, на собеседовании будут спрашивать про что-то новое, но для работы нужно знать старые версии Java и библиотек.

Нужно хорошо знать паттерны проектирования, так как их весьма много в существующем коде.

Нужно знать SQL, хранимые процедуры, особенности используемой БД. Довольно часто это Oracle, на втором месте Postgres.

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

Иногда важно также знать веб или настольный UI. Конкретные технологии зависят от проекта.

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

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

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

2.  Применяемый инструментарий программиста Java EE:

  • IDE для кода, скорее всего IntelliJ IDEA;
  • IDE для базы, в зависимости от того, какая используется в проекте;
  • сетевые утилиты типа tcpdump/Wireshark для анализа трафика;
  • профилировщик для Java – JProfiler, VisualVM;
  • sonarqube для статического анализа кода.

3.  Высшее техническое. Лучше иметь сертификацию по Java и любые другие, но не обязательно.

4.  Естественно, чем релевантней опыт, тем лучше. При этом вполне есть вакансии, особенно в аутсорсерах, для людей без опыта работы, но в этом случае они либо прошли курсы этой компании, либо из ВУЗа, знакомого этой компании.

5.  Обычно есть какие-то специфические стандарты (у телекомов одни, у банков другие, у госорганов третьи), их нужно знать для эффективной работы, но на работу могут взять и без этого.

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

 

 

 

 

 

 

 

 

Олег Алексеев, технический директор «МойСклад»

1.  У программиста Java EE долен знать:

  • Java;
  • Servlets (JSP не требуется);
  • CDI;
  • MDB & messaging;
  • SQL;
  • Уровни изоляции транзакций.

2. Intellij IDEA.

3. В джуниоры без опыта больше шансов пройти у выпускников или студентов последних курсов топовых учебных заведений – МВТУ, МИФИ, МГУ, ВШЭ. Разработчики с опытом оцениваются уже по своим текущим знаниям – на образование при найме сотрудника с опытом более 3 лет особо уже никто не смотрит.

4. Джуниор может быть и без опыта разработки. Но он
должен пройти собеседование и ответить на вопросы по Java и SQL на ожидаемом уровне. Опыт работы требуется на позиции средних и старших разработчиков – со средним и высоким уровнями квалификации.

5. Обязательными считаются знания по SQL и Java. Специфических требований нет.

 

 

 

 

 

 

 

 

Владимир Болотов, технический директор «Вирту Системс»

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

1.  Объектно-ориентированное мышление. Обязательно умение писать тесты. Умение читать техническую английскую документацию. Человек должен уметь планировать свою работу и укладываться в заявленные сроки. Быть ответственным за результат. Необходимо обладать навыками общения, чтобы коммуницировать с заказчиком. Должен всегда критично подходить даже к своим решениям, перепроектировать и упрощать код. Программист должен понимать своих коллег и уметь донести свои мысли. Уметь анализировать и синтезировать информацию.

2.  В первую очередь – IDE, наша компания использует Eclipse и различные плагины для работы с СУБД, сервером приложений и репозиторием. Кроме того:

  • репозиторий для хранения исходных кодов Git;
  • менеджер для работы с базой данных;
  • фреймворк для автоматизации сборки Maven или Gradle;
  • офисные приложения для работы с документами и электронной почтой;
  • мессенджер для общения с коллегами.

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

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

5.  Желательно знание предметной области – страхование (чтобы было легче разобраться в процессах) и нацеленность на командную работу.

 

 

 

 

 

 

 

 

Антон Демин, руководитель отдела технической платформы в dialog

1.  Программист на Java EE должен хорошо ориентироваться в библиотеках для работы с реляционными базами данных, иметь опыт работы с Hibernate или его enterprise аналогами, хорошо ориентироваться в серверах приложений, таких как Glassfish, WindFly, разбираться в их архитектуре. Необходимо уметь разрабатывать и поддерживать сервисы, работающие по протоколу SOAP. Неотъемлемым навыком является экспертиза в обеспечении информационной безопасности разрабатываемых сервисов.

2.  Среда разработки, такие как Intellij Idea, Eclipse или Netbeans IDE, инструменты администрирования СУБД Oracle, средства профайлинга приложений: HProf, Netbeans profiler, JProbe и другие. Инструментов много, все не перечислить.

3.  В основе нашего продукта не лежат технологии Java EE, но мы их используем при разработке интеграций для крупных компаний – в них распространено ПО, входящее в семейство Java EE. Мы обращаем внимание на опыт работы с интеграционными платформами, такими как IBM DataPower, SIEM и DLP-системами.

4.  Кандидату не обязательно иметь большой опыт работы со стеком технологий Java EE, но важно иметь большой бэкграунд работы с Java-приложениями.

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

Как правило, разработчик, приходящий в проект с Java EE, уже имеет серьезный опыт работы и профильное образование. В противном случае он будет обузой для команды, да и самому ему будет тяжело.

Программист этой сферы должен знать не только сам язык Java (либо иной JVM язык), но и хотя бы поверхностно понимать устройство используемых им
компонентов платформы (JDK) и библиотек (фреймворков).

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

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

 


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

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

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

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

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