Скидки до 60% и 3 курса в подарок 0 дней 00 :00 :00 Выбрать курс
Код
#истории

«Прокачался в ПО телефонов и не остановился на достигнутом»: путь Java-разработчика Ивана

Иван ремонтировал смартфоны в сервисном центре, но мечтал о программировании. Освоив Java, он начал разрабатывать свои проекты.

Фото: личный архив Ивана Румянцева

Иван Румянцев

Россия, Томск


Пройденные курсы


Достижения

Обучился Java-разработке и уже реализовал несколько проектов.


ссылки


Иван рассказал:


«Занимался в свободное между ремонтами время»: как специалист сервисного центра освоил Java

— До обучения ты занимался ремонтом смартфонов в сервисном центре. Как попал в эту сферу?

— Абсолютно случайно. Тогда я уже полгода самостоятельно изучал HTML, CSS и JavaScript и искал работу фронтендером. И вот среди объявлений наткнулся на вакансию в сервисном центре. Я даже не предполагал, что буду заниматься ремонтом, потому что изначально пришёл на позицию обычного продавца: предлагал клиентам купить защитные стёкла и другие товары.

Со временем я заинтересовался починкой техники и начал тренироваться на сломанных подержанных телефонах: восстанавливал их, а потом продавал, объясняя покупателям, что конкретно я починил и модифицировал. После полугода практики я перешёл к починке смартфонов уже клиентов сервисного центра. Параллельно я прокачался в программном обеспечении телефонов.

Когда я уже стал заниматься в центре руководящими функциями, например вёл отчётность, я понял, что не хочу останавливаться на достигнутом, и решил продолжить учиться.

Тогда мне попалась реклама Skillbox, я заинтересовался и стал изучать, какие языки программирования лучше всего освоить новичку. Остановился на Java — он показался мне самым сбалансированным: востребованным, не слишком простым, но и не слишком сложным.

Плюс я понимал, что хочу развиваться именно в бэкенде, — на мой взгляд, это более перспективная и интересная специализация. При этом я не ограничиваюсь бэкендом — сейчас, например, делаю сайт для интернет-магазина и создаю для него в том числе фронт.

— Не сложно было совмещать работу с обучением?

— В этом плане мне повезло с работой: график позволял заниматься в свободное время между ремонтами. Плюс я учился каждый вечер после работы. Первые полгода вообще занимался очень плотно, нередко засиживаясь до ночи. Не могу сказать, что это было правильно с точки зрения здоровья, но мне было интересно и не терпелось поскорее пройти обучение. Я очень хотел стать лучше как профессионал.

— До обучения у тебя уже был опыт в программировании, хоть и во фронтенде, а не бэке. Эти знания как-то помогли влиться в учёбу?

— Думаю, да. Я же в целом заинтересовался программированием задолго до сервиса и курса — ещё на первом курсе медицинского самостоятельно пытался кодить. Это заложило базу, благодаря которой уже к середине обучения я понял, как технически взаимосвязаны фронтенд и бэкенд.

— Какие у тебя были инсайты на этот счет?

— Только когда я начал изучать Java, я понял, что бэкенд может отправлять API-запросы на фронтенд, а клиентская часть, наоборот, отправляет запросы на бэкенд. Раньше я просто не понимал, как это работает.

Кроме того, я познакомился с Thymelift — это шаблонизатор, который позволяет выводить страницы и фрагменты HTML на клиентскую часть. Теперь я использую этот инструмент для создания интернет-магазина, подключая JavaScript-файлы и стили.

Пока без сборщиков вроде Gulp, но уже получается самописный интернет-магазин.

— Ты выбрал Java, потому что это «сбалансированный» язык. Твои ожидания от языка совпали с реальностью?

— Честно говоря, я думал, что всё будет гораздо проще. Было много тем, на которых я попросту зависал, — например, когда речь шла об объектах в Java. Только после того, как я выполнил практическое задание по этому модулю, я начал немного ориентироваться.

Это был сложный, но полезный опыт.

— Здорово, что трудности получилось преодолеть через практику!

— Через практику и помощь в чате курса. Другие студенты постоянно делились там полезной информацией, которая очень выручало. А всё, что я не мог найти там, искал в интернете. Особенно помогал ChatGPT — ему можно задать миллион вопросов и получить действительно полезные ответы.

— Среди программистов есть мнение, что ChatGPT очень плохо работает с кодом. Ты заметил такой недочёт?

— Я согласен с тем, что он может генерировать плохой код, но при этом он отлично знает теорию. Всё, что связано с архитектурой приложений или классами, он легко может подсказать.

Например, я просил его помочь с названием для класса, который выполняет роль основного сервиса для моих CRUD-сервисов. Он предложил несколько вариантов, а я их учёл и оптимизировал.

— Кстати, расскажи про практику, которая помогла тебе освоиться в Java.

— В рамках своего дипломного проекта я разрабатывал поисковой движок. Задача была в том, чтобы реализовать бэкенд для уже готового фронта. Основная функция движка заключалась в том, чтобы индексировать страницы: проходить от одной к другой, находить нужные ссылки, собирать их в стеки... Таким образом он формировал «дерево» из страниц — таблицу, в которой указывалось количество проиндексированных сайтов, страниц и лемм, то есть разных форм слов.

