- С каким уровнем Java можно идти на стажировку, а с каким — претендовать на зарплату 250 000 рублей?
- Что должен знать и уметь начинающий Java-разработчик?
- Стажер, 40 000 – 50 000 рублей в месяц
- Junior-разработчик, 50 000 – 90 000 рублей в месяц
- Middle-разработчик, 90 000 – 250 000 рублей в месяц
- На что обратить внимание при выборе курсов в Java-программировании?
- Подведем итоги
- 17 вопросов джуну: что должен знать Junior-разработчик
- Авторизуйтесь
- 17 вопросов джуну: что должен знать Junior-разработчик
- Hard skills
- Почему вы выбрали этот язык программирования?
- Где проходили обучение, участвовали ли в реальных проектах?
- Назовите принципы ООП
- Какие алгоритмы сортировки вы знаете? Напишите код с использованием быстрой сортировки.
- Какие технологии вы знаете?
- Расскажите, с какими IDE вы работали
- Есть ли опыт работы с базами данных? Сколько нормальных форм вы знаете и чем они отличаются?
- У вас был свой проект? В чём заключалась задача и как вы её решали?
- Какие методологии создания продукта вы знаете? Назовите несколько принципов Agile
- Есть ли опыт работы с Git? Какой веб-сервис для хостинга проектов вы используете?
- Также вас могут попросить решить несколько несложных задач
- Soft skills
- Вы командный игрок?
- IT-сфера изменчива, постоянно появляются новые технологии. Готовы ли вы всё время учиться?
- Каков ваш уровень английского языка?
- Умеете ли вы справляться со стрессом?
- Если возникла проблема, как вы будете её решать?
- Можете ли вы оценить время выполнения задачи?
- Что должен знать Junior-разработчик? Отвечают эксперты
- заместитель генерального директора SimbirSoft
- руководитель программ «Python-разработчик» и «Алгоритмы для разработчиков» в Яндекс.Практикуме
- руководитель отдела разработки Аванпост
- Выводы
С каким уровнем Java можно идти на стажировку, а с каким — претендовать на зарплату 250 000 рублей?
Привет, Хабр! Меня зовут Даниил Пилипенко, я — программный директор факультета backend-разработки направления «Программирование» в Skillbox и директор центра подбора IT-специалистов SymbioWay.
В этой статье я хочу рассказать, какого уровня знаний и навыков Java достаточно, чтобы идти на стажировку или устраиваться на работу, и на какую зарплату можно рассчитывать.
Часто бывает так, что не решаешься осваивать новую профессию или получать дополнительное образование только потому, что не знаешь, какие плоды и когда тебе это принесет. Одни долго учатся, но все равно без практического опыта в разработке никуда, кроме стажировки, устроиться не могут. Другие же умудряются пойти на курс и сразу параллельно устроиться на работу.
Мы подготовили для вас несколько карьерных треков, которые сразу разложат все по полочкам:
на какой доход можно рассчитывать;
какие знания нужно получить, чтобы зарабатывать больше;
по каким критериям выбирать обучение.
Для начала давайте разберемся, какими знаниями и навыками должен обладать начинающий Java-разработчик.
Что должен знать и уметь начинающий Java-разработчик?
Чтобы устроиться на работу на должность младшего Java-программиста, нужно:
Знать
Уметь
синтаксис языка, все основные операторы и конструкции;
основы объектно-ориентированного программирования: что такое классы, методы, статический контекст, константы, наследование, полиморфизм, инкапсуляция, перегрузка и переопределение;
принципы клиент-серверного взаимодействия, в том числе, HTTP и REST;
язык запросов SQL как минимум на уровне JOIN-ов;
писать “чистый” работающий и достаточно оптимальный с точки зрения производительности код;
работать с разными типами данных и коллекциями;
работать с исключениями;
писать и понимать лямбда-выражения и работать с функциональными интерфейсами;
работать со Stream API;
работать с сетью и с файлами.
Еще вам понадобится опыт:
работы со сборщиком (например, Maven или Gradle) и с подключением внешних библиотек;
отладки и профилирования приложений;
работы с системой контроля версий Git;
разработки хотя бы несложных веб-приложений на Spring Boot;
работы с командной строкой Linux (bash);
Это обязательная база, без которой не получится работать. Конечно, эти списки могут корректироваться и уточняться в зависимости от требований и задач конкретного работодателя.
И, если вы не владеете другими языками программирования и у вас нет никакого опыта в разработке, осваивать профессию придется полностью с нуля.
А если все навыки есть и опыт командной разработки тоже, можно смело устраиваться на работу и развиваться дальше. Когда в знаниях есть пробелы, нет уверенности в своих силах или практики разработки более-менее крупных проектов, тогда вам в стажеры. Рассмотрим карьерные треки с вилкой зарплат.
Стажер, 40 000 – 50 000 рублей в месяц
С позиции стажера часто начинается карьера любого программиста, в том числе Java-разработчика. Найти вакансии стажера можно на популярных агрегаторах — таких, как HeadHunter, Яндекс.Работа или SuperJob Student. Последняя площадка полностью посвящена стажировкам.
Вам в стажеры, если:
вы знаете только основы Java;
у вас есть практика решения задач, но только самостоятельная, и нет опыта командной разработки;
вы еще учитесь, но хотите начать подрабатывать и обучаться на практике.
Junior-разработчик, 50 000 – 90 000 рублей в месяц
Если у вас есть все перечисленные базовые знания и вы разрабатывали проекты в команде, можно претендовать на должность младшего Java-разработчика. А если вы еще учитесь, но получаете дополнительное образование, у вас есть опыт в других языках — вполне возможно, вы сможете устроиться на работу в середине обучения. В таком случае и зарплата может быть сразу 60 000 – 70 000 рублей. Все зависит от вашего стремления учиться, а также качества и скорости решения задач, которое вы приобретете в процессе такого обучения.
Можно учиться и работать параллельно. Курсы по Java в среднем длятся 6-9 месяцев. В Skillbox модуль на неделю — это где-то 1,5-2 часа видео и 5-6 часов домашних заданий. Вы сможете посвящать обучению один неполный выходной или по часу в день в течение недели и совмещать с основной работой или учебой.
Обучайтесь в своем темпе. Например, некоторым нашим студентам хватает 2-3-х месяцев для прохождения базового курса.
Middle-разработчик, 90 000 – 250 000 рублей в месяц
У вас есть все знания и навыки junior-разработчика, вы работаете по профессии, но хотите развиваться, идти дальше и зарабатывать больше. Для этого нужно интенсивно учиться, в том числе:
Освоить фреймворк Spring. Если сделать это перед трудоустройством, то вы сможете сразу претендовать на зарплату от 90 000 рублей.
Освоить работу с базами данных, алгоритмами и Enterprise-технологиями в Java. Это поможет вам быстрее вырасти до уровня middle/middle+ и зарплаты до 250 000 рублей в месяц при условии постоянной реальной практики на работе.
Например, вы можете учиться на нашем курсе «Java-разработчик PRO», обучение занимает 2 года и охватывает базовый, полный и дополнительный курс с изучением указанных выше технологий.
На что обратить внимание при выборе курсов в Java-программировании?
Схема обучения. Удобнее обучаться в любое время, но некоторые программы рассчитаны на строгое присутствие на уроках по расписанию с дедлайнами. В этом случае может быть сложно совмещать обучение с работой или основным образованием.
Нагрузка. Курс может быть слишком плотным или чересчур растянутым. Оптимально, когда есть рекомендуемые темпы обучения.
Командная разработка. Чем больше практики, реальных проектов, тем лучше, а здесь никуда без работы в коллективе. Уровень сложности — максимальный. Это отличный опыт и ваш главный козырь при трудоустройстве. Неизвестно, когда на работе вам попадется такой проект, так что используйте возможности во время обучения по-максимуму.
Обязательная стажировка. Если после обучения вам нужно обязательно стажироваться — вы учитесь на уровень Junior. Это неплохо, если после короткого обучения (6 месяцев максимум) вы уже можете идти работать. Но лучше, если программа предусматривает помощь в трудоустройстве. Это значит, что образовательное учреждение или платформа не сомневается в уровне подготовленных кадров и предоставляет выбор: если вы хотите учиться недолго — можно идти на стажировку. А если пройти полное обучение, то можно сразу устраиваться на работу.
Срок обучения. У всех разные потребности. Кто-то приходит с опытом командных разработок в других языках, кто-то совсем без всего. Понятно, что таким людям нужно учиться разное время, знания различного уровня, а значит — выбирать программу нужно под себя, под свою ситуацию и личные потребности.
Дополнительные курсы. Иногда программы обучения включают множество дополнительных курсов не по основной профессии. Такие программы, как правило, стоят дороже и занимают больше времени. Обращайте внимание на то, чтобы все курсы в рамках выбранной вами программы были так или иначе посвящены Java-разработке.
Программа курса. Тут все просто: чем больше практики, тем лучше, но теория тоже нужна. Практика в среде разработки, а не на виртуальном тренажере — дополнительный плюс. Обращайте внимание, чтобы авторы курса не тратили ваше время на устаревшие технологии, например, сервлеты и JSP, JSTL. Некоторые обучающие платформы до сих пор этому учат и берут за это деньги.
Диплом. Круто, если по результатам обучения вы выполните не только индивидуальный, но и командный диплом. Это дополнительный бонус при трудоустройстве.
Подведем итоги
Если у вас есть опыт в разработке на других языках, проходите базовое обучение по Java и смело вливайтесь в профессию. Если таких знаний нет, нужно погружаться с нуля. А если вы хотите выйти на новый уровень и зарабатывать больше, ищите продвинутые курсы уровня PRO и обязательно проходите обучение технологиям Enterprise-разработки и фреймворку Spring.
Источник
17 вопросов джуну: что должен знать Junior-разработчик
Авторизуйтесь
17 вопросов джуну: что должен знать Junior-разработчик
Что должен знать Junior-разработчик, чтобы получить должность или удержаться на уже «завоёванной» позиции?
Джун — это уже пусть и младший, но специалист. Подразумевается, что он самостоятельно умеет писать код, может справиться с простыми задачами сам, а со средними по сложности задачами — под присмотром ментора.
Кто-то говорит, что требования завышены, и в 2020 году младший программист должен знать то, что знал Middle в нулевых. Кто-то парирует аргументами о росте конкуренции, сложности задач и, соответственно, требований.
Что касается технических требований к джунам, то в последние годы они действительно выросли. Профессия программиста стала доступнее из-за курсов, и рынок переполнился начинающими разработчиками. Поэтому компании начали выставлять определённые требования, чтобы найти из общей массы тех, кто лучше других.
Например, теперь на позицию начинающего front-end разработчика недостаточно просто знать JavaScript, HTML5/CSS3: нужны базовые знания одного из популярных фреймворков (React, Vue, Angular). Кажется, что со временем требования будут расти ещё сильнее.
Мы разобрались, что должен знать Junior-программист в 2020 году, и собрали общие вопросы с собеседований, по которым работодатели определяют, дотягивает кандидат до нужной планки или нет.
Hard skills
Почему вы выбрали этот язык программирования?
Вопрос нехитрый, но джун должен хорошо понимать, где лучше использовать один язык, а где отдать предпочтение другому, какие у выбранного языка сильные и слабые стороны.
Где проходили обучение, участвовали ли в реальных проектах?
В Galileosky мы всегда обращаем внимание на следующие моменты:
- опыт некоммерческих проектов, в основном небольших проектов, реализованных в рамках обучения;
- Pet-проекты, база работ на GitHub (само наличие проектов + качество кода);
- участие в хакатонах и конкурсах (особенно победы);
- посещение профильных мероприятий: митапов, конференций, лекций;
- сертификаты об окончании курсов или изучения технологий и пр.
Назовите принципы ООП
Старо как мир, но всё так же актуально. Держите шпаргалку по принципам ООП: там всё разложено по полочкам. Если вы хорошо разбираетесь в ООП, можете рассказать о своём опыте их применения на практике. Идеально, если вы также расскажете, почему те или иные принципы не стоит применять в некоторых ситуациях.
Какие алгоритмы сортировки вы знаете? Напишите код с использованием быстрой сортировки.
Ох уж эти алгоритмы сортировки — понять бы, где они пригодятся в реальной жизни. А зачем вообще Junior-разработчику это знать? Тут всё просто: понимание принципов и гибкость мышления. Опять же, с помощью небольшого примера вы покажете, что владеете синтаксисом языка и умеете объяснять, что происходит в вашем коде.
Какие технологии вы знаете?
Для работы на реальном проекте мало знать сам язык программирования. Младшему разработчику необходим большой багаж знаний. Если мы рассматриваем разработчика на Java, кроме самого языка, необходимо иметь хотя бы начальные знания о Spring, базах данных, SQL, системах контроля версий. Это не означает глубокое изучение всех аспектов, но представление о работе с этими технологиями быть должно, даже если нет реальной практики. Зачастую разница между Middle- и Junior-разработчиком — это реальный опыт.
Если говорить о знании конкретных технологий, от начинающего разработчика требуется опыт разработки на каком-то классическом языке программирования со строгой типизацией — подойдёт Java, C++, C#. При этом не так важно, на каком языке программирования придётся писать в будущем: синтаксис языка выучить легко, а вот понимание, что «можно» делать, а чего «нельзя» — нет.
Расскажите, с какими IDE вы работали
Достаточно назвать одну, но хорошо в ней разбираться: какие редакции есть, как подключить библиотеку к проекту, чем выбранная среда разработки лучше других, какие плагины вы использовали, etc. Это то, что должен знать Junior-разработчик.
Есть ли опыт работы с базами данных? Сколько нормальных форм вы знаете и чем они отличаются?
Знать, как обращаться к БД, нужно, а вот что касается нормальных форм — это, скорее, плюс, чем необходимость. Будет хорошо, если вы назовёте СУБД, с которыми работали, обозначите их ключевые особенности.
Также к навыкам стоит добавить SQL. Да, на SQL сейчас никто не пишет, но без SQL невозможно понимание логики работы СУБД.
У вас был свой проект? В чём заключалась задача и как вы её решали?
Чтобы стать Junior-разработчиком, нужно знать теорию и применять её на практике. Разумеется, вы как джун уже должны были что-то писать, будь то на курсах или для себя. Перед собеседованием стоит разобрать один из самых сложных проектов, вспомнить, какие проблемы возникали в процессе работы над ним, и как вы их решали.
Какие методологии создания продукта вы знаете? Назовите несколько принципов Agile
Да, вам стоит почитать об Agile. Даже если вы твёрдо уверены, что никогда не столкнётесь с командной разработкой, поверьте — столкнётесь. Это не то, что обязательно знать Junior-разработчику, но будет плюсом, если вы разбираетесь.
Есть ли опыт работы с Git? Какой веб-сервис для хостинга проектов вы используете?
Неважно, GitHub это, GitLab или BitBucket. Интервьюера интересует главное — разбираетесь ли вы в системе контроля версий.
Также вас могут попросить решить несколько несложных задач
Минимальный испытательный набор состоит из трёх тестов.
Во-первых, оценивается логическое мышление соискателя. Для этого человеку дают несколько достаточно простых задач, которые позволяют проверить, может ли кандидат выполнить обобщение или сделать выводы из поступившей информации.
Во-вторых, смотрят, как кандидат усваивает информацию, как работает его внимание и память. Обычно перед разработчиком ставится задача из 5–6 вводных пунктов, после чего идёт обсуждение её решения. Кандидат должен резюмировать задачу, описать своё решение, а затем сделать выводы.
В-третьих, по косвенным признакам, оценивается коммуникабельность кандидата — развитие его речевых навыков и способность работать в команде. Часто от соискателей на Junior-позицию требуется проактивность (её оценят, предложив несколько «поведенческих» задач) и скорость мышления.
Soft skills
Вы командный игрок?
Коммуникативные навыки — одни из важнейших, и даже если вы разработчик-одиночка, акцентируйте внимание на том, что вы с удовольствием приобщитесь к командной работе.
Даже опытные разработчики могут ошибиться с оценкой сроков, но они знают, как с этим быть — сразу сообщают менеджеру, обращаются за помощью к коллегам. Джуниор с неразвитыми soft skills промолчит и будет пытаться решить вопрос самостоятельно, в результате ничего толком не сделает и только потратит время.
В удалённой работе гораздо большую роль начинают играть soft skills. Гибкие навыки — это не только умение общаться с коллегами, но и банальное уважение к коллегам, к примеру, в чатах — когда ты отмечаешь коллегу, дублируешь сообщение, которое могло потеряться, и закрепляешь важные ссылки на самом верху.
IT-сфера изменчива, постоянно появляются новые технологии. Готовы ли вы всё время учиться?
Все понимают, что у младшего разработчика нет большого опыта и, скорее всего, нет глубоких знаний фреймворков. Поэтому на собеседовании больше внимания уделяется его soft skills: насколько разработчик мотивирован, готов ли он обучаться.
Каков ваш уровень английского языка?
Для нас, в EPAM, важным фактором является также уровень английского языка — не ниже Intermediate, поскольку после обучения можно попасть на проект с распределённой командой, с разработчиками из других стран.
Кроме того, аутсорсинговые компании зачастую работают с иностранными заказчиками, организовывают с ними встречи и созвоны. И вообще, читать и писать документацию стоит на английском, да и на Stack Overflow лежит всё, что нужно знать Junior-разработчику. Поэтому перед собеседованием обязательно подтяните английский язык.
Умеете ли вы справляться со стрессом?
Часто младший разработчик сталкивается с трудностями, на которые он тратит много сил и времени из-за отсутствия опыта. Поэтому просто необходимо уметь понижать свой уровень стресса, когда это требуется, иначе обучение затянется.
Если возникла проблема, как вы будете её решать?
Это больше вопрос на самостоятельность, нежели на способы решения.
Хочется поделиться советом: прежде чем идти к более опытным коллегам с вопросом, постарайтесь сами разобраться в проблеме. Во всех командах очень ценится, когда человек подходит не просто с вопросом «А как это сделать?», а уже обладает какой-то информацией, прикинул варианты решения и обращается за советом, как решить проблему правильнее.
Можете ли вы оценить время выполнения задачи?
Да, это то, что должен уметь Junior-разработчик уже с кое-каким опытом, но на стадии обучения вы должны были получить хотя бы базовый навык оценки сроков.
У нас сотрудники работают удалённо. Поэтому важно грамотно распределять время для решения задач, уметь сосредотачиваться, оценивать сроки и соблюдать их.
Что должен знать Junior-разработчик? Отвечают эксперты
заместитель генерального директора SimbirSoft
Говоря о необходимых навыках, сразу важно прочертить границу между джуном и стажёром, поскольку эти роли достаточно часто путают.
Стажёр — человек, который только учится, часто он не имеет опыта разработки. Со стажёрами мы в компании чаще всего имеем дело на наших стажировках, которые мы в разных форматах организовываем с 2012 года. Как правило, значительная часть их аудитории — это студенты без опыта работы. Конечно, если стажёр хорошо себя показывает, мы можем пригласить его на собеседование, а по итогам собеседования даже взять его в компанию, если есть надежда, что он за пару месяцев выйдет на уровень джуна. Но далеко не все стажёры так быстро дорастают до этого.
17–19 декабря, Онлайн, Беcплатно
Тем временем джун — это уже пусть и младший, но специалист. Подразумевается, что он самостоятельно умеет писать код, может справиться с простыми задачами сам, а со средними по сложности задачами — под присмотром ментора. Соответственно, такой специалист обязан обладать уверенными знаниями как минимум одного языка и фреймворка. Да, его знания, скорее всего, не будут глубокими, но он должен знать основы. Значительная часть сил джуна уходит на освоение нового. Ведь чтобы стать мидлом и выйти на новый уровень оплаты своего труда, джуну придётся освоить несколько фреймворков пусть и поверхностно, глубоко изучить как минимум один фреймворк, возможно, подготовиться и сдать экзамен по сертификации, получить опыт в разных проектах. Соответственно, важнейшими soft skills для джуна (да и для любого ИТ-специалиста вообще) будут навыки самообучения, навыки и опыт решения любых проблем, самодисциплина и мотивация к обучению.
Если рассматривать hard skills, то, наверное, нужно упомянуть такие профессиональные навыки, как умение искать информацию в поисковых системах, знание средств коллективной разработки (Git и другие), знание IDE, языка и фреймворка.
Завышены ли требования к джунам? Уверен, нет. Всё проясняется, если разделить понятия стажёр и джун и рассматривать джунов, как младших специалистов, а не просто тех, кто начал учиться.
руководитель программ «Python-разработчик» и «Алгоритмы для разработчиков» в Яндекс.Практикуме
Junior-разработчику, как в принципе и любому специалисту в сфере ИТ, важны такие качества, как ответственность, стремление к профессиональному росту, умение управлять рабочим временем и работать в команде. Кроме того, от начинающих разработчиков дополнительно ждут умения быстро осваивать новый материал и вникать в суть задач.
Требования к hard skills будут зависеть от направления. Например, мы уже подробно рассказывали, что работодатели ждут от Junior-Python-разработчика. Для таких специалистов это чаще всего знание языка программирования Python, алгоритмов и структур данных, опыт работы с базами данных и фреймворками.
Современные требования к Junior-разработчикам не кажутся мне завышенными. Во-первых, требования очень отличаются от компании к компании. Нужно также иметь в виду, что в описании вакансий обычно пишут портрет идеального соискателя, на деле же готовы брать кандидатов не со всеми перечисленными навыками. Во-вторых, большинство работодателей понимают, что любого джуниор-специалиста придётся учить, поэтому хотят от кандидатов в первую очередь бойкости и заинтересованности.
В технических навыках обычно требуется наличие какого-то (хотя бы учебного) опыта программирования, знакомство с основными инструментами, умение решать типовые задачи. Для получения даже этих навыков придётся постараться. Разработка имеет относительно высокий порог входа по сравнению с другими ИТ-профессиями, но планка по найму в последние годы, скорее, снижалась, чем наоборот.
руководитель отдела разработки Аванпост
По нашему опыту в последние годы требования к Junior-разработчикам у нетоповых компаний снизились. Связано это с кадровым голодом, вызванным, с одной стороны, ростом рынка, с другой, демографическим провалом девяностых–начала 2000-х.
В целом для джуна, планирующего работать в прикладной разработке, требования можно определить следующим образом:
Основные хард-скиллы:
- Знать синтаксис языка, на котором предстоит работать.
- Знать основу стандартной библиотеки языка и представлять её структуру в целом.
- Понимать принципы работы технологической платформы и среды исполнения (например jvm).
Дополнительные хард-скиллы:
- Понимать принципы работы реляционных СУБД, иметь навыки работы с ними.
- Знать основы веб-разработки.
- Понимать, как в целом устроен мир: как работает сетевое взаимодействие, какая инфраструктура существует в интернет- и корпоративных сетях, понимать отличия парадигм программирования, скриптовых языков от компилируемых и т. д.
Практические навыки:
- Уметь решать простые прикладные задачи, т. е. применять знания, перечисленные выше, с пользой.
Софт-скиллы:
- Умение слушать, воспринимать постановку задач и пояснения, не упускать детали, но и не зацикливаться на них.
- Способность и желание обучаться в процессе работы.
- Умение задавать вопросы и в целом формулировать мысли.
- Любознательность и стремление к развитию.
- Ответственность.
Как правило, у всех ребят, приходящих к нам на собеседование, всё в порядке с основными хард-скиллами, учитывая, что они предварительно проверяются простейшим тестовым заданием.
Большинство же отклонений по результатам собеседования происходит по причине отсутствия практических навыков или критичных софт-скиллов, таких, как умение слушать.
Это не самые высокие требования: могу с уверенностью сказать, что 10-15 лет назад требования были значительно серьезней. Отрасль была менее лояльной к новичкам, готовность брать на работу, платить не самую низкую зарплату и учить была у единиц компаний. Сейчас же все, даже самые небольшие софтверные и не только компании, готовы вкладываться в обучение вчерашних студентов, несмотря на все сопутствующие риски. Всё, что нужно джуну сегодня, — общая адекватность и минимальные знания технологий.
Выводы
Мнения насчёт того, завышены требования к джунам или нет, очень разнятся. Но практически все эксперты сходятся в том, что Junior-разработчик должен знать о преимуществах и сферах применения выбранного языка или технологии, уметь работать с Git, знать основные алгоритмы, библиотеки и фреймворки в своей сфере, быть в курсе возможностей хотя бы одной IDE, знать английский не ниже уровня Intermediate и уметь работать в команде.
Источник