Чтобы считать себя Junior'ом, нужно иметь обзорные знания по технологиям, с которыми предстоит работать, некоторый опыт взаимодействия с ними и желание учиться.
Middle-разработчик - тот, кто может реализовывать проект целиком, без менторства. Делать это сравнительно чисто и за вменяемые сроки, и уметь разбираться в возникающих вопросах самостоятельно. То есть предметная область должна быть известна ровно настолько, чтобы ты всегда знал, как сформулировать вопрос