На мой взгляд многих отталкивает от программирование его безликое преподавание, задачи в стиле: «сортировка массива, умножение матриц»… Задания должны быть в первую очередь наглядными, создающими нечто реальное.
Лично я до третьего курса не верил что смогу стать программистом оттого что мы занимались подобными хоть и полезными но совершенно непрактичными, далекими от жизни вещами.
Если бы задачи были в стиле «Написать простейший http сервер, файловый менеджер, игру… » обучение стало бы более полезным. Ведь в контексте любой программы можно объяснить практически любые принципы программирования, но зато сам факт написания чего-то большого, а главное полезного заставляет взглянуть на свою работу совсем иначе, и куда лучше оценить свои реальные умения.