![](https://habrastorage.org/getpro/habr/upload_files/bf1/93f/62d/bf193f62d0cabaf4636759882acdee71.png)
Привет! Хочу поделиться своим опытом становления Java разработчиком.
Немного об авторе: на момент написания статьи мне 36 лет, в ИТ-сфере — с 2009 года и начинал я с системного администрирования продуктов Microsoft(сервера, БД, приложения) в компании АО «Национальный центр вертолётостроения им.М.Л.Миля и Н.И.Камова».
Программирования в моей работе не было, из отдалённо схожего могу отметить владение разве что скриптовыми языками типа PowerShell, Bat, vbs, которые активно использовал при работе с системой управления ИТ-инфраструктурой MS System Center Configuration manager (теперь Endpoint).
Работал я довольно эффективно и за 11 лет успел побывать и руководителем отдела, и заместителем начальника службы ИТ.
Профильное образование «Прикладная информатика» я получил только в 2017 году, зато во время работы в АО «НЦВ им.М.Л.Миля и Н.И.Камова» успел пройти более 20 курсов по вышеуказанным продуктам и не только.
Мысли стать программистом начали посещать году в 2018, но постоянное повышение по карьерной лестнице, вместе с увеличивающейся на глазах зарплатой делали своё дело и оставляли меня в зоне комфорта — так мне тогда казалось.
Довольно быстро пришло осознание, что моя основная работа — это бесконечные совещания и тонна документооборота, при этом по настоящему я испытывал удовольствие только производя программный продукт, приносящий пользу.
В конце 2020 года такое положение дел меня перестало устраивать и я нашёл себе самый «жирный», как мне показалось на тот момент, курс по разработке на языке Java.
Что я нашёл?
Предварительно посмотрел в сторону высшего профессионального образования и выделил следующие плюсы:
-
потенциально хорошая база в смежных предметах;
-
контроль успеваемости и дисциплины;
-
именитые преподаватели с большим опытом;
-
доверие к высшему образованию у HR гораздо выше, как мне тогда казалось.
Что же по минусам? Думаю, они следующие:
-
стоимость обучения в топовых вузах;
-
высочайшая конкуренция в случае поступления на бюджет;
-
наличие смежных предметов, безусловно важных, однако не интересующих меня в связи с нехваткой времени;
-
в основном очный формат;
-
отсталость материала в «средних» вузах
-
длительность программ бакалавриат + магистратура ≈ 5 лет.
Хотел бы я вовремя определиться с вузом и направлением? Определенно да, но что есть, то есть.
На другой чаше весов были курсы, у которых я смотрел программу обучения и отзывы перед принятием решения.
Плюсами в таком способе обучения стали:
-
агрегация всей необходимой информации в одном месте;
-
современные подходы к разработке и инструменты;
-
наличие нескольких весомых пет-проектов в портфолио, демонстрирующие «товар лицом»;
-
низкая стоимость обучения относительно вузовского;
-
динамическое улучшение материалов курса, добавление новых блоков обучения, исправление недочетов;
-
взаимодействие с куратором по каждому домашнему заданию;
-
возможность учиться, когда удобно;
-
пожизненный доступ к курсу, правда без проверки заданий спустя срок, определённый в договоре;
-
карьерная консультация, пусть мне работу так и не успели найти, однако рассказали и показали, что поменять в резюме;
-
вишенкой на торте стало участие в командном проекте под руководством лида(спринты, таски, код ревью).
Из минусов могу отметить:
-
необходимость железной дисциплины —тебя никто не будет подгонять и заставлять учиться;
-
учиться и работать одновременно — довольно не тривиальная задача, при условии, что вы выполняете свою работу качественно;
-
первое время сбивало с толку обилие учебного материала, что не удивительно;
-
в начале запуска курса некоторые материалы не были полностью выпущены или имели недостатки, которые со временем исправили;
-
низкое доверие HR к выпускникам курсов.
Профессия Java разработчик PRO от Skillbox
Этот набор курсов, да, именно набор курсов, сразу захватил моё внимание и после непродолжительного исследования материала я приобрёл их себе.
Первый год я выделял на учебу от 10 до 20 часов в неделю, это были вечерние и ночные часы после работы, и это было очень не просто.
Думаю в первые пол года меня толкал вперед дикий интерес и я почти не замечал усталости, но со временем сместил основное время учёбы на выходные дни чтобы не слишком сильно заигрывать с усталостью.
Важное замечание: если вами не движет интерес и вы не получаете удовольствие от монотонного длительного исследования, то лучше поищите себя в другой профессии. В программировании, особенно на начальных этапах, вы будете засыпать и просыпаться думая, как вам лучше решить ту или иную задачу, а некоторые задачи и вовсе будете решать неделями. Здесь уж без любви и интереса — никак.
В первый год я сконцентрировался на следующих курсах, входящих в программу, и проходил их практически параллельно.
-
Java-разработчик с итоговым проектом – поисковый движок.
-
Java Core. Базовый синтаксис, абстракции, коллекции, исключения, отладка, логирование, функциональное программирование, многопоточка, файлы и сеть;
-
ORM Hibernate, JDBC;
-
протокол Http, REST;
-
Redis, Mongo;
-
Spring Boot и Liquibase;
-
тестирование;
-
оптимизация приложения.
Понравилось: много практических заданий, нарастающая сложность, наличие текстовых шпаргалок по урокам, предельно понятные объяснения, выход за рамки голого Java Core, хороший итоговый проект с использованием forkJoinPool.
Не понравилось: блоку с многопоточкой не хватает реальных кейсов применения.
-
Основы SQL
-
базовые команды, Selec`ты, группировки, Join`ы;
-
немного про индексы и ключи;
-
обзорный урок по Oracle и Postgres.
Понравилось: быстрая база.
Не понравилось: нет практических заданий, почти ничего нет по оптимизации запросов, мало информации по EXPLAIN(а жаль, внезапно на всех собесах их спрашивают)
-
Веб-вёрстка «Базовый уровень»:
-
инструменты разработки;
-
Figma;
-
HTML + CSS;
-
Flexbox;
-
формы;
-
изучение методологии «Блок. Элемент. Модификатор»;
-
адаптивность на мобилке и десктопе;
-
кроссбраузерность;
-
доступность;
-
Bootstrap.
Понравилось: много практических заданий, нарастающая сложность, комплексность подаваемого материала.
Не понравилось: Тут даже придраться не к чему: мне кажется, что многие начинающие веб-разработчики в начале пути так не погружаются в материал. Очень круто.
-
Система контроля версий Git:
-
установка и работа с Git на Windows, Mac, Linux;
-
работа в известных IDE;
-
подключение ssh;
-
командная работа в Git.
Понравилось: всё разжёвано до предела, можно без проблем повторять за ментором, описывают лучшие практики командной работы.
Не понравилось: Тут также сложно до чего-то докопаться.
Изменения, произошедшие со мной за год обучения, и дальнейший план действий
С одной стороны, работа съедала всё больше времени, скорость обучения снизилась и иногда были промежутки без учёбы по несколько недель.
С другой, заряд мотивации и желание вырваться из гнетущей, пусть и финансово стабильной обстановки, не иссякало.
Я распылялся на четыре вышеуказанных курса, смотрел вакансии по моей текущей профессии и прикидывал, на сколько мне хватит накопленных денег.
Чудесным декабрьским днём я принял решение и написал по собственному. Денег по прикидкам мне хватало где-то до сентября – октября 2022. Спойлер – нет 😅.
На момент увольнения я успел:
-
подойти к итоговому проекту «поисковый движок» и изучить большую часть Java Core;
-
полностью закрыть блок с Git и SQL;
-
довести блок «Веб вёрстка. Базовый уровень» почти до самого конца. Как показала реальная работа – правильно, ведь знаний, полученных в ⅘ курса Java разработчику более чем достаточно.
Новый виток обучения
Как я уже говорил ранее, меня уже не сдерживала работа и я очень плотно засел за учебу. Фактически я уделял учебе уже по 8 и более часов в будни, при этом стараясь уделять внимание своей физической форме и развлечениям.
Само собой такой подход вызвал новый сильнейший подъем мотивации и интереса к изучаемому материалу.
Следующие 8 месяцев прошли достаточно продуктивно и я успел:
-
Полностью пройти Java Core.
-
Дописать и защитить проект «Поисковый движок» – Можете заценить код. Онлайн-демо я перестал поддерживать недавно, не вижу смысла платить за выделенный сервер.
-
Пройти большую часть курса «Разработка на Spring Framework». Оценивать я буду обновленный на текущий момент курс:
-
основы Spring Framework;
-
Spring Boot, стартеры, Docker
-
Web, шаблонизаторы, работа с БД
-
REST, Тестирование, Транзакции, AOP, Swagger;
-
Redis, MongoDB;
-
Kafka;
-
WebFlux;
-
Security, в том числе реактивная часть.
Понравилось: каждый модуль — это отдельный проект, есть юнит и интеграционные тесты, подробно описана работа Testcontainers, потрогали Веб-клиенты, посмотрели JOOQ, Транзакции, NoSql DB, Kafka, за реактивщину отдельное спасибо Павлу Вавилову, сделали итоговый проект (бэк – бронирование отелей).
Не понравилось: иногда бывают повторяющиеся склейки видео, что не является особой проблемой. «Разработка на Spring Framework» еще один пример того, как должен выглядеть курс.
-
Начал курс «Алгоритмы и структуры данных для разработчиков»
-
сортировки;
-
бинарный поиск;
-
реализации структур данных(списки, хэш – таблицы, стеки, очереди, куча);
-
рекурсия;
-
жадные алгоритмы;
-
графы;
-
деревья и бор;
-
алгоритмы сжатия информации;
-
битовые Алгоритмы;
-
криптографические алгоритмы.
Понравилось: плавное увеличение сложности, подробное описание действий, присутствуют все необходимые алгоритмы.
Не понравилось: нет практических заданий, в паре задач есть ошибки.
-
Пытался решать задачки на Codewars, а потом на Leetcode.
Переломный момент
В августе 2022 у меня закончились деньги, которые я накопил.
Заработка у меня не было и я не придумал ничего лучше, чем устроиться в Яндекс автокурьером(на своей машине). В целом работёнка не пыльная, когда понимаешь как и какие заказы брать. Откровенные идиоты мне не встречались, может один раз, да и то мозг успешно стёр это воспоминание. Работал я в среднем 4, иногда 6 часов в день и заработанного мне хватало аккурат на поддержание моих штанов и штанишек моих домашних животных. В среднем выходило в лучшем случае тысяч 40 и конечно я занимал периодически, но зато мог больше учится.
![](https://habrastorage.org/getpro/habr/upload_files/801/c61/f3e/801c61f3e57ad3f921f77cbb0c10463e.png)
В этот момент я начал готовить резюме (в чём мне помогла карьерная консультация от skillbox) и пытаться заскочить на работу.
Дельные советы для тех, кто также много лет отпахал в ИТ или другой области:
-
Не расписывайте подробно весь свой предыдущий опыт, достаточно собрать основные достижения с последней должности.
-
Если у вас много проф курсов, у меня, например, было более 20, то их тоже не надо пихать все, а только потенциально полезные в новой профессии.
-
Если вы участвовали в интенсивах или командных проектах, не стесняйтесь указывать это.
Время для смены профессии я конечно выбрал отличное. Раньше брали, по ощущениям, кого угодно стажером или джуном. А у меня же до доработки резюме не было откликов совсем. Параллельно я заскочил на полуторамесячный интенсив в компанию Ylab, но к сожалению не попал на финальную бесплатную стажировку. Из интенсива я унёс довольно интересную практику и повторно закрепил навыки. Из 300 претендентов я был, кажется 27, что неплохо. Правда на финальное собеседования прошли только 15, а попали на стажировку и того меньше.
Как понимаете, включать заднюю я не собирался и только ещё яростнее учился, чему способствовала работа курьером.
Командный проект
Изрядно наполучав отказы от потенциальных работодателей 14.11.22 я залетаю на командный проект.
Группа из шести бэкендеров и одного фронта вместе работают под контролем опытного лида (Дениса Холмогорова) над проектом социальной сети в течении трёх месяцев.
Можете заценить перезалитый с Gitlab проект — https://github.com/ikazakof/social-service
В процессе от нас по тем или иным причинам отлетают два человека и бэкендеров остаётся четверо, но зато какие!
На проект можно податься где-то с трети прохождения Java Core, но я бы рекомендовал ещё плотно позаниматься Spring Boot.
На плюсах и минусах тут я остановлюсь подробнее.
Плюсы:
-
Мощный лид с реальным и обширным опытом программирования. Денис дал нам очень много полезнейшего материала, который и сейчас является подспорьем в моей практике. Книги, статьи, личный опыт — всё это гармонично вписалось в нашу командную работу
-
Работа велась недельными спринтами. В начале каждого спринта, да и в течение недели, мы созванивались в удобное для большинства время для постановки задач. Задачи все фиксировались на Kanban доске в Gitlab. Практически каждый день мы созванивались командой и обсуждали у кого как выполняются задачи, у кого какие трудности возникают и, конечно, лид направлял нас в сторону решения задачи. Именно направлял, а мы самостоятельно копались в материале и выполняли таски. Я в какой-то момент заморочился и стал записывать наши дейлики, выкладывая в облако. Это помогало членам команды, которые были в другом часовом поясе и у которых иногда не было возможности подключиться, однако Денис проводил дополнительные встречи и с ними в таких случаях.
-
Git вели мы как большие ребята: отдельная dev ветка, от которой создавали ветки с тасками, Code review, слияние веток и, конечно, исправление конфликтов, если они возникали
-
Мощный многомодульный полноценный проект, который в последствии можно было бы разнести на микросервисы. Абстракции, Postgre, Liquibase, WebSocket, Kafka, Security на JWT token, Specification, AOP, Swagger, Feign-client, Капча, подключение внешних почтовых сервисов и сервисов хранения файлов.
-
Docker.
-
CI/CD на базе Gitlab и minikube.
-
Возможность помогать членам команды с их задачами, если освободилось время.
-
Полноценная защита своей части проекта с вопросами от приглашённых экспертов.
Минусы:
-
Как показала практика, залетать с трети курса Java Core не у всех получится, хотя и такой коллега у нас был, и успешно завершил все предназначенные для него таски.
-
К сожалению, не хватило времени разнести на микросервисы, а очень бы хотелось.
-
Нет реактивщины, опять же из-за нехватки времени.
Что же по итогу?
Во время командного проекта меня рекомендовали на должность Junior разработчика в Unicredit Bank и в конце декабря я без каких-либо проблем прошёл собеседование. Собеседующие оценили меня на уровень Junior+, что считаю отличным, особенно учитывая, на сколько я успел пройти весь курс.
Честно говоря, я не был готов к тому, что работодатели настолько сильно не хотят рассматривать Junior разработчиков. Сейчас то на позицию Middle такой проблемы конечно же нет, учитывая то, что ты не просиживал штаны, конечно.
На сколько я успел завершить за три года предлагаемые курсы входящие в профессию:
-
Java-разработчик и итоговый проект – 100%
-
Разработка на Spring Framework без итогового проекта – 80%
-
Командный проект – 100%
-
Основы SQL – 100%
-
Веб-вёрстка «Базовый уровень» без итогового проекта – 46%
-
Система контроля версий Git – 100%
-
Enterprise-технологии в Java-разработке(Agile, CI/CD, Kafka, WebSokets, микросервисы) – 60%
-
Алгоритмы и структуры данных – 62%
-
Презентация итоговых проектов(оформление, публичные выступления) – 100%
-
Вебинары по профессии – 50%
-
Работа в bash – 0%
-
Безопасность БД (добавили уже после моего трудоустройства) – 0%
-
Веб-вёрстка «Продвинутый уровень»(Верстка писем, SVG, анимация на JS, оптимизация загрузки стилей и прочего, GULP, Sass, PUG, Grid, финальный проект) – 0%
-
Практика по Java (добавили уже после моего трудоустройства, три кейса – telegram-бот, тарифный калькулятор, обмен валюты) – 0%
-
Agile: Scrum и Kanban в работе над продуктом (добавили уже после моего трудоустройства) – 0%
-
Карьера и развитие программиста (интересный курс, как позже оказалось. Много про поиск работы и собеседования) – 15%
Финальные советы желающим сменить профессию
-
Изучите свежую информацию по курсам.
-
Соблюдайте баланс между трудом и отдыхом, потерянное здоровье не купишь!
-
Подготовьте денежную подушку и способ заработка на случай форс-мажора.
-
Попробуйте интересующий курс в пробном режиме, если это возможно, хотя бы немного прикиньте, каково вам будет учится после основной работы.
-
Закройте все долги, кредиты и прочее, чтобы вас это не тяготило.
-
Закладывайте на переход минимум пару лет, а то и больше. Переоценить свою мотивацию и прогресс очень легко.
-
Готовьтесь много, очень много учиться и иногда застревать на недели, приступая к сложной задаче, это нормальная практика
-
Обогащайте свои знания из сторонних источников – книги, статьи и прочее лишними точно не будут.
-
Постарайтесь на начальных этапах оценить, насколько вам это нравится: программирование надо любить, чтобы была мотивация этим заниматься. Вас никто не будет подталкивать идти вперёд кроме вас самих.
-
Без стеснения залетайте на интенсивы и стажировки при возможности, лишнего опыта не бывает.
-
Рассчитывайте только на себя!
От всей души желаю выбравшим схожий путь удачи, с удовольствием отвечу на ваши вопросы в комментах или в телеге, прикрепленной к моему профилю.
ссылка на оригинал статьи https://habr.com/ru/articles/825998/
Добавить комментарий