Как Вы понимаете junior, middle (developer), senior и есть ли принципиальная разница этих понятий в вебе, эмбедде, геймдеве и других программиннгах?
======================================================================================================================================================

 А так же:  

Какое определение самое общепринятое?  

Поддается ли это определение формализации?  

Можно ли применять к людям с объективной точки зрения, а не менеджерски-маркетинго-эйчарской с целью занижения ЗП?  

Есть ли известные личности (возможно, звезды или гуру), которые готовы признать, что они, например senior?  
  

Возможно, вопрос риторический, философский и подымался очень много раз, но я, много над ним размышляя, пришел к выводу, что ответить на вопрос "Ты junior\middle\senior?" за приемлемое время - это то же, что ответить на вопрос "Сколько стоит машина?" или "Сколько стоит сайт?" 

 Эти понятия, как и многое другое, пришло с запада. В России, знаю на примере текущей компании, есть разделение на "Инженер-программист 3й категории", 2й категории и высшей категории (ведущий инженер-программист). В нормативных документах, в том числе и в рамках должностной инструкции описано, что например инженер программист 2й категории - это сотрудник с высшим образованием по специальности и таким-то количеством лет опыта. Это формальный подход, на практике мне дали 2ю категорию существенно раньше, чем "положено".  
  

Тем не менее, сейчас все равно используются эти 3 понятия (с довольно плавающими границами) для того, чтобы как-то разделяться уровень программист. Точное определение можно получить только в рамках компании и тех требований, которая она предъявляет. Например где-то один и тот же программист может быть сеньором, а в другой - максимум мидл.   
  

Может ли использоваться с целью занижения зарплаты? Может. Мое мнение, что в данном вопросе важно не "звание", а то как твой опыт и твои навыки покрывают запросы чужого бизнеса. Отсюда и вытекает твоя стоимость на рынке. И где-то будучи джуниором можно получать больше, чем мидл в другом месте, зависит от предъявляемых требований. Хочет ли работодатель купить дешевле тот же скилл? Хочет. Есть компании, где критерии формализованы, в рамках этой компании рост более прозрачен.  
  

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

Это все лично мое мнение, не претендующее на истину) 

 Junior : студент старших курсов и без опыта работы. Если с человеком нужно сидеть и постоянно помогать. Можно доверить баги, но никак не рефаторинг или таски на 1-2 недели, то это 100% джуниор. Опыт фултаим: 0.5-1 год. Либо партайм: 1-2 года. Предметную область знает слабо.  
  

Middle : фиксит баги быстро, может делать таски на 1-2 недели, принимать архитектурные решения, рефакторить. Опыт фултайм: 1-2 года. Предметной областью владеет достаточно, что бы обсуждать с коллегами, спорить, искать решения.  
  

Senior : Тут либо довольно крутой, скилловый Middle, умеющий очень хорошо кодить и знающий предметную область о-о-очень хорошо. Опыт фултайма 5-7 лет.   

Либо просто Middle, который решил уйти, но его апнули, что бы не уходил. Обычно молодые Senior этот случай.  
  
*есть ли принципиальная разница этих понятий*  

Есть немного. В вебе растут быстрее (см. молодых синьеров). В геимдеве посложнее, т.к. область специфичная и набить руку в рендере, физике и прочих PS4SDK дома не получится. Но понятие Software Engineer никто не отменял. Software Engineer считаются довольно универсальными и могут быть Senior в любой предметной области, конечно если это не рокетсаенс, которым Senior в жизни не занимался. 

 В моей голове так:  

junior - если надо обязательно делать code review после выполнения задачи, и с большой вероятностью после него что-то править.  
  

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

senior - может проводить code review. 

 Я понимаю это [так](http://hex.pp.ua/blog/junior-middle-senior-developer.html). 

 Джуниор - способный выполнить 80% задач по уже готовому к разработке проекту с надлежащим качеством  

Мидл - способен выполнить 100% задач по проекту с надлежащим качеством и быть тимлидом - какие технологии, фреймворки, плагины использовать, какую делать архитектуру проекта и умеет оценивать задачи по времени для дальнейшего планирования проекта, оценки перед инициацией проекта, и умеет писать ТЗ  

Синьор - тоже что и мидл только круче и опытней + совмещение с управляющими должностями 

 Вот тут есть хорошее описание [https://bizzapps.ru/b/raznitsa-mezhdu-programmista...](https://bizzapps.ru/b/raznitsa-mezhdu-programmistami-senior-middle-junior/)