Здравствуйте! Коротко о себе: программирую с 1989 г., с 2005 года в Java, с 2013 года работаю Java-тренером (до января этого года совмещал с основной работой Java-разработчика). Достаточно много моих выпускников трудоустроились, и я хочу поделится своими соображениями, как получить работу Java-разработчика (и не только Java).

От изучения Java до получения оффера работы — большое расстояние


Требования к кандидатам на вакансию Java разработчика достаточно высоки, см. пример тестового задания на джуниора от одного из аутсорсеров РБ. Конечно есть позиции и с меньшими требованиям, но их не так много и, по статистике на Украине (dou работает через прокси, в России не нашел), соотношение Отклики/Вакансии на такие позиции: от 20 до 50.

Для вакансий с опытом работы (которых значительно больше) получается замкнутый круг: без опыта не получить работы, а без работы не получить опыта. На вопрос «Кто виноват?» ответ очевиден — компании, которые не хотят вкладывать время и деньги в обучение, а хотят получить уже готового специалиста. Остается главный вопрос:

Что делать?



Крупные компании в основном закрывают позиции юниоров своими стажерами. Один из вариантов трудоустройства — пойти на стажировку, но

  • здесь также большой конкурс
  • далеко не все, успешно окнончившие стажировку, получают работу
  • иногда условия обучения достаточно тяжелые и подойдут не всем. Из отзыва про стажировку в EPAMе РБ:
    Там все настолько жутко строго, что я до сих пор в шоке. У них там сильный отбор… все оценивается, дз, тесты, устные опросы, ну и в конце защита своего проекта. Нам назначают таски и ставят дедлайны. Не успел залить таск — все, до свиданья… Чувствую себя как в школе… Вплоть до того что у нас есть список из 200-230 вопросов примерно по всем темам, которые мы должны знать без запинки. Конспекты ведем(!), на каждый вопрос письменный ответ и это проверяется… Епам себе дрессирует программистов) по другому и не скажешь...

Шаги другого варианта хорошо знакомы (отличное видео Якова Фейна "Как стать профессиональным Java разработчиком"):

  • Хорошее резюме
  • Приглашения на собеседования и тренировка в их прохождении
  • Получение оффера

Хорошее (выделяющееся) резюме означает, что его замечает HR и отправляет вам приглашение на собеседование.
В интернете есть большое количество рекомендаций, как этого добиться:


Но, на мой взгляд, главное:

Позиционируйте себя НЕ как юниора.


Для этого необходимо:

  • Хорошее понимание основ: как устроена память, что такое 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.
