Отвечу абстрактно. Без привзяки к фронту/беку
Миддл это просто специалист который может четко сам выполнять поставленные задачи, без чуткого руководства и явных указаний. Конечно же это практика, при чём прежде всего коммерческих/оплачиваемых проектов. Те определенный профессиональный опыт, который позволит прочувствовать технологии, людей, команды, бизнес задачи.
Так же способен сам принимать некоторые тактические решения, по тому как именно делать некоторые штуки. Таким образом, как только вы перестаёте себе задавать поставленный в топике вопрос, вы уже ближе к мидлу ;-)
Сеньёр это логическое дальнейшее развитие, здесь уже человек готов принимать более серьезные решения по структуре (и во многом архитектуре проекта), многое планирует сам, способен получить от продакта/бизнеса постановку проблемы и сам сформировать задачу и решить её грубо говоря в одиночку. По задачам, не касаемых его профиля, он будет успешно делегировать и/или сотрудничать с другими специалистами, снова таки, без дополнительной опеки, а сам берёт на себе ответсвенность.
Поэтому кстати, многие засиживаются в миддл уровне, не потому что они прям ой ой плохие спецы, совсем нет. Просто далеко не для всех подходят моменты с принятием решений, активные действия с другими людьми командование и тп.
НО, сразу стоит отметить, тут выше уже писали, и я тоже скажу. Многие компании используют термины джуниор/миддл/сеньйор на свое усмотрение, поэтому нередко это субъективные параметры.
Но, как мне кажется, то что я описал, будет как минимум одходить под большинство требований и мидла и сеньйора, а может даже и переходить у некоторых в более высокую градацию.
А что касается конкретных технологических штук. то в сети полно подборок. путей развития (гугли Developer Roadmap и подобное), но без практики в релаьных проектах, желательно коммерческих, но можно и многих опенсурс, это мало что значит.