Здравствуйте! Коротко о себе: программирую с 1989 г., с 2005 года в Java, с 2013 года работаю Java-тренером (до января этого года совмещал с основной работой Java-разработчика). Достаточно много моих выпускников трудоустроились, и я хочу поделится своими соображениями, как получить работу Java-разработчика (и не только Java).
От изучения Java до получения оффера работы — большое расстояние
Требования к кандидатам на вакансию Java разработчика достаточно высоки, см. пример тестового задания на джуниора от одного из аутсорсеров РБ. Конечно есть позиции и с меньшими требованиям, но их не так много и, по статистике на Украине (dou работает через прокси, в Росии не нашел), соотношение Отклики/Вакансии на такие позиции: от 20 до 50.
Для вакансий с опытом работы (которых значительно больше) получается замкнутый круг: без опыта не получить работы, а без работы не получить опыта. На вопрос «Кто виноват?» ответ очевиден — компании, которые не хотят вкладывать время и деньги в обучение, а хотят получить уже готового специалиста. Остается главный вопрос:
Что делать?
Крупные компании в основном закрывают позиции юниоров своими стажерами. Один из вариантов трудоустройства — пойти на стажировку, но
- здесь также большой конкурс
- далеко не все, успешно окнончившие стажировку, получают работу
- иногда условия обучения достаточно тяжелые и подойдут не всем. Из отзыва про стажировку в EPAMе РБ:
Там все настолько жутко строго, что я до сих пор в шоке. У них там сильный отбор… все оценивается, дз, тесты, устные опросы, ну и в конце защита своего проекта. Нам назначают таски и ставят дедлайны. Не успел залить таск — все, до свиданья… Чувствую себя как в школе… Вплоть до того что у нас есть список из 200-230 вопросов примерно по всем темам, которые мы должны знать без запинки. Конспекты ведем(!), на каждый вопрос письменный ответ и это проверяется… Епам себе дрессирует программистов) по другому и не скажешь...
Шаги другого варианта хорошо знакомы (отличное видео Якова Фейна "Как стать профессиональным Java разработчиком"):
- Хорошее резюме
- Приглашения на собеседования и тренировка в их прохождении
- Получение оффера
Хорошее (выделяющееся) резюме означает, что его замечает HR и отправляет вам приглашение на собеседование.
В интернете есть большое количество рекомендаций, как этого добиться:
- Выбрать шаблон для резюме
- Идеальное резюме Junior’а
- Как продать свое резюме в 2 раза дороже
- Как правильно составить резюме
- Резюме программистов. Часть 1 (плохие)
- Резюме программистов. Часть 2 (хорошие)
- Как составить резюме на
английском
Но, на мой взгляд, главное:
Позиционируйте себя НЕ как юниора.
Для этого необходимо:
- Хорошее понимание основ: как устроена память, что
такое JMM, опыт работы с сервлетами, JUnit, SQL - Уровень выше Java Core: основы Maven, Spring (MVC, Security, Test), JPA(Hibernate), REST. Также желательно основы
JavaScript и HTML/CSS
Материалов по Java фреймворкам и технологиям в интернете много. Но если вы хотите их освоить, а не прочитать/посмотреть и забыть, необходимо написать на них собственный пэт-проект. Это может быть проект домашней библиотеки или бухгалтерии, или кормления кота или… Хорошо, если в нем будет реальная потребность — тогда при его эксплуатации вы постепенно будете приходить к оптимальным решениям.
Лучше всего делать его на основе небольшого проекта на популярном стеке, например референсной имплементации Spring Pet clinic. С первого раза сделать код красивым и правильным не подсилу даже синьору. Проект должен жить и нести его владельцу радость приобщения к красоте кода через рефакторинг. И, кроме понимания технолигий и развития чувства перкрасного, из работы над собственным проектом Вы получаете навыки нахождения красивых и практических решений для конкретных задач и решения конкретных проблем, из которых состоит ежедневная работа программиста. Для этого нужно:
- понимание, как работают фреймворки, на чем они основаны, какие паттерны используются
- кругозор, навыки решения подобных задач
- умение находить правильные решения в интернете (70-80% это умение выбрать из найденного в Stackoverflow)
Эта задача непростая и, если знаний, опыта, времени недостаточно, рекомендую пройти какой-нибудь тренинг Java Enterprise на этом стеке, обязательно с написанием проекта на основе пройденных технологий на выходе. Мои критерии тренинга:
- Ведет преподаватель с опытом в Java разработке, лучше как синьор или архитектор
- Максимальный охват: самые важные и необходимые Java разработчику темы, API, фреймворки, инструменты в одном курсе.
- В течении тренинга разрабатывается законченный Enterprise проект. Темы идут не по отдельности (в воздухе) на отстраненных примерах, а последовательно, в связке, как дополнения к созданию единого работающего приложения.
- Последовательное возрастание сложности: от нуля до деплоя готового приложения в облако
- Практика! Участники на протяжении всего курса должны работать с кодом проекта. Объязательны домашние задания. Если дают только теорию (всего понемногу), то это, на мой взгляд, выброшенные деньги и время. Без практики любое обучение (Java, английский, езда на велосипеде) ничего не стоит.
- Поддержка группы и преподавателя: возможность задать любой вопрос и получить на него квалифицированный ответ.
- Доступность и структурированность материалов
- Ревью Вашего кода.
- Помощь в составлении резюме и с трудоустройством. Если вам гарантируют по окончанию 100% трудоустройство — не верьте. Хорошо сказано в статье про работу разработчика:
Работа программиста – не столько профессия, сколько образ жизни. Обучение в университете, самообразование, хобби и, что немаловажно, страсть – ключевые составляющие успеха в этой сфере.
После того, как у Вас будет опыт в собственном Java Enterprise проекте,
Сделайте новое резюме:
Типичное резюме Java юниора начинается так:
Начать карьеру как junior Java developer в современной, перспективной компании, чтобы через 3 года стать специалистом…
Хорошо обучаем…
Оптыт работы: отсутствует
Прошел курсы...
Нужно:
- уберать слова «начать карьеру», «юниор» и «готов к обучению»
- вставить в квалификацию все изученные вами технологии
- в опыте работы написать об участие в проекте с его кратким описанием
Например, ОПЫТ РАБОТЫ:
Участие в разработке Spring/JPA Enterprise приложения c авторизацией и правами доступа на основе ролей на стеке Maven/ Spring MVC/ Security/ REST(Jackson)/ Java 8 Stream API:
- реализация сохранения в базы Postgres и HSQLDB на основе Spring JBDC, JPA(Hibernate) и Spring-Data-JPA
- реализация и тестирование REST и AJAX контроллеров
- реализация клиента на Bootstrap (css/js), datatables, jQuery + plugins.
С таким резюме вы можете не бояться обращаться на вакансии с требованием 1-2 года опыта и, возможно, пройдете на следующий уровень: «Приглашения на собеседования и тренировка в их прохождении», что уже требует отдельной статьи.
Спасибо за внимание и желаю отличной карьеры в IT.
Автор: gkislin