Если говорить про именно позицию мидла:
- уверенное владение основами языка + не сильно глубокое, но понимание его подкапотностей (скажем, не просто знать, какие есть типы данных, но еще и как они работают и почему + сложность операций с ними);
- системы контроля версий (git норм)
- основные паттерны (особенно те, которые реализованы в языке нативно);
- если хотим в веб-разработку, то, как правильно указали выше - знать, как работает интернет, что такое http, rest и пр. Не помешает самое общее понимание того же TCP/IP;
- SQL хотябы на базовом уровне. Если мы говорим о веб-разработке, то мидлу следует понимать, во что выливаются его (и не только) ORM-конструкции;
- для веба - понимание архитектуры веб-приложений и принципов работы веб-серверов;
- в 2020 следует знать, хотя бы базово, что такое контейнеризация, уметь работать с docker;
- понимание, что такое CI/CD, и как с ним жить будет несомненным плюсом (многие считают это за обязательное требование, как по мне - не горит);
Особняком стоит то, что ТС назвал "умение писать чистый код". Это для мидла мастхев, но это полный синоним фразы "опыт работы в команде над коммерческими проектами". Писать код много можно и одному. Но научиться писать чистый понятный код в одного крайне и крайне тяжело. К сожалению.
Совет: автор, если считаешь себя хоть сколько-нибудь готовым, не гадай: просто сходи на пару собесов на мидловую позицию. Бери тестовые, решай, получай фидбек. На собесах придет довольно хорошее понимание, что хочет реально рынок сегодня. Не бойся ходить на заведомо провальные собесы, никто в ЧС не занесет :) Многие компании прекрасно тебя "пересобесят" через полгода вне зависимости от того, насколько плохо прошло предыдущее собеседование.