10000 часов до мастерства.
Но 8 часов в день, считая еще плюсом время на учебу - это очень тяжко. Отдыхать тоже нужно, так что обязательно планируйте время на сон (7-8 часов минимум), физические тренировки (дома или в зале) и просто отдых. Так что, посчитаем 4 часа в день. Если заниматься и по субботам тоже, то можно планировать 300 дней в год. Итого 1200 часов в год, 3000 часов до окончания университета. Это вполне хороший запас времени. Я думаю что за это время вполне можно добраться до мидла.
Теперь о том кто же такой мидл, чему учиться. Ключевое понятие - самостоятельность. Джуниору нужна точная постановка задачи - сделай так. И он переводит с русского (или английского) языка на язык программирования. По сути это близко к понятию "кодер". Джуниор может очень хорошо знать язык, технологии, писать прекрасные программы. Но пока он не принимает самостоятельные решения - он остается джуном.
Мидл умеет принимать собственные решения в пределах своего модуля. Тут уже начинаются основы проектирования: SOLID, KISS, YAGNI, MVC, MVP и т.п. страшные слова. Главный критерий - практика. Поэтому я бы советовал реализовывать в качестве практики какой-нибудь долгоиграющий проект. Это даст важную практику работы "вдолгую", позволит ощутить такую радость как "сопровождение". И сразу же учиться применять стандартные для вашего стека инструменты, будь то composer, npm, gradle и др. Обязательно git. Обязательно приучать себя писать тесты (юнит-тесты, функциональные и интеграционные) - это будет большим плюсом в дальнейшем. Плюсом читать умные книги и сразу же применять то что в них написано на практике. Это в первую очередь "Программист-прагматик", "Идеальный программист", "Чистый код", "Чистая архитектура", что-нибудь по TDD. Плюсом документацию по выбранным технологиям. Несмотря на то что это скучно, в документации часто можно найти важные нюансы, которые редко встречаются в других источниках. Документацию можно заменить хорошими книгами по той же теме. Но тут сложно советовать абстрактно, не зная какой стек вы выбрали.