Желание решать задачи, да просто ребусы и подобное. Если у тебя есть желание к этому и ты действительно можешь прийти к финишу в этом, то это уже задел для хорошего программиста. Да же самую простую программу надо довести до логического завершения и работоспособности. Поэтому быть упорным в достижение цели - это очень хорошо. Знание математики и информатики очень важны... но даже самый большой двоечник все равно может программировать, так как языки есть разные, есть очень простые, такие, что просто кубики буквально комбинировать надо. Да даже умение спланировать работу на день или просто твой маршрут движение уже есть +, а то кто-то даже во взрослом состоянии не может этого от себя добиться. Так что же надо учить? Да можно ничего, просто играйся в программирование... кажись вон в майнкрафте даже есть.... у кого склонность к логике, то тот и там программирует, а у кого склонность к дизайну, то красивости строит.