Хотите дальше читать devby? 📝
Support us

Как Java-разработчику расти в профессии: советы Алексея Мирютова

Алексей Мирютов — руководитель центра разработки Золотая корона/KoronaPay (относится к группе компаний «Центр Финансовых технологий»). В ЦФТ Алексей работает уже 8 лет, на его счету десятки успешных проектов. 

В материале Алексей вместе с коллегами рассказывает о профессии Java-разработчика и советует, как расти профессионально. 

5 комментариев
Как Java-разработчику расти в профессии: советы Алексея Мирютова

Алексей Мирютов — руководитель центра разработки Золотая корона/KoronaPay (относится к группе компаний «Центр Финансовых технологий»). В ЦФТ Алексей работает уже 8 лет, на его счету десятки успешных проектов. 

В материале Алексей вместе с коллегами рассказывает о профессии Java-разработчика и советует, как расти профессионально. 

Продолжаем цикл материалов про ИТ-специальности. Каждую из них описывает «типичный представитель» — опытный специалист. Мы надеемся, что цикл поможет школьникам, студентам, переквалификантам, джуниорам и сочувствующим выбрать специальность в ИТ, оценить свои перспективы или просто сверить часы с авторитетным коллегой. Можно обсуждать и дополнять материал в комментариях, чтобы сделать его ещё полезней.

Почему Java?

Алексей Мирютов
Java — это хорошая документация, в том числе по библиотекам и фреймворкам, кроссплатформенность, развитая инфраструктура. Простота языка и первоклассная его поддержка в IntelliJ IDEA тоже говорят в пользу Java.

Кроме того, есть преимущества с точки зрения профессиональной среды. Java-разработчики — это активное и развивающееся сообщество. В нашей компании, например, есть формат «ЦФТ-Тема». Это ток-шоу, воркшопы и лекции, где регулярно звучат темы Java и вообще бэкэнда. Кроме того, в KoronaPay есть сообщество бэкэнд-разработчиков, где обсуждаются вопросы развития продукта в части серверных компонентов, новые подходы, инструменты. И, конечно, участие в IT-конференциях — это тоже про сообщество. 

Как выглядит работа Java-разработчика над проектом? Что делает джун, мидл и сеньор?

Джун делает те задачи, которые дают. Обычно они более-менее простые. Часто джун работает с помощью старших коллег.

Мидл делает типовые задачи самостоятельно, за ним уже никто не следит. Он сам понимает, когда нужно посоветоваться с более опытными сотрудниками. 

В целом круг задач мидла примерно таков:

  • участвует в проработке требований, декомпозиции задач;
  • совместно с ведущими инженерами проектирует архитектурные решения;
  • проектирует API;
  • пишет код;
  • делает code-review;
  • менторит 1-2 джунов.

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

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

«В 2020 транзакций – на $12 млрд». Сервис финпереводов хайрит беларусов
«В 2020 транзакций — на $12 млрд». Сервис финпереводов хайрит беларусов
По теме
«В 2020 транзакций — на $12 млрд». Сервис финпереводов хайрит беларусов

Карьерные и зарплатные перспективы

Развитие возможно либо по технической линии, либо по управленческой, менеджерской. 

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

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

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

Также нужно понимать, что личностный рост (и soft, и hard) и рост ответственности — разные вещи. Для любой организации первая часть интересная только в качестве пути ко второй, к ответственности, которая выражается в виде решения различных рабочих задач. 

Чем больше классов задач в организации вы можете решать, тем вы ценнее как специалист в этой организации.

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

Как мидлу вырасти до сеньора? Какими hard skills владеет сеньор?

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

Список важных hard skills сеньора: 

  • умение писать код (знания алгоритмов, структур данных, принципов ООП, паттернов проектирования);
  • знание стандартных библиотек продукционного языка;
  • знание современных принципов дизайна систем и кода за пределами выученных принципов ООП, SOLID, понимание, как раскладывать логику по MVC;
  • знание UML, умение описывать решение задач через диаграммы;
  • умение работать с Git, Issue trackers;
  • умение писать и сопровождать Unit-тесты, автотесты;
  • опыт проведения code-review;
  • опыт работы с инструментами CI/CD;
  • понимание сетевых технологий/форматов представления данных: стек TCP/IP, RESTful API, JSON/XML, HTTP (S);
  • навыки проектирования и планирования технических решений и рефакторинга;
  • понимание современных процессов разработки и жизненного цикла задач (подготовка аналитики, оценка трудоемкости, критичности, техническая экспертиза, разработка и доставка до тестирования и пользователя, мониторинг стабильности и производительности в production);
  • опыт работы с экосистемой Spring, понимание Spring Boot;
  • опыт работы с Gradle;
  • опыт разработки web-ориентированных сервисов (REST/SOAP, OpenAPI/WSDL, JSON/XML);
  • умение работать с базами данных
  • SQL и noSQL;
  • понимание работы Docker/Kubernetes/Helm.

