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