Как и в практически любой профессии программисты делятся по уровню занимаемой должности, которая в свою очередь отражает насколько специалист опытный и что от него можно ожидать на проекте. Понятно, что от младшего специалиста не будут ждать, что он будет “тащить” проект (хотя встречаются и такие уникумы).
Кадровые работники обычно оперируют следующими терминами: инженер-программист 2 категории, 1 категории, ведущий инженер-программист и т.д. Но в профессиональной среде приняты немного другие градации опыта специалиста. Наиболее общим является следующее деление:
- Junior - младший специалист
- Middle - специалист
- Senior - ведущий специалист
Junior
В некоторых компаниях также берут стажеров, которые после определенного времени могут получить должность Junior - программистов. Junior - это человек, практически без опыта работы в IT, но несмотря на это от него ожидают, что он хотя бы поверхностно ориентируется в технологиях, с которыми приходится работать. Никто не ждет от него на 100% грамотного и правильного кода. Как правило за джуниором наблюдает более опытный специалист, который указывает ему на ошибки и учит более практическим вещам, которым из книг вряд ли можно научиться.
В некоторых компаниях есть практики активного обучения джуниоров, так как компании выгодно, чтобы человек рос в техническом плане, что позволит давать ему более сложные задачи. Получить должность джуниора вполне реально если Вы будете последовательно проходить курсы на нашем сайте и оттачивать свои навыки программирования. Начать же можно с нашего курса “Основы программирования”.
Middle
Мидл - это уже более-менее самостоятельный специалист, которому можно дать какую-то задачу и ожидать от него значительно более грамотный код (по сравнению с джуниором). Как правило, программисты в должности мидл работают несколько лет (2-3). На данном этапе очень важно не переставать учиться и расширять свой технический кругозор. На должности middle-программист люди как правило начинают более глубоко понимать технологии и писать более грамотный код.
Senior
Сеньор (или ведущий специалист) - название должности говорит само за себя. Это человек как правило довольно опытный, поработал на различных проектах, грамотно может оценить трудозатраты на выполнение тех или иных задач и может выступать наставником для менее опытных коллег. Сеньор довольно глубоко разбирается в тех технологиях с которыми работает и в большинстве случаев у него довольно широкий технический кругозор и для решения той или иной задачи он может предлагать различные варианты. Такие качества приобретаются только с опытом.
А что дальше?
Развитие технического специалиста не останавливается на должности senior - программиста. Стоит еще сказать о таких направлениях развития как руководитель группы (Team Lead), Архитектор (Architect), проектный менеджер (Project Manager).
Team Lead - как следует из названия - этот человек технический руководитель группы, занимающейся реализацией какого-то проекта. Team Lead - это как правило очень опытный технический специалист который координирует разработку проекта и следит за грамотным выполнением задач на проекте.
Architect - архитектор проекта - это человек, который занимается проектированием того, как будет разрабатываться проект. Это особенно важно на очень больших проектах, которые ни в коем случае нельзя начинать без проектирования, так как невозможно просто взглядом окинуть проект и прикинуть сроки его выполнения и увидеть возможные подводные камни. Все это, как правило, выясняется именно на этапе проектирования где архитектор проекта играет ключевую роль. Так как человек проектирует систему, то ему также необходимо отлично разбираться в технологиях и иметь широкий технический кругозор.
Project Manager - это первая не техническая ветвь развития программиста. PM занимается координацией проекта, смотрит за соблюдением срока и как правило выступает некой связкой между проектной командой и заказчиком проекта (как правило, но необязательно. в некоторых случаях команда напрямую взаимодействует с заказчиком).
Итак, мы постарались описать то, как развивается специалист в процессе своей работы. Первые три ветви - обязательный: junior, middle, senior. А дальше - каждый сам может выбирать в каком направлении ему хотелось бы двигаться.
Если человеку нравится разрабатывать ПО и писать код и он хочет как можно меньше административных забот, то вполне может продолжать работать на должности Senior.
Если программист хочет попробовать себя на более руководящей должности, но с техническим контекстом, то может пойти в сторону руководителя группы (Team Lead)
Некоторым очень нравится проектирование. В этом есть определенный шарм. Еще до непосредственной разработки Вы можете на бумаге спроектировать большую систему и определить как компоненты этой системы будут взаимодействовать между собой. Такой работой занимаются архитекторы.
Кто-то просто устал от технической работы и хочет выполнять 100% административную работу. Здесь специалист может пойти по направлению Project Management. Хороших менеджеров еще меньше, чем хороших технических специалистов, поэтому это направление тоже очень перспективное. Но не нужно забывать: что хороший проектный менеджер - как правило бывший технический специалист. То есть он довольно хорошо разбирается в технологиях и способен понимать свою команду на техническом уровне (хотя видел я парочку менеджеров "из народа". впечатление то еще).