Здравствуйте! Коротко о себе: программирую с 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.
Комментарии (22)
leremin
22.08.2016 11:18Подобные трюки с резюме практикуется не только в Java. Вообще, так все делают, мне кажется, или большинство.
sbnur
22.08.2016 11:24А все же за всеми сложностями отбора качественной команды разработчиков, что стоит за EPAM, ну что-нибудь типа nginx
KeLsTaR
22.08.2016 11:25+1см. пример тестового задания на джуниора от одного из аутсорсеров РБ
Это пример не для любого человека «с улицы», претендующего на джуниора, а критерии тестового проекта после курсов, чтобы пройти дальше.gkislin
22.08.2016 13:11Спасибо, у меня была другая информация. А что за курсы, если не секрет?
KeLsTaR
22.08.2016 13:27Если я не ошибаюсь, это задание которое делают учащиеся курсов Itransition, сейчас может что-то видоизмененное, но по формулировке и набору задач очень сильно похоже, я встречал людей которые просили с таким помочь им.
gkislin
22.08.2016 23:10Первый этап- попасть на собеседование. «Убедить, что знаете как что-то работает»- это уже на собеседовании, знать безусловно надо.
По поводу " полным-полно"- мои наблюдения, что без опыта в IT юниоров сильно больше.
MrRuletick
22.08.2016 23:10Участие в разработке Spring/JPA Enterprise приложения c авторизацией и правами доступа на основе ролей на стеке Maven/ Spring MVC/ Security/ REST(Jackson)/ Java 8 Stream API:
а разве не проблема, что как раз такого описания своего резюме полным-полно среди тех, кто с 3 курса без опыта хочет куда-то устроиться и старается написать модные слова, которые встречал в интернете или может тема лабораторных заданий такая была. Мне кажется, что важно убедить, что знаете как что-то работает, а не на самом деле иметь практический опыт, поскольку это лишь возможность пройти проверку.
Лично у меня за 5 лет помогало не то, что я умею делать, а то как быстро можно решить проблему.gkislin
22.08.2016 23:11Первый этап- попасть на собеседование. «Убедить, что знаете как что-то работает»- это уже на собеседовании, знать безусловно надо.
По поводу " полным-полно"- мои наблюдения, что без опыта в IT юниоров сильно больше.
Fenomen51
23.08.2016 12:41А потом приходится собеседования с такими проходить и наивно удивляться, что кто-то в резюме описал не опыт, знания и интересы, а то, что он считает, хочу видеть в его резюме я. Смысл?
Даже если Вас возьмут, мы ведь не живём ради денег, а наоборот и стоит сразу не морочить головы друг другу, а выбирать по вкусу. Не можете устроиться, зачем вам вообще нужно куда-то устраиваться для работы? Для работы нужен комп и то можно бумажкой обойтись, да желание, а отнюдь не работодатель.
На тему Java, программистов не хватает, а язык активно используется в бизнесе (без понятия почему), разработчиков с руками отрывают, вплоть до удвоения прежней зарплаты. Раньше печалился, что не знаю Javagkislin
23.08.2016 13:33простите, правильно ли я понял, что вы не программист?
> мы ведь не живём ради денег, а наоборот и стоит сразу не морочить головы друг другу, а выбирать по вкусу.
я говорю про тех, кто выбрал это по душе, даже ссылка есть. И писать именно про свой «опыт, знания и интересы»
> Для работы нужен комп и то можно бумажкой обойтись, да желание, а отнюдь не работодатель
работодатель нужен, фрилансить на java для юниоров практически нереально
> разработчиков с руками отрывают
отрывают- да. синьоровFenomen51
23.08.2016 14:30Программист, хотя много и управленческой работы. На тему синьоров не разбираюсь в названиях, знаю, что у нас с радостью взяли украинца вообще мало что знающего по Java и наш программист его несколько месяцев обучал. Ибо нормального даже за 150-200 тыс. найти не сумели за пол года.
По фрилансу — слово не понимаю, работодатели, ощущение, что обзываются им, огорчаясь, что деньги мимо проходят, а программистов пока успешных на фри не встречал. Работа, для меня лучший способ обучения, где платишь за образование не ты, а тебе. В остальном… ни с одним начальством не ужившись, открыл свою компанию, всегда легче договариваться, когда у тебя 300 контрагентов и потеряв одного, ипотека не встаёт острым вопросом. Да и сама ипотека не требуется, без лишней прослойки между деньгами заказчика и твоим кошельком. Есть проекты, где одному никак… но их единицы, даже у нас в компании из нескольких тысяч человек один Java-разработчик. Ребята делают в одиночку игры и продают. Для юниора доход — вполне. Не ратую, чтобы все занялись бизнесом, но кому на работе не нравится что-нибудь — своя компания позволит оценить все прелести и даже если не получится, будет легче на работе, понимая что для вас делает её руководство
ololoepepe
23.08.2016 12:53Виноваты не компании, а учебные заведения, не дающие нужных знаний и навыков. И не стоит приводить аргументы типа «учи сам» — не для того люди в эти самые учебные заведения поступают. Компании вполне обоснованно не хотят тратить средства на то, чем должны заниматься вузы и колледжи.
gkislin
23.08.2016 13:37Видете ли, зарплаты преподавателя в учебном заведени редко могут сравнится с зарплатами опытных разработчиков. А научить можно только тому, что сам умеешь. А по поводу найма новичков- есть и компании, которые берут и свои плюсы в этом: https://dou.ua/lenta/articles/why-need-junior/
ololoepepe
23.08.2016 14:14Все так. Никто ведь не говорит, что виноваты преподы, сам учился, знаю, в каких условиях все это происходит, и на чем большинство учащихся вертело учебный процесс. Помня недавние новости о сокращении финансирования на 40%, не составляет труда угадать, кто на самом деле виноват. Но все же для будущего работника, на мой взгляд, непосредственным источником проблемы недополученных знаний/навыков является все-таки учебное заведение, а не работодатель, который может, но вовсе не обязан вкладывать средства в обучение тому, чему должны учить в вузах/колледжах.
Fenomen51
23.08.2016 15:09+1Лично мне не понятна позиция. Ты либо работодатель и всецело отвечаешь, защищаешь сотрудников, за это единственно тебе и платят они зарплату, а не ты им. Руководство ни чего производственного не делает и идеальная система — в которой этого руководства вообще нет как класса.
Либо ты осознаёшь, что ты ноль в плане организаторских способностей и берёшь профессионалов, которые самостоятельно могут решить все вопросы, не спрашивая тебя, но в этом случае будь любезен выплатить им 99% прибыли предприятия, а сам бери ипотеку себе на 20 лет…
Проблема, вероятно, в том, что нас в школах учат как быть винтиками, затыкать дырки предприятий, никто не учит бизнесу.
Выросло поколение бизнесменов, которые могут только договориться, дать откаты кому надо и найти идиотов, которые всё за них сделают потом. И не обманывайтесь, к сожалению, про нас они именно так и говорят, между собой. Попробуйте что-нибудь потребовать или обсудить свои мысли с работодателем, если вас не уволят после этого, значит вы либо не заменимы, либо многое узнаете нового.
Компания на то и нужна, единственная её цель — не доить вас, а давать работу, под которой понимается совсем не то, что дают сейчас нам. Вас обязаны обучить, если вы для компании зарабатывать планируете миллионы, а она вам платить их никогда не планирует начать, то обязаны хотя бы научить.
Объясняют, что вы сразу уволиться можете, как научитесь — так, пардон, если компания сама осознаёт, что в ней работать так плохо, что любой грамотный сотрудник сразу уволится, кто же там останется добровольно работать?
Ещё, с трудом представляю, чтобы профессионал любого уровня пришёл и сразу начал выполнять задачу. Явно новая область, в новом месте. Т.е., нужно либо использовать устаревшие методы решения задачи, с которыми уже знаком, либо тратить время на обучение и анализ.
Каждый раз, с новым, бойким программистом, ощущение, что заключаю сделку с дьяволом. Делаете всё согласно ТЗ, но выясняется, что программа в реальных условиях не жизнеспособна. Либо страница сайта размером 4 Мб, зато сделан за ночь, либо сервис такой, что без страха не взглянешь и месяц приходится разбираться как это может работать, не говоря о том, что разумеется работает это не правильно, зато тоже было сделано быстро и недорого.
Все мои лучшие работы были выполнены с нуля, начинаю со стандартов и чуть не с изучения нового для меня языка, всякий раз. Не шедевры, но фрейморки на фрейморке не сидит в паттерне и не потребляет все ресурсы новейшего сервера, при вызове от двух пользователей. Программисту важно желание работать. В остальных знаниях есть недостатки — вы будете использовать уже знакомые схемы, хотя ситуация давно изменилась и есть уже новые или все предпосылки к созданию новых, но вы ведь уже знаете как нужно сделать и вам искать новые пути не нужно. По поводу скорости — это не гонки, но даже в гонках, костылями подпирать платформу в течении последующих 15 лет, явно проблематичнее, нежели заранее подумать как она должна работать.ololoepepe
23.08.2016 17:26Вы в какую-то не ту степь ушли. Сразу скажу, что я с вами полностью согласен: как по поводу того, как должно быть, так и по поводу подхода к разработке. Увы, это идеал, на практике такого почти не бывает. Никому не нужно, чтобы было идеально, всем нужно так, чтобы укладывалось в допустимые рамки, да побыстрее. Это везде так. Таковы люди.
Но вообще-то я говорил о том, что сейчас после вуза бедолага-погромист в лучшем случае сможет объявить в дельфи версии от 90-го года переменную var KOLODA (тру стори, у нас так препод делал). Какие там системы контроля версий, реакты, джавы-спринги, функциональные языки. Молодой специалист даже не представляет, в каком направлении копать в поисках информации. Ну, это если самому не обучаться (зачем только тогда вузы нужны?).
AdmAlexus
25.08.2016 13:02Лично мне кажется, что причиной «недополученных знаний/навыков» является НЕЖЕЛАНИЕ получить эти знания.
И от учебного заведения здесь вообще ничего не зависит. И, соответственно, как вы написали выше в данной специальности ВУЗы не всегда полезны (не всегда нужны).
ServPonomarev
У меня ощущение, что рынок работодателей узкий. Как бы не испортить себе карму надолго таким подходом. Ну или, в крайнем случае, определить 1-2-3 компании-мечты, и тренироваться строго не на них и афилированных с ними.
gkislin
Если вариант, в вашем городе мало вакансий: можно пробовать обращаться в другие города и собеседоваться по скайп.