Чтобы определить уровень junior/middle/senior существуют разные подходы.
HR часто смотрят этот уровень по стажу работы — это самый простой, но неверный способ. В больших организациях или имеющих непростую сферу деятельности, к этим уровням привязывают конкретные списки технических задач, но понятно, для разных компаний они свои. Логичнее всего на первое место ставить уровень задач и степень независимости, которые разработчик в силах выполнять.
Junior-разработчик
Он может решать примитивные, малые, а также четко поставленные задачи. Мало знаний и много вопросов, нужна работа в команде или с наставником, из этого следует, что самостоятельность нужно развивать. Если усердно работать, брать задачи, работать с наставником, то за год-другой можно неплохо продвинуться и пройти этот этап, но бывает так, что разработчики и на 10-15 лет остаются на одном и том же месте, все потому что не достаточно прилагают усилий, такое нередко можно увидеть на интервью или собеседованиях.
Middle-разработчик
Многое знает, есть опыт и может сам разобраться в поставленной задаче. Он способен самостоятельно принимать решения, достаточно адекватно выделит цель, имеет свою сферу ответственности. Если смотреть в общем, то, это уровень большинства программистов, которые что-то добились.
Senior-разработчик
Отлично знает свой круг работы, прекрасно осознает и упорядочивает характер ее развития, сам в силах объяснить что делать и почему. Этот разработчик в силах хранить в памяти большие и довольно сложные задачи, а также может работать на высокой степени абстракции и учитывать самые неявные исходы событий. На этом уровне происходит разделение труда, кто-то занимается довольно сложной разработкой, кто-то знает абсолютные особенности различных инструментов, а также фреймворков, кто-то может спланировать работу над крупной задачей.
Обычно в организациях переход между ступенями осуществляется с помощью аттестации. На самом деле профессиональный рост — процесс довольно поэтапный и ежедневный, и важно не то, каким словом тебя сегодня называют, а то, стал ли ты как разработчик лучше, чем вчера.