Первое: Работа программиста - это работа человек VS машина.
А работа учителя - это работа человек VS человек. И разным людям нравится разное. Один умеет часами сидеть нискем не общатся искать проклятый баг.
А другой умеет часами объяснять одно и тоже ученику, который не понимает, при этом не создавая конфликтных ситуаций.
И второе: Знания умения и навыки которые нужны для отличного преподавания. Не теже самые, что требуются в профессии.
В первую очередь вас учат базовым вещам. Основам, максимально широким в применении. Максимально избегая какую либо узкую специализацию.
В то же время ЛЮБАЯ современная работа программиста - это специфика.
Я вот понятие не имею что такое Бэк Энд, фронт энд. Что там навыдумывали за последнее время. А программисты от туда, понятие не имеют тонкости десктопных программ. Так же с геймдевом, инженерными системами, и т.д.
Учеников бесмысленно учить этому потому что они еще не выбрали чем будут заниматся. Им преподают академическую базу. Которую кстати практикуюище программисты часто забывают.
Спроси что такое икапсуляция. Никто четкого определения не скажет. Не загуглив. Просто потому что знание четкого определения, не нужно для работы. Примерное понимание да.
В Ньютона говорят студенты кидались яблоками-лектор он был неважнецкий. Преподавание самостоятельный вид деятельности и хороший препод-большая удача в жизни.
Я закончил аспирантуру, но желания преподавать не было, решил стать практиком. Прошло много лет, теперь можно много чему научить студентов... но что-то вот лень... Может когда надоест, пойду на кафедру. Не знаю, всё это такие разные вещи.
А не допуска ли, что кому-то просто нравиться преподавать. В конце концов, если брать даже Россию, и Аркадий Волож заведовал кафедрой в МФТИ (не знаю, заведует ли сейчас).