Технологический must have сеньора: 

  • Языки: Java SE 11 и выше, Kotlin.
  • Фреймворки: Spring Boot/Cloud/Data/Integration/Batch/Retry.
  • Брокеры: RabbitMQ и Apache Kafka (как брокер сообщений).
  • Хранилища: Oracle, Postgre, Mongodb, Cassanrda, Elastic, Redis и др.
  • noSQL-СУБД (Redis, Cassandra и т. д.)
  • работа GC, тюнинг производительности, поиск неоптимальной реализации и утечек памяти.
  • Инфраструктура: Apache Zookeeper, Netflix Eureka, HaProxy, Hashicorp Vault.
  • Мониторинги: ELK, Prometheus, Grafana, Jaeger.
  • CI/CD: GitLab/Stash, Jenkins/Bamboo, Helm, Flux.
  • Тестирование: JUnit 5, Cucumber, Apache JMeter, WireMock.
  • Анализ кода: JaCoCo, Sonar, PiTest.

Что после seniority? Какие этапы роста дальше, какие hard skills нужны, чтобы их пройти?

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

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

Для управленца нужно уметь работать с людьми, учитывать их интересы и интересы компании, уметь работать с планами и сроками, держать баланс. Тут мы подходим к теме soft skills. 

Какими личными качествами должен обладать хороший Java-разработчик? Какие soft skills важны в этой сфере?

У любого разработчика должны «гореть глаза», он должен получать удовлетворение от решения сложных (для его уровня) задач, от раскапывания причин, от обретения понимания о том, как вообще это все работает. 

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

Что читать и где учиться? 

Для новичка у меня следующий must read: 

  • «Java. Библиотека профессионала. Том 1. Основы», Кей Хорстманн, Гари Корнелл; 
  • «Java. Библиотека профессионала. Том 2. Расширенные средства программирования», Кей Хорстманн, Гари Корнелл;
  • «Java. Эффективное программирование», Джошуа Блох;
  • «Совершенный код. Мастер-класс», Стив Макконнелл;
  • «Приемы объектно-ориентированного проектирования. Паттерны проектирования, Эрих Гамма, Ричард Хелм и др.;
  • «Рефакторинг. Улучшение существующего кода», Мартин Фаулер.

Мидлам и сеньорам важно не переставать учиться и учить молодых. В KoronaPay есть программы развития hard и soft skills: тренинги, мастер-классы, курсы. Плюс разработчики могут участвовать как слушатели и спикеры в разных ивентах вроде CodeFest, TeamLead Conf, HighLoad++.

Посмотреть вакансии в KoronaPay

Помогаете devby = помогаете ИТ-комьюнити.

Засапортить сейчас.

Хотите сообщить важную новость? Пишите в Telegram-бот

Главные события и полезные ссылки в нашем Telegram-канале

Обсуждение
Комментируйте без ограничений

Релоцировались? Теперь вы можете комментировать без верификации аккаунта.

faang-caliber-engineer
faang-caliber-engineer
0

Когда я был мидлом, я смотрел на компании, которые работают со стэком, перечисленным в этой статье. Сейчас я Principal, я выбираю компанию в первую очередь, а стэк это уже вторично.
Например в Microsoft используют .Net, в Amazon - Java, в Meta - PHP, etc.

Ed Bobrovnik
Ed Bobrovnik Chief Loafing Officer в eternity ltd
2

Список технологий примерно на страницу. На странице примерно 200слов. За каждым словом-технологией мануал на 500-1000+ страниц. Итого от 100,000 до 200,000+ страниц английского текста. Дальше поделите на свою скорость чтения на английском. И это просто прочитать.

Ed Bobrovnik
Ed Bobrovnik Chief Loafing Officer в eternity ltd
1

Есть еще временной аспект: Java это промышленные системы, они существуют десятилетиями, так что придется иметь дело с технологиями и системами, которые уже не в фокусе внимания. Так же есть смысл рассматривать новые технологии, которые еще не стали мейнстримом.

no-one
no-one project micromanager в prefer not to say
0

Java разработчики последнее время претендуя на позицию мидла не умеют писать unit-тесты и успешно находят работу (и работают себе дальше). О микросеовисах/tdd/эджайл нынче любят поговорить и только...

Dinosauria T-Rexia
Dinosauria T-Rexia
2

Технологический must have сеньора:

Инфраструктура: Apache Zookeeper, Netflix Eureka, HaProxy, Hashicorp Vault. Мониторинги: ELK, Prometheus, Grafana, Jaeger.

блиииин, как же я без всего этого живу?