В данной статье я хочу поговорить о пути развития Java разработчика, с точки зрения карьерного роста.
Итак, для начала давайте поговорим об уровнях Java разработчика. В целом, вся лестница выглядит, примерно, так:
- Интерн (Intern)
- Младший разработчик (Java Junior)
- Разработчик (Java Middle)
- Старший разработчик (Senior)
- Технический руководитель / Глава команды (Teach Lead / Team Lead)
- Архитектор (Java Architect)
Поговорим о каждом из данных уровней отдельно.
Прежде всего, стоит отметить, что стэк технологий, который необходим (речь идёт об СНГ) Java разработчику для трудоустройства, примерно одинаков, не зависимо от уровня самого программиста.
Квалификацию разработчика определяет именно глубина знаний этих технологий и умение их применять на практике.
Что же это за технологии?
- Java Core
- Java EE
- Опыт работы с базами данных (SQL – обязательно, NoSQL – желательно)
- Hibernate
- Spring
- Maven (иногда – Ant)
- Знание ООП.
- Методологии SCRUM и т.д.
- Паттерны проектирования
- JUnit
- Log4J, Slf4J и т.д.
- Git / SVN
- HTML/CSS
- JavaScript
- Tomcat / JBoss
Итак,
Интерн (Intern)
Описание
Интерн – это человек, который знает лишь основы языка программирования и, на достаточно низком уровне, стэк технологий.
Его главное отличие – не способен самостоятельно решать реальные задачи. Такого человека нанимают, как говорится, “на вырост”.
Огромная проблема современного рынка труда IT состоит в том, что люди, которые имеют знания уровня Intern абсолютно уверены в том, что они, как минимум Junior, не понимая, как именно требования выдвигаются к джуниору.
У интерна нет стройной картины того, как технологии, которые он изучает, взаимодействуют друг с другом, да и сами эти технологии он знает лишь поверхностно.
Чаще всего, интерн слабо ориентируется даже в Java Core и не знает ключевых методов, которые используются “в продакшене”.
На собеседованиях, такие люди, зачастую, не могут назвать методов класса Object.
Решаемые задачи
- Грамотное изучение фреймворков.
- Создание простых, чаще всего, не коммерческих приложений для тренировки.
- Изучение технологий, которые используются в проекте.
- Заполнение пробелов в знаниях.
Цели компании
- Воспитать Java Junior’а за 3-6 месяцев и “полуфабриката”
- Потратить минимум денег на обучение специалиста
Интерны, как правило, не получают оплаты, а если и получают, то она находится на уровне стипендии студента.
Интерн не приносит доход компании, она вкладывает деньги в разработчика и инвестирует в будущее. - Потратить минимум времени своих специалистов
Интерны задают вопросы. Задают много вопросов. Именно поэтому, компании набирают самых расторопных, чтобы эти вопросы были “по существу”. Один интерн занимает, примерно от 1 до 3 часов работы хорошего специалиста в день.
Цели интерна
- Стать Java Junior
- Получить практический опыт работы в проекте серьёзного уровня.
- Получить предложение о работе.
Младший разработчик (Java Junior)
Описание
Младший разработчик, в народе именуемый джуном является специалистом, который способен самостоятельно решать мелкие задачи. Написать класс, исправить мелкий баг и т.д.
Джуниор знает такие же технологии, что и “мидл”, отличие лишь в глубине понимания и в практическом опыте. И, что самое главное, он уже приносит прибыль компании.
Младший специалист, хоть и пишет код, но он не несёт ответственности, если в результате работы этого кода что-то пойдёт не так. Его код обязательно просматривается более опытными коллегами по цеху.
Junior, также, не отвечает за сроки выполнения задачи.
Его необходимо постоянно контролировать. Как в плане кода, так и в плане времени. Минусом для компании является то, что хороший “джун” задаёт много вопросов тем самым отнимая время у других разработчиков.
Решаемые задачи
- Создание простых классов.
- Добавление нового поля в форму.
- Исправить некорректное отображение чего-либо.
- Добавить уже имеющийся функционал в другое место.
- Исправление небольших багов.
Цели компании
- Возложить на специалиста выполнение рутинных и простых задач для того, чтобы освободить более квалифицированных программистов.
- Экономия бюджета проекта.
- Постараться как можно дольше оставить человека в компании, чтобы получить полноценного разработчика уровня “мидл”.
Цели младшего разработчика
- Получить опыт работы в реальном коммерческом проекте.
- Научиться работать в команде разработчиков.
- Учиться работать эффективно.
Джуниоры могут писать рабочий код, но этот код работает неэффективно. Задача же младшего специалиста – научиться находить не только рабочие, а именно эффективные решения, которые будут простыми в поддержке.
Разработчик (Java Middle)
Описание
С этого уровня и начинается разработчик с большой буквы “Р”. Это уже не подмастерье, а начинающий мастер. Он способен решать реальные задачи, решать их эффективно и быстро. На плечах мидлов и стоит IT.
Этот человек уже несёт ответственность за свой код и за сроки. Мидлы могут привлекаться для тестирования системы.
Чтобы описать разработчика в общем, можно сказать, что мидл – это разработчик, которые решает задачи средней сложности в средние сроки.
Решаемые задачи
- Работы на уровне модулей.
- Написание функционала в соответствии со спецификацией.
- Покрытие проекта тестами.
Цели компании
- Выполнение основной работы.
- Прибыль.
- Иметь в штате человека, который может эффективно решать поставленные задачи за адекватное время.
Цели разработчика
- Углубить собственные знания используемых технологий.
- Заполнить пробелы в знаниях.
- Научиться активно и грамотно работать в команде.
- “Вырасти” до уровня Senior разработчика.
Старший разработчик (Senior)
Описание
Если мидл – это специалист, который способен решать задачи средней сложности, то Senior – это разработчик, который способен решать задачи любой сложности в рамках выбранной архитектуры проекта.
Он обязан в совершенстве знать все технологии, указанные в его резюме. Он обязан уметь эффективно работать в команде и предлагать эффективные решения проблем, которые возникают.
В случае, если “что-то пошло не так”, именно Senior’ ы должны взвалить на свои плечи основную работу и “тащить” проект.
Senior – это уже “мастер” своего дела.
Решаемые задачи
- Выполнение задач любой сложности.
- Работы на уровне фреймворков.
- Задавать темп работы команды.
- Работа с клиентом.
Цели компании
- Иметь специалиста, способного решать любые задачи в рамках проекта.
Если посмотреть на работу старшего разработчика, то мы увидим, что зачастую он пишет собственные фреймворки. Не совсем с нуля, но адаптирует имеющиеся технологии под конкретный проект. - Генерирование максимальной прибыли.
Старшие разработчики приносят компании максимальную прибыль. Именно с этим и связано количество вакансий для Senior’ ов и их нехватка.
Цели старшего разработчика
- В совершенстве освоить инструменты работы.
- Найти наиболее выгодные условия для работы.
- Решить куда идти дальше.
С этого момента программист решает, хочет ли он дальше расти как специалист, либо идти в менеджмент (PM и т.д.). - “Расти выше”.
Технический руководитель / Глава команды (Teach Lead / Team Lead)
Описание
См. Старший разработчик + руководство командой.
Это человек, который лучше всех в команде знает используемые в проекте технологии. Он является заместителем Team Lead.
Решаемые задачи
- Написание спецификаций.
- Организация работы команды.
- Ответственность перед компанией за качество и сроки выполнения работы.
Цели компании
- См. старший разработчик.
Цели технического руководителя
- См. старший разработчик.
- Иметь человека, который будет нести личную ответственность за сроки выполнения работы.
Архитектор (Java Architect)
Описание
Высшая ступень эволюции программиста. Как говорится, выше только небо.
Это человек, который решает, как именно будет реализован проект и несёт личную ответственность за успех, либо провал проекта.
Он отвечает за технологии, которые будут применяться в проекте.
Решаемые задачи
- Создание архитектуры проекта в соответствии с требованиями.
- Выбор наиболее подходящих для поставленных задач технологий.
- Контроль за выполнением работы.
Цели компании
- Иметь человека, который лично отвечает за успех, либо провал проекта.
- Иметь грамотного специалиста, готового реализовать проект любой сложности.
Цели архитектора
- Какие цели могут быть у архитектора в плане профессионального роста – является загадкой 🙂
Надеюсь, эта статья была полезна для читателей и они получили примерное представление о том, каким путём может развиваться карьера разработчика.
Victor T
хорошо классифицировал