Для начала, C# разработчик Middle должен знать, по крайней мере, то же самое, что знает junior.
Для junior это систематическое знание CLR и C#.
В отличие от juniora, middle обладает практическими навыками и опытом. Это самостоятельное решение прикладных задач и умение работать в команде. Он не нуждается в контроле и умеет сам определять границы своей компетенции. в Мидле количество вопросов и количество ответов почти одинаково.
C# разработчик Middle должен:
- Уметь самостоятельно решать сложные проблемы (анализ, выбор наилучшего решения) в рамках собственных возможностей (часть приложения, над которым вы работаете в данный момент).
- Иметь хорошее знание инструментов (языков программирования, фреймворков).
- Не зацикливать запрос к такой базе данных, т.е. знать как паттерны, так и антипаттерны.