Поделиться с друзьями
-->

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


  1. ServPonomarev
    22.08.2016 07:44
    +2

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


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


    1. gkislin
      22.08.2016 13:09

      Если вариант, в вашем городе мало вакансий: можно пробовать обращаться в другие города и собеседоваться по скайп.


  1. Sild
    22.08.2016 09:24
    +3

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


    1. gkislin
      22.08.2016 13:12

      Ну да, это скорее не правило, а исключение.


  1. knagaev
    22.08.2016 10:01
    +3

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


  1. leremin
    22.08.2016 11:18

    Подобные трюки с резюме практикуется не только в Java. Вообще, так все делают, мне кажется, или большинство.


  1. sbnur
    22.08.2016 11:24

    А все же за всеми сложностями отбора качественной команды разработчиков, что стоит за EPAM, ну что-нибудь типа nginx


  1. KeLsTaR
    22.08.2016 11:25
    +1

    см. пример тестового задания на джуниора от одного из аутсорсеров РБ

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


    1. gkislin
      22.08.2016 13:11

      Спасибо, у меня была другая информация. А что за курсы, если не секрет?


      1. KeLsTaR
        22.08.2016 13:27

        Если я не ошибаюсь, это задание которое делают учащиеся курсов Itransition, сейчас может что-то видоизмененное, но по формулировке и набору задач очень сильно похоже, я встречал людей которые просили с таким помочь им.


  1. gkislin
    22.08.2016 23:10

    Первый этап- попасть на собеседование. «Убедить, что знаете как что-то работает»- это уже на собеседовании, знать безусловно надо.
    По поводу " полным-полно"- мои наблюдения, что без опыта в IT юниоров сильно больше.


  1. MrRuletick
    22.08.2016 23:10

    Участие в разработке Spring/JPA Enterprise приложения c авторизацией и правами доступа на основе ролей на стеке Maven/ Spring MVC/ Security/ REST(Jackson)/ Java 8 Stream API:


    а разве не проблема, что как раз такого описания своего резюме полным-полно среди тех, кто с 3 курса без опыта хочет куда-то устроиться и старается написать модные слова, которые встречал в интернете или может тема лабораторных заданий такая была. Мне кажется, что важно убедить, что знаете как что-то работает, а не на самом деле иметь практический опыт, поскольку это лишь возможность пройти проверку.
    Лично у меня за 5 лет помогало не то, что я умею делать, а то как быстро можно решить проблему.


    1. gkislin
      22.08.2016 23:11

      Первый этап- попасть на собеседование. «Убедить, что знаете как что-то работает»- это уже на собеседовании, знать безусловно надо.
      По поводу " полным-полно"- мои наблюдения, что без опыта в IT юниоров сильно больше.


  1. Fenomen51
    23.08.2016 12:41

    А потом приходится собеседования с такими проходить и наивно удивляться, что кто-то в резюме описал не опыт, знания и интересы, а то, что он считает, хочу видеть в его резюме я. Смысл?
    Даже если Вас возьмут, мы ведь не живём ради денег, а наоборот и стоит сразу не морочить головы друг другу, а выбирать по вкусу. Не можете устроиться, зачем вам вообще нужно куда-то устраиваться для работы? Для работы нужен комп и то можно бумажкой обойтись, да желание, а отнюдь не работодатель.
    На тему Java, программистов не хватает, а язык активно используется в бизнесе (без понятия почему), разработчиков с руками отрывают, вплоть до удвоения прежней зарплаты. Раньше печалился, что не знаю Java


    1. gkislin
      23.08.2016 13:33

      простите, правильно ли я понял, что вы не программист?

      > мы ведь не живём ради денег, а наоборот и стоит сразу не морочить головы друг другу, а выбирать по вкусу.
      я говорю про тех, кто выбрал это по душе, даже ссылка есть. И писать именно про свой «опыт, знания и интересы»

      > Для работы нужен комп и то можно бумажкой обойтись, да желание, а отнюдь не работодатель
      работодатель нужен, фрилансить на java для юниоров практически нереально

      > разработчиков с руками отрывают
      отрывают- да. синьоров


      1. Fenomen51
        23.08.2016 14:30

        Программист, хотя много и управленческой работы. На тему синьоров не разбираюсь в названиях, знаю, что у нас с радостью взяли украинца вообще мало что знающего по Java и наш программист его несколько месяцев обучал. Ибо нормального даже за 150-200 тыс. найти не сумели за пол года.

        По фрилансу — слово не понимаю, работодатели, ощущение, что обзываются им, огорчаясь, что деньги мимо проходят, а программистов пока успешных на фри не встречал. Работа, для меня лучший способ обучения, где платишь за образование не ты, а тебе. В остальном… ни с одним начальством не ужившись, открыл свою компанию, всегда легче договариваться, когда у тебя 300 контрагентов и потеряв одного, ипотека не встаёт острым вопросом. Да и сама ипотека не требуется, без лишней прослойки между деньгами заказчика и твоим кошельком. Есть проекты, где одному никак… но их единицы, даже у нас в компании из нескольких тысяч человек один Java-разработчик. Ребята делают в одиночку игры и продают. Для юниора доход — вполне. Не ратую, чтобы все занялись бизнесом, но кому на работе не нравится что-нибудь — своя компания позволит оценить все прелести и даже если не получится, будет легче на работе, понимая что для вас делает её руководство


  1. ololoepepe
    23.08.2016 12:53

    Виноваты не компании, а учебные заведения, не дающие нужных знаний и навыков. И не стоит приводить аргументы типа «учи сам» — не для того люди в эти самые учебные заведения поступают. Компании вполне обоснованно не хотят тратить средства на то, чем должны заниматься вузы и колледжи.


    1. gkislin
      23.08.2016 13:37

      Видете ли, зарплаты преподавателя в учебном заведени редко могут сравнится с зарплатами опытных разработчиков. А научить можно только тому, что сам умеешь. А по поводу найма новичков- есть и компании, которые берут и свои плюсы в этом: https://dou.ua/lenta/articles/why-need-junior/


      1. ololoepepe
        23.08.2016 14:14

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


        1. Fenomen51
          23.08.2016 15:09
          +1

          Лично мне не понятна позиция. Ты либо работодатель и всецело отвечаешь, защищаешь сотрудников, за это единственно тебе и платят они зарплату, а не ты им. Руководство ни чего производственного не делает и идеальная система — в которой этого руководства вообще нет как класса.
          Либо ты осознаёшь, что ты ноль в плане организаторских способностей и берёшь профессионалов, которые самостоятельно могут решить все вопросы, не спрашивая тебя, но в этом случае будь любезен выплатить им 99% прибыли предприятия, а сам бери ипотеку себе на 20 лет…
          Проблема, вероятно, в том, что нас в школах учат как быть винтиками, затыкать дырки предприятий, никто не учит бизнесу.
          Выросло поколение бизнесменов, которые могут только договориться, дать откаты кому надо и найти идиотов, которые всё за них сделают потом. И не обманывайтесь, к сожалению, про нас они именно так и говорят, между собой. Попробуйте что-нибудь потребовать или обсудить свои мысли с работодателем, если вас не уволят после этого, значит вы либо не заменимы, либо многое узнаете нового.
          Компания на то и нужна, единственная её цель — не доить вас, а давать работу, под которой понимается совсем не то, что дают сейчас нам. Вас обязаны обучить, если вы для компании зарабатывать планируете миллионы, а она вам платить их никогда не планирует начать, то обязаны хотя бы научить.
          Объясняют, что вы сразу уволиться можете, как научитесь — так, пардон, если компания сама осознаёт, что в ней работать так плохо, что любой грамотный сотрудник сразу уволится, кто же там останется добровольно работать?
          Ещё, с трудом представляю, чтобы профессионал любого уровня пришёл и сразу начал выполнять задачу. Явно новая область, в новом месте. Т.е., нужно либо использовать устаревшие методы решения задачи, с которыми уже знаком, либо тратить время на обучение и анализ.
          Каждый раз, с новым, бойким программистом, ощущение, что заключаю сделку с дьяволом. Делаете всё согласно ТЗ, но выясняется, что программа в реальных условиях не жизнеспособна. Либо страница сайта размером 4 Мб, зато сделан за ночь, либо сервис такой, что без страха не взглянешь и месяц приходится разбираться как это может работать, не говоря о том, что разумеется работает это не правильно, зато тоже было сделано быстро и недорого.
          Все мои лучшие работы были выполнены с нуля, начинаю со стандартов и чуть не с изучения нового для меня языка, всякий раз. Не шедевры, но фрейморки на фрейморке не сидит в паттерне и не потребляет все ресурсы новейшего сервера, при вызове от двух пользователей. Программисту важно желание работать. В остальных знаниях есть недостатки — вы будете использовать уже знакомые схемы, хотя ситуация давно изменилась и есть уже новые или все предпосылки к созданию новых, но вы ведь уже знаете как нужно сделать и вам искать новые пути не нужно. По поводу скорости — это не гонки, но даже в гонках, костылями подпирать платформу в течении последующих 15 лет, явно проблематичнее, нежели заранее подумать как она должна работать.


          1. ololoepepe
            23.08.2016 17:26

            Вы в какую-то не ту степь ушли. Сразу скажу, что я с вами полностью согласен: как по поводу того, как должно быть, так и по поводу подхода к разработке. Увы, это идеал, на практике такого почти не бывает. Никому не нужно, чтобы было идеально, всем нужно так, чтобы укладывалось в допустимые рамки, да побыстрее. Это везде так. Таковы люди.
            Но вообще-то я говорил о том, что сейчас после вуза бедолага-погромист в лучшем случае сможет объявить в дельфи версии от 90-го года переменную var KOLODA (тру стори, у нас так препод делал). Какие там системы контроля версий, реакты, джавы-спринги, функциональные языки. Молодой специалист даже не представляет, в каком направлении копать в поисках информации. Ну, это если самому не обучаться (зачем только тогда вузы нужны?).


        1. AdmAlexus
          25.08.2016 13:02

          Лично мне кажется, что причиной «недополученных знаний/навыков» является НЕЖЕЛАНИЕ получить эти знания.
          И от учебного заведения здесь вообще ничего не зависит. И, соответственно, как вы написали выше в данной специальности ВУЗы не всегда полезны (не всегда нужны).