Кроме того, в движке был модуль поиска по проиндексированным страницам. С его помощью можно было найти любое слово и получить список страниц, где оно встречается. В целом это типичная история, которая есть в большинстве поисковиков.

Но я добавил нововведение — с помощью простого кэша ускорил процесс отображения страниц при прокрутке. Кроме того, я добавил JavaDoc к контроллерам, чтобы было проще.

Не считаю этот проект мощным, но для старта он точно был неплохим.

— Тем более ты по своей инициативе добавил несколько фичей, — не все студенты так делают!

— Это правда. Мой куратор предложил мне добавить в проект Docker. В итоге я добавил и Docker, и Docker Compose, настроив всё так, чтобы проект запускался через них.

Когда пришло время сдачи диплома, вопросов по коду мне почти не задавали, и я защитил проект буквально за минуту.

«Три месяца разрабатываю, пару недель отдыхаю»: как совмещать крупный pet-проект с работой

— Круто! А как у тебя с неучебными проектами? Ты упомянул, что разрабатываешь интернет-магазин, — это первая твоя коммерческая задача?

— Нет, до этого я по просьбе знакомого сделал сайт для сервиса по ремонту техники, который уже работает и приносит доход. Сайт довольно простенький: статические HTML-страницы, файлы стилей и совсем немного JavaScript без использования препроцессоров или сборщиков. То есть полностью самописный сайт.

Интернет-магазин — мой второй проект, который я делаю для себя. Он уже сложнее — делаю к нему CRM. Основная часть работы уже позади: шаблоны и фронтенд отрисованы, уже понятно, как будут выглядеть главная страница, страница входа, пользовательский CRM и карточки товаров. Осталось только реализовать бэкенд, над которым я работаю уже около четырёх месяцев.

В целом использованию большинству технологий, которые я применяю на этом проекте, я научился на курсе. Spring-Boot-Starter-Web, Spring-Boot-Starter-Data-JPA, Liquibase, Envy Client, MapStruct и Lombok — стартовый набор инструментов, который позволил мне качественно начать работу. Для работы с базой данных я применяю PostgreSQL, для кэша — Redis, а фронтенд генерирую с помощью Thymeleaf, JavaScript и CSS-файлов.

В будущем я планирую перевести проект на микросервисную архитектуру, чтобы проект стал более масштабируемым и гибким.

— А в чём преимущество перехода на микросервисную архитектуру?

— Она удобна тем, что в ней каждый сервис разрабатывается и работает отдельно. То есть если в одном из них возникает ошибка, она не приводит к полной остановке системы, как в случае с монолитом. В худшем случае падает только один микросервис, а остальные продолжают функционировать.

Например, если в Ozon вдруг перестанет работать модуль оформления заказа, то товары всё равно будут отображаться и бизнес не остановится.

Кроме того, микросервисную архитектуру можно масштабировать — развернуть микросервисы по серверам в разных регионах и равномерно распределять нагрузку, чтобы повысить стабильность и гибкость системы.

А ещё умение работать с микросервисами — большое преимущество при трудоустройстве в разработке.

— Интернет-магазин — твой pet-проект. Как тебе удается поддерживать мотивацию и не забрасывать проект без стимулов вроде оплаты и внешних дедлайнов?

— Это непросто. Плюс у меня почему-то выработался такой ритм: я три месяца очень плотно занимаюсь разработкой, а потом минимум пару недель отдыхаю, чтобы восстановить силы. После паузы снова возвращаюсь в колею, и цикл повторяется. Думаю, это связано с тем, что мне сложно совмещать основную работу и разработку. Благо, спорт помогает не выгорать и разгружать голову — я регулярно бегаю и тренируюсь.

— Наверное, усталость выше ещё и из-за того, что ты работаешь над проектом совсем один.

— Да. Иногда приходит мысль подключить кого-то ещё, но я пока не решаюсь: опыта управления командой у меня нет, и я боюсь, что поэтому результат может оказаться сомнительным. Думаю, правильнее сначала поработать в компании, чтобы набраться опыта в командной разработке, и только потом вести собственный проект и собирать вокруг него людей.

Всё-таки хочется, что этот сайт стал не просто учебным макетом, а нужным и сильным продуктом.

При этом я понимаю, что в одиночку у меня не получится закрыть все направления. Особенно в части безопасности и правовых нюансов — здесь явно понадобятся консультации специалистов.

— Здорово, что у тебя уже есть чёткая цель. Какие ещё у тебя планы на будущее?

— Я бы точно хотел поработать с ИИ, но понимаю, что пока до этого не дорос. Поэтому для начала я просто хочу отточить скиллы в команде опытных разработчиков. Для меня это приоритет — увидеть, как происходит взаимодействие в команде, как работают тимлид и проектные менеджеры.

Сейчас, помимо интернет-магазина, я работаю над небольшими проектами. Например, я разрабатываю экспериментальный телеграм-бот, который будет помогать клиентам сервиса определить тип поломки, сориентироваться в стоимости и сделать заказ.

В долгосрочной перспективе я хочу стать экспертом в разработке ПО.

Эта цель кажется мне абсолютно достижимой: базовые навыки и понимание сферы у меня уже есть.



Курс с трудоустройством: «Профессия Java-разработчик» Узнать о курсе
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована