Как "преподаватель"
1) В идеале, нужно программировать на уровне мидла + социальные навыки.
Очень сильно зависит от итоговой цели и возраста.
2) С оценкой проблем не возникнет если выполнен 1 пункт + 1 практическая задача.
3) Самый эффективный - практика с объяснение проблематики и решение.
Частая проблема если преподаешь взрослому человеку, он думает что ему нужно понять принцип, а потом пойти уже делать. Как итог, самая сложная часть, доказать что это не эффективно.
4) Попробовать сходить к другому преподавателю.
5) Уметь строить ассоциации из других сфер.
Тк как программирование, это образ мышления. И самое трудное это сделать сдвиг в этом направлении.
На счет методических материалов не скажу.
По большому счету большую часть практики брал с кейсов из реальных задач.
А сам процесс достаточно лёгок, тк как никогда не испытывал проблем с общением или построению отношений