Начну с того, что обучиться программированию и выучить яп (язык программирования) это две немного разные вещи.
Речь о том, что выучить один из яп - не проблема. Проблема - когда вы не можете его применить.
Для начала поставьте цель, для чего вы хотите выучить какой либо из яп? C# в основном используется для создания мобильных и компьютерных игр(это не означает, что его нельзя применять в любой другой области, просто, тут он эффективнее), а тем временем питон - для написания и обучения ИИ(хотя, на нём можно спокойно писать 2D игры).Выбрали цель? Теперь разберёмся с принципом действия:
1. Учим выбранный яп.
2. Изучаем библиотеки и фреймворки.
3. Изучаем IDE (среду программирования).
4. Учим математику (как показывает практика, тут то она и пригодилась)
Изучили? Молодцы. А теперь вместо обучающих проектов, попробуйте сделать что нибудь более менее интересное и презентабельное.
А теперь перейдём непосредственное к сути вопроса, способов два:
1) Книги (Но только не "программирования за 31 день" или "для чайников". Берите конкретную литературу по выбранному языку и среде)
2) Курсы.
После изучения основ - практика, и только она. Ничего больше писать хороший код вам не поможет.