Так исторически сложилось, что в IT есть градация по квалификации, чаще всего это junior, middle и senior. Для чего же это компаниям нужно. Представьте, какое количество задач есть в разработке программного продукта. Есть задачи разного уровня от простых до самых сложных. Отсюда и большое количество разных должностей, и деление на уровни.
Junior разработчик или «малыш» — не совсем новичок в профессии. Джуниор разработчиком тоже нужно стать. Джуниор разработчик знает основы программирования: проходил в ВУЗе, техникуме или на курсах. Знает один язык программирования, возможно немного другие технологии. Джуниору часто поручают простые рутинные задачки. У малыша возникает много вопросов в процессе работы, он тратит дополнительное время на изучение задач перед выполнением, обращается за помощью к старшим разработчикам. Код джуниора часто бывает запутанным или нечитаемым для других. Как скоро джуниор станет мидл разработчиком зависит от того, насколько он усердно стремился к освоению задач, как изучал нужные технологии, прислушивался ли к рекомендациям ментора или команды. Этот путь примерно занимает 1-3 года.
Middle разработчик – уже более опытный разработчик. Вполне может выполнять задачи самостоятельно. Знает уже несколько языков программирования и фреймворков к ним. Пишет уже более качественный код, который понятен другим. Мидл разработчик, возможно, не видит всю картину проекта, но отлично видит решение вверенной ему части. Он умеет делить свою работу на части и поручать простые задачи джуниору.
Senior разработчик имеет уже за плечами большой практический опыт работы. На проекте он выступает как эксперт. Он применял на практике разные технологии и знает их плюсы и минусы. Он может самостоятельно реализовать архитектуру проекта, выбрать подходящий стек. Сеньор способен видеть полную картину, подбирать технологии, наиболее подходящие под задачи согласно техническому заданию. Сеньор быстро находит баги в коде младших коллег. Как быстро можно дорасти до сеньора? Однозначного ответа нет. Кто-то может стать сеньором уже после 2-х лет практической работы, кто-то через 5-10, а кому-то вполне комфортно работается на middle позиции.
Как все сложно на первый взгляд. Один разработчик может быть джуниором в одной компании, а потом прийти в другую и построить там с нуля архитектуру приложения. Другой разработчик у вас сеньор, а в новой компании не проходит испытательный срок как мидл. Или сеньор бэкэнд разработчик переходит на мобильную разработку – кто он? Он уже будет не сеньор, но и джуниором его не назовешь, правда? У него за плечами большой бэкграунд и он способен за максимально короткие сроки освоить новую технологию и снова принять гордый статус сеньора уже в новом направлении.
Правильнее будет заметить, что в каждой компании могут быть свои критерии оценки уровня квалификации и перехода от одного уровня к другому. В некоторых компаниях грейды документированы. Четко описано, кто какие задачи выполняет и как происходит переход от уровня к уровню. В таких компаниях проводятся Performance review сотрудников. А другие, особенно небольшие компании, могут достаточно прозрачно видеть квалификацию своих разработчиков без специальной оценки и этого вполне достаточно. Так зачем же это деление на уровни? Компании используют его для привязки зарплат к навыкам и задачам сотрудников. И нужно заметить, что стаж работы здесь не показатель.