Из юниоров в разработчики: получаем первую работу

2482e79d8cba4750abdef5a7056f645b.jpg

Здравствуйте! Коротко о себе: программирую с 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.

Комментарии (3)

  • 22 августа 2016 в 07:44

    0

    С таким резюме вы можете не бояться обращаться на вакансии с требованием 1–2 года опыта и, возможно, пройдете на следующий уровень: «Приглашения на собеседования и тренировка в их прохождении», что уже требует отдельной статьи.

    У меня ощущение, что рынок работодателей узкий. Как бы не испортить себе карму надолго таким подходом. Ну или, в крайнем случае, определить 1–2–3 компании-мечты, и тренироваться строго не на них и афилированных с ними.

  • 22 августа 2016 в 09:24

    0

    имхо, требования, описанные в статье, излишне сложны. А тз из первого примера может потянуть даже на мидла.
  • 22 августа 2016 в 10:01

    0

    Это случайно не в «Я пиарюсь»?

© Habrahabr.ru