К концу августа у меня был первый рабочий день. Поскольку я никогда ранее не работал, не знал, что меня ждёт, какие задачи придётся делать. Очень сильно волновался. Как позже оказалось, зря.
Мне повезло с проектом. Не было технологии, которых я не щупал в своих пет проектах и не смог бы с ними разобраться, кроме RabbitMQ. Таска за таской. День за днём я становился всё увереннее и увереннее. Удивлялся, почему меня не хотели брать за хлеб с маслом, но взяли за баснословные для меня деньги. В чем смысл? Я мог делать те же самые вещи, только на меня не тратили бы столько ресурсов.
Самое сложное, с чем я столкнулся — это необходимость разбираться в чужом коде, в хитросплетениях сервисов и взаимодействиях старой кодовой базы. В остальном я не делал ничего такого, чего бы не делал в каких-то своих пет проектах. Те же самые задачи, только в крупном масштабе. Взять информацию с одного источника, обработать её и передать в другое место.
Стоит упомянуть, что у меня были более опытные товарищи - разработчики, с которыми я советовался и которые помогали мне в каких-то трудных моментах и вопросах. Если у вас нет таких товарищей, вам придётся тяжко.
Вот так мало по малу я работал 3 месяца и сегодня закончился мой испытательный срок. Руководство положительно отозвалось о моей работе и сообщило, что будет радо продолжить сотрудничество со мной, чему я абсолютно рад и взаимен.
Решил написать свою честную историю. Вдруг среди вас есть такой же старательный бедняга, которому несправедливо перерезали путь к мечте. Удачи всем хорошим людям. Надеюсь, вы достигните заслуженного успеха.
Ниже напишу несколько советов в общем для любых направлений и, в частности, для Java разработчиков.
Общие советы:
1. Прежде чем вступать на тёмную тропу, если у вас в городе есть ИТ компаний, обязательно попробуйте устроиться по-честному. Идите туда ногами, с хорошей подготовкой и требуйте, чтоб вас выслушали и дали вам шанс показать себя. Работягам, у которых в городе нет ИТ компаний и у которых нет возможности переехать, с уверенностью могу посоветовать сразу же начинать поиск работы с тёмной тропы, потому что джуны/стажеры дистанционно никому не сдались.
2. Не идите через этот путь, не проверив себя. Найдите более опытного товарища, желательно действующего программиста. Попросите его, чтобы проверил вас ваши скилы, попросите дать вам сложную задачу/пет проект, либо сами найдите в интернете тестовые задания и показывайте свои реализации опытным товарищам.
3. Не идите через этот путь, пока вы не научились гуглить, вы должны уметь решать 80% проблем самостоятельно, через гуглинг.
Советы для Java разработчиков:
1. Не спешите, уделите достаточно времени обучению Java, НЕ СКИПАЙТЕ StreamAPI, отсутствие нужных знаний в нём очень мне повредило.
2. Уделите достаточно времени SQL, вы должны уметь делать запросы средней сложности и понимать базовые принципы.
3. Делайте много практических заданий/пет проектов, особенно когда изучите на базовом уровне 4 столпа Java разработчика: Java, Spring Boot, Jpa/Hibernate, SQL.
4. Обязательно изучите Docker, хотя бы на базовом уровне.
5. Будет вообще замечательно, если вы пощупаете Kafka или RabbitMq, чего я в своё время не сделал, а надо бы.
6. Для Java разработчиков есть куча подготовительных материалов к собеседованию в интернете, используйте по максимуму.
7. Смотрите мок собесы Сулейманова и Jetbulb.
8. Не добавляйте слишком много циферок в опыт, если думаете, что не осилите.
9. Не говорите на собеседовании того, чего не знаете, если вас спрашивают, работали ли вы с Кафкой, говорите фразы по типу: «На базовом уровне Кафку изучал, знаю *такие-то* и *такие-то* вещи про неё (если знаете), но как таковых задач с ней на прошлом проекте не было. Изучить её более подробно и выполнять задачи, связанные с ней, не будет для меня проблемой».
11. Когда попадёте на работу, достаньте всех, но сделайте так, чтобы вы смогли запустить рабочий проект у себя локально, для проверки своего функционала и дебагинга.
12. Готовьтесь к тому, что вам может попасться гораздо более сложный проект чем мне или кому-нибудь еще. Тут всё очень рандомно.
13. Не бойтесь задавать вопросов, связанных с проектом, если не понимаете, где вам нужно внести новый код, не понимаете, что, откуда и куда идёт, идёте и спрашиваете. Воздерживаться стоит только от тех вопросов, которые связаны непосредственно с Java, Spring и т. д. Условно вы устроились как разработчик со стажем, и спрашивать, как смаппить ДТО в Entity — это палево. Такие технические вопросы вы должны задавать Гуглу.
14. Изучите MapStruct.
Вроде всё, больше ничего в голову не идёт.
Напоследок дам информацию о своём пути обучения от начала до конца:
1) Первые 200 страниц книги "Руководство для начинающих". После двухсотой страницы трудно было усваивать информацию. У меня вообще сложилось мнение, что книги для новичков - не лучший источник информации. -> https://vk.com/wall-16108331_92413
2) Курс «Java для начинающих» на YouTube, канал alishev (free) -> https://youtube.com/playlist?list=PLAma_mKffTOSUkXp26rgdnC0PicnmnDak
3) Практический курс «Практика для начинающих» от Наиля Алишева (pay) -> https://java-marathon.tilda.ws/
4) Курс «Продвинутая Java» от Наиля Алишева (pay) -> https://www.udemy.com/course/javarussia/
5) Практический курс «Интерактивный тренажер по SQL» от Галины Озеровой (free) -> https://stepik.org/course/63054/info
6) Курс «Spring для начинающих» от Заура Трегулова (pay) -> https://www.udemy.com/course/spring-framework/
7) Docker учил методом тыка, брал какой-то dockerfile или docker-compose в интернете или у товарищей, пытался исследовать что делает каждая настройка в этих файлах.
Параллельно со всей это теорией я пытался практиковаться по максимуму. Особенно после курса по Spring. В общей сложности сделал около 15 пет проектов разной сложности.
Список полезным программ и инструментов для Java разработчика:
1) Github Desktop - очень удобный инструмент для ведения Git. Всё интуитивно понятно, красивый интерфейс для тех, кому впадлу разбираться в консоли.
2) HeidiSQL – удобный инструмент для управления БД SQL, использую для экспорта данных с прода на локальную БД.
3) Плагин JPA Buddy для IntelliJ IDEA – очень хороший помощник при работе с JPA/Hibernate.
4) draw.io – лучший в своём роде инструмент для составления каких-либо схем, можно использовать как инструмент для иллюстрации работы своей работы в приложении.
5) Sublime Text – замечательный инструмент для работы с любыми текстовыми файлами.