Градация уровня знаний в языках программирования. Каковы различия и требования?
=================================================================================

 Добрый день. Интересует вопрос с разделением уровня знаний в языках программирования.  

Как известно есть Junior, Middle и Senior.  

Так вот, с пониманием того чего хотят от Junior я более менее разобрался. А вот Middle и Senior возникли трудности.  

Я сейчас не указываю на конкретный язык так как подход я думаю одинаковый будет.  

Какова база для Middle и Senior. Что они должны знать помимо языка с которым работают.  

Риторический вопрос, но за какие сроки достигаются такие высоты?  

Опишите свой опыт по возможности.  

Спасибо всем за ответы. 

 Градация джунов, мидлов и сеньоров - это часто возникающий на Тостере вопрос. Я на него уже несколько раз [отвечал](https://toster.ru/answer?answer_id=1137886#answers_list_answer).  
  

Касательно конкретно сроков, это зависит как от области деятельности, так и самого специалиста. Чрезвычайно талантливый и трудолюбивый специалист может за 5 лет взлететь до сеньора Java EE, а другой может 15 лет угробить на рост до мидла в PHP.  
  

Я для себя решил так, буду себя сеньором считать тогда, когда на конференциях выступать начну. 

 Сеньор копирует решение со стакаоверфлоу в 3 раза быстрее чем миддл, а миддл в 5 раз быстрее чем джун.  

В это время трейни идёт задавать вопрос на Тостер. 

 Джун знает синтаксис и умеет накопипастить несложное приложение, мидл умеет в структуры и алгоритмы, а сеньор в архитектуру. 

 Поговорка есть такая: "молодец среди овец, а среди молодца и сам овца".  

Градации Junior, Middle и Senior существуют не сами по себе, а на конкурентном рынке труда.  

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

ps тут в фавориты выбился простой ответ - это понятно ) плюсуют нетрудорустроеные соискатели, осваивающие синтаксис, и джуны, надеющиеся прочесть учебник по алгоритмам и пойти в гору. Всем удачи ) 

> Как известно есть Junior, Middle и Senior.

 Кому известно? Где? Это херню придумали рабовладельцы, что бы зп снижать программистам, что бы можно было создать ирархию, как в армии, с лычками. Все эти деления - условности. В рельной жизни такого почти нет.  
  

Программистов можно разделить на новичков и с опытом. Все. Разницы больше нет. У одного больше знаний в одном, у другого в другом. Не бывает супер-мега программистов. Любой человек, умеющий думать, в состоянии найти ответ на вопрос или выучить язык/технологию при желани. У меня рядом сидит коллега, он скептически относится к фреймворкам, но эксперт в Битриксе. А я Битрикс не знаю. Кто он? Кто я?  
  

Я ходил по собеседованиям и я чувствовал, что некоторые собеседующите, типа "сеньеры" - по сути - пустышки, которые даже адекватно собеседование провести не могут. Поэтому крайне советую вообще забыть эти деления. В реальных предприятиях есть деление, но оно больше связано с окладом и бухгалтерией. Специалист получает 10 руб, старшний специалист - 15. Всё. А уровень их может быть одинаков. Т.е. разница в том, что один просто себя дородже продал и зовется старшим специалистом. 

 это просто уровень ответственности, которую вы несете в данном конкретном окружении 

 Эта очень условная градация, к-я сильно зависит от компании. Junior в Google и Junior в "Рога и копыта" это разные юниоры. 

 Junior - "я такого не делал, хз как это реализовать?"  

Middle - "я такого не делал, но сейчас придумаю как, есть пара вариантов, наверное"  

Senior - "я точно знаю как надо, ща найду мидла, расскажу, пусть делает" 

 Все просто.   
 **Junior** - по русски "мальчик", т.е. ученик, его основная задача бегать за пивом и сигаретами. Знания ЯП не требуется. Если Junior хочет стать Middle то внимательно должен следить за тем что делает последний, пытаться делать то же и стараться довести полученный результат до боссов.   
 **Middle** - "среднее звено" это именно те самые люди которые пишут код по алгоритмам которые выдает Senior. Разумеется знание необходимых инструментов (это не только ЯП) категорически обязательно.   
**Senior** - "главный" это человек который переводит фантазии заказчика в набор формальных алгоритмов (математическая модель) для исполнения Middle. Занимается распределением работы между несколькими Middle, осуществляет общее руководство проектом. Знание некоторых инструментов (например UML) обязательно, знание языков желательно 

 Не в знании тонкостей языка дело  

<https://habrahabr.ru/company/alconost/blog/262831/> 

 Все 3 линейки относятся к специалисту, просто градируют его уровень.  

То есть джуниор -- младший (сам в шоке) **специалист**, не новичек, не стаженр, а **специалист**, но младший.  
  

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

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

...  
  
*Есть часть людей, как правило НЕ нанимающих сейчас, которые помнят былые времена дефицита кадров, тогда они джунами считают мальчиколв/школьников... в рынке это не соотносится с реальностью, младшим инженером стать новичек с месяцем опыта стать не возможно!* 

 Если говорить про веб, то джуниор может писать несложные сайты, не особо запариваясь с js  

Middle делает это в несколько раз быстрее и качественне + проекты сложные,  

Senior же пишет меньше джуна, так как наработанная база позволяет копипастить у себя