День тестировщика - поздравляем всех причастных! LeanTech
В день выхода этой публикации у тестировщиков профессиональный праздник!
Поздравляем всех причастных с днем тестировщика и желаем, чтобы все программные ошибки находились легко и просто, и вам были благодарны миллионы пользователей! ;)
LeanTech в лицах

Путь от начинающего Java-разработчика до уровня Middle: интервью

9.09.2023
В этот раз интервью провели со Станиславом!
Приятного прочтения! ;)
Путь от начинающего Java-разработчика до уровня Middle: интервью от команды LeanTech
Расскажите о своем пути от начинающего разработчика до уровня Middle?
Когда я учился на последнем курсе ОмГТУ, у меня возникла идея отправить резюме в несколько компаний. Из трех откликов приглашение на собеседование я получил от государственной организации. Мне распечатали список вопросов, и мне нужно было записать правильные ответы в течение 1 часа. После того, как начальник отдела проверил результаты, он сказал, что я подхожу, указал на свободный стол, где в дальнейшем я мог бы работать. Однако ввиду того, что в эту организацию требовалось профильное образование, меня не взяли, но я попросил, чтобы про меня не забывали и, если появится возможность, попытались взять вновь. Раз в пару месяцев я напоминал о себе, и спустя полгода освободилось место. Вопрос с профильным образованием оставался открытым, но уже через 2 месяца я должен был получить диплом, который подходил под требование. Собрав нужные документы, меня оформили в штат на место девушки, которая ушла в декретный отпуск (спасибо ей за такую возможность).

Задач было много. Но больше всего запомнилось объединение баз районов в одну большую базу данных. Было потрачено много сил, времени, энергии на подготовку и слияние баз. Это был тяжелейший период для отдела, так как было много разных проблем, и на их устранение ушел не один месяц.

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

Шел третий день, как я нигде не работал, и вдруг пришло сообщение от HR компании LeanTech. Они искали сотрудника на позицию Junior и предложили мне пройти собеседование. Когда началось интервью, я сказал, что не готов к собеседованию, т.к. я попросту не успел подготовиться, но, чувствуя, что упускаю что-то важное, предложил дать мне задание.

Задание мне выслали и на его выполнение я потратил около 30 часов. После этого меня пригласили в компанию на испытательный срок. Спустя месяц со мной провели промежуточное тестирование с техническим директором и было принято решение о том, чтобы подключить меня в один из проектов заказчика. Собеседование со стороны заказчика я прошел успешно и меня взяли на проект. Далее я участвовал в разных проектах, но процесс улучшения навыков происходил непрерывно.

В целом, можно сказать, что мне где-то везло, а где-то помогали мои навыки с предыдущего места работы, но я искал любую возможность, чтобы достичь своей цели.
Какие технологии и фреймворки Вы использовали в своей работе с Java?
В работе использовались Spring Boot, Prometheus, Grafana, RabbitMQ, Hibernate, Git, JUnit, Elasticsearch.
Какая на Ваш взгляд самая интересная и сложная задача, над которой Вы работали на среднем уровне разработчика?
Со стороны заказчика поступил запрос на отображение количества пользователей онлайн в приложении, но никаких подробностей не было.

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

Я посоветовался с тимлидом, и он порекомедовал найти ещё варианты, которые можно было бы предложить.

В итоге я нашел решение - использовать связку Prometheus + Grafana, которые позволяли сохранять данные о количестве пользователей за определенный период и отображать в виде графика. При этом со стороны кода требовалось минимум изменений, и заказчик остался доволен.
Как Вы совершенствуете свои навыки программирования на Java?
Читаю профессиональную литературу, а также иную литературу, которая помогает развить полезные навыки, например, "Ум программиста" Фелин Херманс. Также помогает решение задач на LeetCode или подобных ресурсах, просмотр обучающих видео.
Какие были основные проблемы, с которыми Вы столкнулись на своем пути развития?
Я выделяю 2 самые главные проблемы: недостаток времени и энергии.

Приведу пример. В одно из воскресений я решил выделить 4 часа на улучшение профессиональных качеств. Я приехал в офис, включил монитор, но буквально через минуту понял, что у меня сильная усталость и сделать что-то полезное не получится.

То есть время найти ещё можно, а вот энергию - еще сложнее.
Какие советы Вы бы дали начинающим Java-разработчикам, желающим достичь уровня Middle?
  • Обращаться за помощью к коллегам, в том числе уровнем выше, но без фанатизма. Желательно подходить с вопросом, уже имея какое-то решение, пусть оно и неверное.
  • Уметь слушать членов команды
  • Следовать советам более опытных коллег.
  • Проводить код-ревью.
  • Читать техническую литературу.
Каковы Ваши любимые инструменты для разработки на Java и почему?
Intellij Idea Ultimate edition предоставляет большой набор инструментов, который необходим для ежедневной работы, в том числе с базами данных.

Postman удобен для формирования запросов, но это скорее - дело вкуса.
Какие проекты или задачи помогли Вам прокачать навыки и перейти на уровень Middle?
Я предполагаю, что процесс перехода на уровень Middle происходит за счет выполнения множества задач и для этого требуется время. Но в то же время более сложные задачи помогают прокачивать навыки взаимодействия с командой, мышления, понимания сути задачи и ее влияние на другие части приложения.
Что Вы считаете самым важным аспектом работы Java-разработчика на уровне Middle?
Технические скиллы и умение работать в команде.
Какие были основные преимущества и недостатки работы с Java на среднем уровне разработчика?
Преимущество - влиять на принимаемые решения, которые более предпочтительны с точки зрения работы приложения.

Недостаток - бОльшая ответственность за выполненную работу.
Как Вы справляетесь с трудными ситуациями или проблемами, возникающими при разработке на Java?
Обращаюсь за помощью к коллегам.
Как Вы оцениваете важность тестирования кода в разработке на Java?
Тестирование - важная составляющая, но нужно заметить, что заказчик должен быть заинтересован в этом, т.к. создание тестов требует дополнительных затрат на создание и сопровождение.
Каковы Ваши планы на дальнейшее развитие как Java-разработчика?
Повышение квалификации до сеньора, повышение уровня английского, улучшение "софт" скилов, изучение новых технологий.
Мы гордимся его достижением и надеемся, что его история и опыт станут интересным примером для других ребят, особенно для тех, кто только начинает свой путь в Java-разработку.
Если Вам нужны специалисты разработки для проекта - свяжитесь с нами.
Мы с радостью поможем Вам реализовать Ваши идеи и достичь бизнес-целей.