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 в жизни не занимался.