Найм высококвалифицированного Java-программиста требует поиска кандидатов, которые не только обладают хотя бы минимальным базовым уровнем понимания самого языка, но и кандидатов, чье мышление позволяет использовать язык Java в полной мере. Кроме того, вы, несомненно, ищете кандидатов с опытом работы со специфическими технологиями Java, которые также будут хорошо работать в современной команде разработчиков.
Знание языка JavaСуществуют основы языка Java, с которыми должен быть знаком любой кандидат, которого вы нанимаете, независимо от уровня. Эти навыки, безусловно, легче всего проверить с помощью онлайн-инструментов тестирования и заранее заданных вопросов на собеседовании об основах языка. По крайней мере, ваш кандидат должен быть в состоянии легко обсудить такие основные вопросы, как:
- различный уровень защиты переменных-членов и классов (общедоступный, частный, защищенный, по умолчанию)
- как определять интерфейсы, классы, абстрактные классы и внутренние классы
- использование статических переменных-членов и классов
- обработка исключений
- основные типы данных и их классы-оболочки
Еще одним хорошим механизмом раннего отбора является проверка знаний кандидата о структуре коллекций. Мало того, что это очень распространенная структура, используемая в программировании на Java, она также даст вам представление об их знании фундаментальных взаимосвязей (что такое иерархия интерфейсов), а также базовых концепций информатики (в чем разница между массив и связанный список, и как это отражается в различных реализациях коллекции, основанных на этих структурах данных?). Вам также нужно проверить знания кандидата о виртуальной машине Java (JVM) — например, как она обрабатывает сборку мусора и разницу между кучей и стеком.
Есть и другие распространенные Java-фреймворки, с которыми кандидат сталкивался и имел некоторый опыт работы связанные с J2EE (например, сервлеты и JMS). Если они выполнили какую-либо полную разработку стека, концепция объектно-реляционного отображения (ORM) и инверсии управления (IOC) не должна сбивать их с толку. Кроме того, существует ряд технологий, отличных от Java, с которыми, вероятно, знакомы программисты на Java, такие как протокол HTTP, SQL для выполнения запросов к базе данных, интерфейсные технологии, такие как HTML и Javascript, или форматы данных, такие как JSON и XML. Они также могут быть знакомы с объектно-ориентированными языками, такими как Python или C#.
Навыки объектно-ориентированного программированияВ дополнение к знанию самого языка вам нужно будет найти кандидатов, которые лучше всего смогут использовать сильные стороны языка программирования Java и, следовательно, «думать как Java-программист». Java как язык поощряет своих разработчиков использовать «объектно-ориентированное программирование» для обеспечения эффективного повторного использования кода и инкапсуляции логики. Идея состоит в том, чтобы предотвратить неподдерживаемый лапша-код, который свободно смешивает данные и логику таким образом, за которым трудно следовать, и который имеет слишком много взаимосвязанных зависимостей.
Важно найти тех, которые могут мыслить абстракциями, поведением и описывать, как разные сущности связаны друг с другом. Разработчики должны уметь легко определять общие черты между сущностями, и хороший тест состоит в том, чтобы они моделировали проблему с точки зрения ее сущностей и действий, которые они выполняют — либо с использованием языка моделирования, такого как UML, либо путем определения некоторых простых классов с переменными-членами и операции.
Конкретные Java-технологииКак IT рекрутер, вы должны понимать технологии и экосистему Java, необходимые вашей команде. Недостаточно сказать, что вам нужно нанять Java-разработчика. Вам нужно знать, какие фреймворки используются командой и какие фреймворки сопоставимы с этими фреймворками. Часто, даже если кандидат не совсем подходит, его опыт легко передать другим, и они могут быстро освоиться с вашим технологическим стеком, если они владеют сопоставимой технологией.
Однако важно знать, что разработчики в конечном итоге специализируются в определенной области. Вы хотите нанять полнофункционального веб-разработчика или мобильного разработчика? Для iOS или Android? Или, возможно, вы ищете кого-то, кто специализируется на работе с веб-сервисами или большими данными. Хотя есть разработчики, которые являются «мастерами на все руки», чаще вам придется расставлять приоритеты, какие наборы навыков в области Java являются для вас наиболее важными.
Общие навыки разработчикаНаконец, есть навыки, необходимые разработчику, чтобы преуспеть в вашей команде, которые не относятся к Java, но, тем не менее, важны для оценки, чтобы убедиться, что у вас есть хорошо функционирующая, продуктивная команда, способная разрабатывать качественный код в предиктивных циклах. Вам нужно убедиться, что вы видите образец кода от вашего кандидата, чтобы определить, является ли код, который он пишет, хорошо структурированным, поддерживаемым и читабельным кодом. Вы также захотите убедиться, что у них есть опыт работы с отладчиком, даже с чужим кодом. Другие ключевые навыки включают в себя опыт работы с:
- юнит-тестирование, издевательство
- CI/CD (Муравей, Мейвен, Дженкинс)
- работа с репозиторием исходного кода
- работа в команде в среде с отслеживанием проблем, спринтами и проверками кода
Как и в случае любой должности, наличие сильных коммуникативных навыков, как письменных, так и устных, является важным критерием, и вам также следует проверить, обладает ли кандидат знаниями в вашей конкретной проблемной области (например, финансы, нетворкинг).
Уровни опыта разработчиковКогда вы занимаетесь наймом в ит, важным вопросом, о котором следует помнить, является уровень опыта, который нужен для вашей команды. Всегда хорошо иметь в штате хотя бы несколько продвинутых Java-разработчиков, которые могут возглавить команду и наставлять более младших членов, но также стоит подумать, будет ли наем более младших сотрудников более практичным с точки зрения бюджета, а также текущей рабочей нагрузки вашей команды. Часто трудовой стаж рассматривается с точки зрения количества лет опыта, но есть и практические соображения с точки зрения их базы знаний.
Разработчики начального уровня — часто только что окончившие школу или программу обучения, эти разработчики могут не иметь большого практического опыта в реальной жизни, но должны знать основы языка и общие структуры данных и алгоритмы. Они часто стремятся учиться и полны энтузиазма, но могут быть склонны заново изобретать велосипед, когда дело доходит до «решенных проблем». Они часто не идеальны для очень маленьких организаций, так как требуют достаточного количества наставничества по основным процессам разработки.
Младшие разработчики — обычно эти кандидаты имеют опыт работы не менее 2 лет. Они должны быть знакомы с общими технологиями Java в дополнение к основам и должны уметь писать читаемый, чистый код Java. У них может быть меньше опыта в проектировании высокого уровня и они могут быть менее опытны в оптимизации кода.
Старшие разработчики — эти кандидаты имеют опыт работы с Java от 3 до 6 лет и часто работали с другими технологиями. Старший разработчик должен хорошо знать, как оптимизировать код и JVM, а также иметь опыт создания высокоуровневых проектов и работы с реляционными базами данных.
Архитекторы Java. В дополнение к опыту кодирования на Java они будут знакомы с шаблонами проектирования, работать с многопоточностью и синхронизацией, интегрировать разрозненные системы и создавать проекты высокого уровня, а также высокопроизводительный код. Кроме того, вы будете искать кандидатов, которые могут работать с другими ресурсами, такими как управление продуктами и UX, для удовлетворения требований клиентов.
Вам также придется подумать, хотите ли вы, чтобы этот сотрудник играл ведущую роль, что также будет стоить денег в дополнение к требуемым навыкам управления. С этими уровнями опыта приходят разные уровни заработной платы.
Если вам необходимо найти ит специалиста менее чем за 14 дней, тогда Добро пожаловать в наше Кадровое агентство IT and Digital. Мы закрываем сложные ит вакансии по всему миру под ключ за 2 недели!