Привет! Меня зовут Игорь Честнов, я автор на курсе «Мидл java-разработчик» в Яндекс Практикуме. В статье расскажу, каких навыков и компетенций работодатели ждут от java-разработчиков среднего уровня. А ещё приведу список полезных ресурсов, которые помогут джунам продвинуться в карьере.
Мидл java-разработчику необходимо обладать большим количеством профессиональных навыков и уметь работать с конкретными инструментами. И конечно, не стоит забывать про софтскилы — без них вырасти вряд ли получится. В статье я постараюсь всё это структурировать и разложить по полочкам — ведь на самом деле карьерный путь разработчика совсем не страшный и очень интересный.
Коротко о профессии java-разработчик
Java-разработчик создаёт, поддерживает и улучшает программное обеспечение. Направлений в java-разработке много — и для каждого требуется знание своего набора инструментов и технологий. Перечислю основные направления:
Бэкенд-разработка. Этому направлению как раз посвящён курс «Мидл java-разработчик».
Мобильная разработка — правда, тут предпочтение часто отдаётся языку программирования Kotlin.
Десктопные приложения. Редакторы Intellij, например, написаны на Java.
Поисковые задачи с Big Data.
С профессией java-разработчика разобрались. Теперь расскажу, кто такой мидл-специалист и какой скилсет (набор навыков) ему пригодится.
Кто такой мидл-специалист
Мидл (от англ. middle) — это профессионал среднего уровня квалификации, который может представить работодателю крепкое портфолио из реальных проектов, а опыт работы такого специалиста обычно — 2–4 года.
От джуниора мидл отличается тем, что у него больше самостоятельности, ответственности, более глубокие технические знания, лучше понимание бизнес-процессов и процессов в команде разработки. У мидла меньше архитектурной ответственности, чем у синьора. Мидл не принимает стратегических решений, у него меньше менеджерских задач — таких как планирование, хотя участие в нём специалист принимает. Мидл больше сфокусирован на выполнении, чем на организации.
Скилсет java-разработчика уровня мидл
Хардскилы | Софтскилы |
✅Языки программирования. Отличное знание Java Core и Java Concurrency. Понимание объектно-ориентированного программирования, знание особенностей при работе с ним в Java. | ✅Понимание бизнес-процессов. Сюда относится оценка рисков и последствий, работа со стейкхолдерами. |
✅Фреймворки. Например, Spring Framework — это большая экосистема различных компонент. Обязательные — Spring Core, Spring Web, Spring Security, Spring Boot. В современной разработке активно используются компоненты Spring Cloud, знание их также будет плюсом. | ✅Самостоятельность. Работа без контроля, навык находить и исправлять проблемы, самостоятельно принимать решения и оценивать задачи, управлять своим временем. |
✅Базы данных. Например — PostgreSQL. Различные принципы и протоколы общения — rest, http, grpc. Принципы асинхронного взаимодействия — jms, kafka. | ✅Развитые навыки коммуникации. Работа в команде — в том числе с коллегами, которые не погружены в технологии. Иногда придётся объяснять сложные технические вещи простым языком. Не стоит забывать про умение давать и принимать обратную связь, а ещё мидлу точно придётся помогать младшим разработчикам: отвечать на вопросы и терпеливо объяснять одно и то же по несколько раз. |
✅Вспомогательные инструменты. Например, git, системы сборки — maven, gradle. | ✅Умение логически рассуждать. И как следствие — аргументировать и защищать свои идеи. |
✅Коллекции — как устроены, чем отличаются. Например, необходимо понимание, как использовать правильный контейнер, чтобы вместо квадратичной сложности получить логарифмическую. | ✅Проактивность. Умение отслеживать проблемы, формулировать их, задавать вопросы и предлагать решения. |
✅Желание и умение быстро погружаться в новые технологии. Сфера меняется очень быстро, постоянно появляются новые инструменты, которые нужно осваивать и внедрять. |
Что делать джуну, чтобы вырасти до мидла
Несколько советов для тех, кто хочет развиваться в профессии:
Не забывайте про практику. Например, вы можете делать pet-проекты. Это проекты, которые специалист самостоятельно придумывает и делает, чтобы набраться опыта, разобраться в каких-то технологиях и инструментах. Наличие таких проектов означает, что разработчик готов проявлять инициативу в работе и заинтересован в профессиональном росте, — работодатель обязательно обратит на это внимание.
При изучении новых технологий важно концентрироваться не только на теории, но и на том, как она работает. Пробуйте внедрять полученные знания в работу — например, в те же самые пет-проекты. Например, вы можете написать собственный HTTP-сервер: пусть ценности в этом немного, но это поможет глубже погрузиться в технологию. К тому же это повысит навык чтения спецификаций, а также умение правильно их интерпретировать.
Пользуйтесь дорожными картами. Роадмэп специалиста — это план, который показывает путь к какой-то цели: например, вырасти в профессии и перейти на следующий грейд. Подходящую дорожную карту можно найти или составить на roadmap.sh. Роадмэп поможет структурировать карьерный путь, понять, каких навыков и компетенций не хватает именно вам и какие технологии стоит изучить в первую очередь, чтобы перейти на следующий грейд.
Изучайте тренды в мире разработки. Для этого можно читать статьи — например, на Хабр, Baeldung — и смотреть записи с конференций — например, Joker, Jpoint. Сфера меняется стремительно, поэтому изучение трендов позволит вам всегда быть на коне.
Смотрите записи mock-собеседований и ходите на реальные интервью. Это демонстрационные собеседования, которые имитируют реальные: эксперт задаёт вопросы соискателю-волонтёру, а в конце даёт фидбек. Просмотр mock-собеседований помогает понять, о чём могут спросить, и лучше подготовиться к настоящему интервью.
Ещё один лайфхак — ходить на настоящие собеседования. Главное — морально подготовиться к тому, что первое время вы будете получать отказы. Относитесь к этому как к опыту. Прохождение собеседований помогает оставаться в курсе ситуации на рынке и, как бонус, проработать страх отказов.
Пользуйтесь помощью наставников. Это может быть как личный ментор, так и ваш руководитель на текущем месте работы. Будьте готовы к тому, что подходящего ментора придётся поискать — чтобы случился мэтч, это как поиск психотерапевта. Если в качестве ментора выступает ваш руководитель, попросите его давать вам более сложные задачи, не бойтесь задавать вопросы в процессе их решения и запрашивать обратную связь.
Полезные материалы
Цикл видео про Spring от Евгения Борисова и Кирилла Толкачева — база, которую должны знать все: «Spring-потрошитель (часть 1)», «Spring-потрошитель (часть 2)», «Spring-построитель», «Boot yourself/Spring is coming (часть 1)», «Boot yourself/Spring is coming (часть 2)», «Spring Patterns».
Лекции Тагира Валеева. Например, «Программирование на Java», «Многопоточность в Java».
Лекции Алексея Шипилёва. Например, «Java-объекты наизнанку», «Перформанс: Что В Имени Тебе Моём?», «Shenandoah GC 2.0 (часть 1)», «Shenandoah GC 2.0 (часть 2)».
Обзорные статьи. Например, на Baeldung или Хабр.
Гайды. Например, на Spring Learn. Тут собраны маленькие статьи на разные темы, начиная от Hello World и заканчивая Spring Cloud.
Сервисы с онлайн-туториалами. Например, Java Tutorial от W3Schools — сервис с тренажёрами по разным языкам, в том числе по Java.
Телеграм-каналы. Например, Java_Developer, Javaproglib.
Сообщества. Например, Learnjava и Learnprogramming.
Книги
Spring in Action. Автор: К. Уоллс.
Spring Security in Action. Автор: Л. Спилка.
Spring Boot in Action. Автор: К. Уоллс.
Spring 5 Design Patterns. Автор: Дж. Раджпут.
Изучаем Java. Авторы: Кэти Сьерра, Берт Бэйтс.
Java. Полное руководство. Автор: Герберт Шилдт.
Современный язык Java. Лямбды, потоки и функциональное программирование. Авторы: Рауль-Габриэль Урма, Марио Фуско, Алан Майкрофт.
Структуры данных и алгоритмы в Java. Автор: Роберт Лафоре.
Java Concurrency на практике. Автор: Брайан Гётц.
