![](https://habrastorage.org/getpro/habr/upload_files/bac/42d/f5c/bac42df5c935b29e281a6f799cfb8d89.png)
Всем привет! Меня зовут Егор, я стажёр backend-разработчик в зарплатном проекте Росбанка (он же Payroll). В этой статье я расскажу про путь становления от «зеленого» стажера до боевой единицы в команде: через что мне пришлось пройти, с какими трудностями я столкнулся и как прокачал свои скилы.
Как я попал на стажировку?
Год назад я закончил курсы по разработке на Java. Курсы были неплохими, но проблема в том, что на сегодняшний день нельзя просто закончить курсы или посмотреть 5-6 видео по программированию, чтобы считать себя крутым джуном. Тем не менее, курсы дали мне неплохую базу: Java Core, Spring Framework, Spring Boot, JUnit, Spring JPA, PostgreSQL, работа с Рostman, Docker и некоторые другие технологии. Но с точки зрения объёма материала и более глубокого изучения технологий курсы, конечно же, не дают те знания, которыми может и должен обладать младший специалист, всё приходилось добирать самому.
Закончив курсы, я начал повторять базу и параллельно искал стажировку. Получал отказы от компаний, но не сдавался. И однажды мой знакомый из Росбанка закинул моё резюме. Меня пригласили на собеседование, где присутствовали product manager, техлид команды и мой потенциальный ментор (опытный java разработчик). Были стандартные вопросы про Java Core, Spring, пару вопросов про базы данных, REST и небольшая задачка. Отвечал я неплохо, как мне казалось. Но если бы я посмотрел на эти ответы сейчас, было бы очень стыдно.
Спустя 2 дня после собеседования мне позвонили и сказали, что готовы взять меня на стажировку, однако надо подтянуть базу, ибо она сильно хромала. Отдельно хочу отметить то, что меня похвалили за soft skills, и я считаю, что это тоже важные навыки наравне с hard skills.
Начало стажировки
Прежде всего, хочу выразить огромную благодарность моим наставникам за то, что давали дельные советы, поддерживали и направляли меня к изучению нужных технологий.
Как я уже сказал ранее, для начала мне надо было подтянуть базу, и этим я занимался с моими наставниками около 2 месяцев.
По началу мы созванивались раз в неделю, где общались на определенные темы и решали задачи. Сначала ментор спрашивал, что я изучил и какие были вопросы по задаче. Далее разбирали задачу и обсуждали то, что надо подготовить к следующей встрече. Например, мы обсуждали Java Core, чем сравнение объектов через equals отличается от «==», как работать с дженериками и многое другое.
После первой же встречи с техлидом и ментором в рамках стажировки моё восприятие жизни разработчика изменилось. Я действительно осознал, что важно постоянство. Каждый день я повторял основы Java, читал различные статьи про Spring, PostgreSQL и так далее.
Спустя пару встреч мы решили, что мне нужно написать пет-проект: маленькое Spring Boot приложение с парой rest-ручек, где также используется PostgreSQL, и выполнить миграцию БД с помощью Flyway. Повторив основы, я столкнулся с новыми определениями в рамках миграций БД. Ранее с этим я никогда не работал.
Казалось, что помощь сеньоров тоже является обязательной частью стажировки. Но со временем я понял, что суть стажировки не в том, чтобы тебе дали всё готовое на блюдечке или сказали что, куда и как написать, а в том, чтобы стажёр самостоятельно изучил материал, сам работал с проектом. Конечно, здорово, когда ты можешь обращаться за советом к опытным разработчикам, чтобы они тебе помогли и чуть ли не все тебе рассказали (чего греха таить, я сам пару раз так делал). Но это так не работает и не должно работать. Здесь важна самостоятельность, ведь не может быть так, чтобы какой-нибудь middle-разработчик приходил к сеньору и просил полностью за него сделать задачу, объяснить, как писать код и тд.
И вот когда стажёр начинает самостоятельно изучать новые технологии, читает документацию и различные статьи, он начинает расти.
Включение в команду
После того как я закрепил основы, изучил пару новых технологий, меня подключили к команде.
Теперь я должен был каждый день созваниваться с командой на дейли и грумингах, чтобы обсуждать различные задачи, синхронизировать работу всей команды и оценить новые задачи.
В первые же дни я получил свою задачу. Нужно было прогнать Flyway-скрипт. Задача была несложная. Мне ее дали, чтоб я понял, как устроены процессы в команде, как работать с общим репозиторием и т. д. Ощущения после выполнения такой маленькой задачки были прекрасны: начинаешь думать, что приносишь команде пользу, и чувствуешь, что стал лучше.
Конечно, это все так, но только отчасти. Для новых задач нужно изучать новые технологии, общаться с аналитиками, анализировать и оценивать задачи. Поначалу было тяжело: пока разберешься с архитектурой приложения, пока изучишь технологию и созвонишься с аналитиком, уже пройдет неделя, а это половина спринта. Надо бы задачи уже выполнять. В такие моменты начинаешь загонять себя, думаешь, что уже не так эффективен, мешаешь команде и вообще делаешь недостаточно. И тут на помощь приходит, как неудивительно, сама команда.
Например, когда мне дали одну из моих первых задач, я ее реализовал и влил в общую ветку. Спустя пару часов мне пишет тестировщик и говорит, что есть баг в этой задаче. У меня была небольшая паника из-за непонимания, как действовать далее. Мы созвонились, начали обсуждать процесс, и я ничего не понял. Мы решили подключить к встрече одного из аналитиков. Я предвкушал, что будет некое осуждение с их стороны из-за того, что я не до конца разобрался в задаче и не понял, что от меня требуют. Но нет, коллеги указали мне, в каком месте может быть ошибка, каким по итогу должен быть процесс и, конечно же, поддержали.
Здесь все сплочены общей целью – делать наш продукт лучше. Это значит, что нужно помогать друг другу. Опытные специалисты понимают, что у стажеров ещё нет нужного бэкграунда и знаний для определенных задач. Однако никто тебя не обвиняет в этом, а, наоборот, стараются помочь тебе.
Какой стек был необходим
Работа с продуктом – это уже не пет-проект. Тут большая и сложная архитектура приложения, которую нужно понять. Менторы сразу сказали, с чего мне начать. Так как на дворе 2024 год, кругом микросервисы, то надо ознакомиться с принципами их разработки. Для Java-разработчика основой в разработке микросервисов служат Spring, Kafka, Docker и многое другое. Полтора месяца я изучал Spring Cloud и его плюшки (Spring Cloud Gateway, Spring Cloud Config, Spring Cloud Security, Spring Cloud OpenFeign и другое) для понимания работы наших микросервисов. Также не стоит забывать про Spring Security – тоже важная технология, без знаний которой сложно представить себе современную разработку на Java.
Нельзя не упомянуть про умение работать с Docker, Kafka, Openshift, Git и Swagger. Понимание основ этих технологий и работа с ними делают из стажера уже полноценного разработчика, который сможет реализовать большинство задач. С каждой новой задачей ты практикуешь работу с этими инструментами, что бывает тяжело, но безумно интересно, и порой приходится отстаивать свои решения.
Например, мне дали задачу по выполнению миграции БД, когда я только вливался в команду. Мне надо было в своей локальной ветке прогнать скрипт, который добавлял новое поле в общую БД на тестовом стенде, но параллельно с этим, кто-то из разработчиков влил свои изменения в общую ветку. И образовалась проблема: проект требовал от меня выполнения той миграции, которой у меня пока не было. Я долго думал, что проблема в локальных настройках Flyway, что не до конца разобрался с технологией, однако надо было всего лишь добавить изменения из общей ветки к себе (сделать rebase, проще говоря).
Так потихоньку и появляется ценность тебя как разработчика в команде.
Что дальше?
Конечно же, нельзя останавливаться на достигнутом. Надо больше погружаться в проект, брать больше важных задач, изучать новые технологии. Проще говоря, надо развиваться. И, к счастью, у стажеров всё для этого есть:
Различные ресурсы, где можно программировать различные задачи по типу LeetCode, Codewars и CodeRun;
Миллион видео на YouTube на различные темы: от Bean Injection в Spring Framework до практик по написанию своего шедуллера с использованием стороннего API;
Куча статей на Хабре и решений проблем на StackOverflow;
И, конечно же, прекрасная команда, которая поможет в трудную минуту.
Возможностей море. Самое главное – не бояться и идти только вперёд! Интересно было бы узнать, как вы проходили свой путь из стажера в джуны и так далее. С радостью обсужу это в комментариях.