Какой уровень знаний необходим для Java middle?
Прошёл курсы Иннополиса в КФУ, 120 часов по Java. Разбирали Java Core, Maven, Observer/Observable, Spring, Hibernate и DAO в целом. Были и домашки и прочее. Некоторые моменты для меня пока не очень понятны, но работаю с этим.
Уже ближе к концу обучения у нас стали проводить собеседования со Сбертехом. Однако учащихся с нетехническим образованием (как и я) завернули, в Сбертех берут только с техническим образованием (пускай по холодильникам, но технарь). Потом новогодние праздники начались со всеми вытекающими. В общем, ждём собеседований с другими фирмами. В свободное время продолжаю ковырять Java, вполне нравится. Может пока, но тем не менее.
Так вот, у меня таки следующий вопрос. Устроиться Java-junior’ом, насколько я знаю, крайне сложно, потому как народу много, вакансий мало, уровень ЗП низкий (в плане понаехать в другой город и снимать ещё жильё — надо же ещё выживать как-то). Но насколько я знаю, в случае с middle ситуация уже обратная, миддлов хорошо набирают, да и зарплаты там куда привлекательнее.
Так вот, насколько реально дома набраться опыта путём написания каких-нибудь pet-проектов, чтобы иметь хорошее портфолио по технологиям, разобраться в них, чтобы потом можно было найти работу сразу миддлом? Насколько я слышал, на собеседованиях говорили, что по нашей программе на выходе практически уровень миддлов.
Ну и какая в среднем вилка по ЗП для миддла выходит?
Рассчитываю что смогу пройти собеседование и таки устроиться в Иннополис, тогда будет проще. Но мало ли.
За джуниором нужен контроль. Обычно через него обучение до мидла и регулируется. Не знаю, как сделать это дома.
что по нашей программе на выходе практически уровень миддлов.
120 часов — это меньше месяца 8 часовой рабочей недели.
Если раньше нигде не работал (типа программиста или админа на другом языке) — мидлы начинаются с 2 лет, сеньеры — 4-5. Это при условии, что человек на работе действительно делом занимался, а не формочки шлёпал
тут важно относительно кого считать. Например, какое-нибудь днище типа ITTop Академ-Медиа берет кого угодно, и через полгода ты будешь по внутренней иерархии не просто мидлом, а начальником отдела. Это просто игра на самолюбии поциентов — нет денег, зато должность назовём покруче
короче мне кажется, стоит апплаиться везде где можно. Через некоторое время хождения по собеседованиям ты сам поймешь, какие требования у работодателей
Так вот, насколько реально дома набраться опыта путём написания каких-нибудь pet-проектов, чтобы иметь хорошее портфолио по технологиям
обычному человеку с обычным уровнем мотивации, нужно найти какого-нибудь наставника. Иначе откуда ты узнаешь, что именно не так с твоими поделиями?
олсо, при приеме на работу сам факт стажа учитывается безотносительно знаний. На собеседовании можно проверить умения весьма условно, поэтому обычно собеседование проходит в формате «расскажи о своих прошлых проектах». Когда прошлых проектов не было, а ты делал какие-то пет-хэлловорлды с кучей косяков (которые не поправил, потому что никто не ткнул в них носом), твоя репутация Крайне Низка
в общем, крайне рекомендую всё-таки найти хоть какую работу именно java-программистом, и за полгодика-год просто войти в тему. Дальше уже будет понятно, стоит ли тебе удалиться в тёмную пещеру и делать пет-проекты (и что именно в них), либо сама работа предоставляет достаточный уровень обучения
Как перейти с джуниор позиции на мидл: личный опыт
Сегодня расскажу про свой опыт перехода с джуниор позиции Java-разработчика на миддл — «скачок с джуна до мидла», а также поделюсь чек-листом, который поможет коллегам, оказавшимся в такой же ситуации.
Два года я работал в одной конторе на позиции джуна, но роста там особо не было. Надеялся, что скоро закончу магистратуру, и меня повысят до милда. Но этого не произошло. К слову, бакалавриат я закончил в СПбГУТ им. М.А. Бонч-Бруевича, факультет инфокоммуникационных сетей и систем, но знаний, которые можно непосредственно применять в современной продуктовой разработке, к сожалению, не получил. В программировании на Java я самоучка, и технический бэкграунд мне сильно в этом помог. Java изучал на практике, вникая в документацию и смотря ролики на ютубе.
Почему я ушел с предыдущей работы
В ту фирму я устраивался, когда учился в институте, и опыта у меня особо не было. Там в мои обязанности, в основном, входила поддержка интеграционного легаси проекта. Компания была маленькой, а данный проект — единственной джавовой разработкой, поэтому я время от времени переписывал уже имеющиеся решения с использованием новых технологий (новых очередей сообщений и т.д.) и ловил возникающие баги.
В планах было отучиться в магистратуре, после чего двигаться дальше по карьере, так как условия работы были весьма теплыми: зарплата меня вполне устраивала, начальство лояльно относилось к сотрудникам, а с коллегами можно было всегда отлично провести время после работы. Но все хорошее рано или поздно заканчивается, и в мою компанию пришло сокращение, под которое попал и я.
Поиск новой работы
Выхожу на рынок труда с полной уверенностью, что все рекрутеры мира только и мечтают обо мне. Но в итоге, меня зовут в средние конторы с такой же зп, а то и меньше, предлагая скучные задачи по поддержке кривого кода.
Собеседовался в EPAM и Luxoft. Эйчары максимально старались завлечь, рассказывая про крутые офисы, движуху внутри компании, ДМС и всякие “плюшки” в виде оплаты спорта и конференций. Но в итоге, так и не смогли ничего предложить по работе, потому что у меня не было опыта работы со Spring.
На первых собеседованиях я “набивал руку”, потому что общение с эйчарами было для меня в новинку. После каждого интервью я чувствовал себя все увереннее. Но основная проблема возникала на этапе тех. собеседования, где меня заваливали на каверзных теоретических вопросах, на которые я не мог четко ответить из-за слабой теоретической базы. Но даже после неудачных попыток, я выписывал все вопросы и задачи, с которыми не справился, и начинал заучивать. После 100500 собеседований на позицию джун+, мидл, результат был примерно одинаковый — готовы взять только на джуна с маленькой зп.
Новая работа
Сдаваться я не собирался, поэтому продолжал проходить собесы. Благо дистанционка, и можно было проходить хоть по 5 собеседований в день. И удача, после второй сессии тех. собеседования меня позвали сразу 2 компании — МТС и Цифровые Привычки.
Казалось бы, между МТС и неизвестной компанией выбор очевиден, но все оказалось не так просто. Цифровые Привычки к тому моменту успели выиграть несколько тендеров Сбера на 400 миллионов рублей и начали активно расти. Я думаю, все понимают, что вкатиться в айти компанию на стадии активного роста = получать достойную зп, так как из-за дефицита Java-разработчиков на рынке компания готова хорошо платить, когда у нее есть крупные проекты, на которые требуется больше сотрудников. Мое решение в пользу ЦП было также подкреплено бесплатным обучением по Java, которое в дальнейшем помогло в работе на проекте.
Чек-лист Middle Java Developer
Данный чек-лист основан на моем личном опыте в разработке, опыте прохождения технических собеседований и тех знаниях, которые я получил на обучении. В нем будут те ключевые навыки, которые помогли мне получить должность мидл разработчика. Условно разделю их на hard и soft skills.
Hard skills
Понимание технологического стека проекта, на который ты собеседуешься.
Нужно действительно разбираться в наборе инструментов, которые применяют в работе на проектах, а также важно четко ответить на теоретические вопросы о конкретном применении того или иного инструмента на тех. собеседовании. Например, в моем случае было важно знать JavaSE, JavaEE (JAX-RS, JAX-WS, JMS), Spring framework (Core), SQL, Maven, GIT, XML/XSD.
Сильная теоретическая база.
Нужно уметь объяснять, как ты выполнил ту или иную задачу. Почему использовал конкретно этот подход, а не другой. На тех. собеседовании любят капнуть глубоко в теоретические аспекты, на которых неподготовленный разработчик сразу заваливается. Например, меня на собеседованиях часто спрашивали, как устроен HashMap.
Уметь разбираться в чужом коде.
Сто процентов на новой работе придется иметь дело с чужим кодом, и не всегда он может быть адекватным. Поэтому на тех. собесе также дают задачи на ошибки в чужом коде, к этому надо быть готовым.
Уметь писать интеграционные тесты, осознанно подходить к обдумыванию тест-кейсов.
Написание интеграционных тестов — де факто стандарт современной разработки. Интеграционные выполняются автоматически и помогают удостовериться, что новые изменения не сломают старый функционал.
Знание различных методологий разработки.
Как минимум, нужно понимать, чем отличаются Agile, Scrum и Cascade, чтобы при выходе на проект было проще включиться в работу.
Умение решать задачи на собеседовании.
На тех. собесе кандидата просят решить несколько задач на алгоритмику. Очень часто они совершенно не связаны с реальными задачами разработчика, но решать все равно придется.
Знание английского — желательно, но не обязательно.
Если ты устраиваешься в российскую компанию, то знание языка не требуют. Но нужно иметь ввиду, что вся техническая документация в большинстве случаев написана на английском.
Soft skills
Быть заинтересованным и коммуникабельным.
На собеседовании стоит показать свою коммуникабельность, потому что если твои хард скилы немного не дотягивают до того уровня, который требуется на проекте, то у тебя есть шанс дать понять работодателю, что ты в состоянии быстро освоить все недостающие навыки.
Умение работать в команде.
Этот навык сильно помогает, потому что как я писал выше, работать с чужим кодом не всегда бывает легко, и нужно быть готовым постоянно общаться с коллегами, задавать вопросы, а также самому давать разъяснения, если это нужно. Также здорово, если ты можешь донести свои мысли и идеи до команды так, чтобы их поняли все.
Способность оценить трудозатраты.
Этот навык поможет избежать невыполнимых обещаний, после которых тебе придется работать по 20 часов в день, чтобы сдать проект в срок, который ты сам озвучивал.
Навык постановки целей и задач.
Это всегда полезно для собственного роста и развития, особенно если собираешься дальше строить карьеру.
В общем, начинающему специалисту, который вроде уже и не джун, но еще и не мидл, реально трудно найти работу с интересными задачами и достойной зп. Без хороших теоретических знаний и опыта тяжело устроиться на мидл позицию в нормальную компанию. Поэтому важно постоянно учиться, практиковаться и прокачивать софт скилы.
Также ниже прикрепляю ресурсы, которые помогли мне при подготовке к собеседованиям на Middle Java Developer.
Ресурсы для подготовки к собеседованию
Сайты, где можно найти самые часто задаваемые вопросы на собеседованиях:
Чаты в телеграмме, где можно обсудить разные темы с другими разработчиками и порешать задачи:
Где можно тренироваться решать задачи: