Здравствуйте. Пройдёмся по порядку:
1) Программисты бывают разные:
- системные программисты пишут ПО для операционных систем (ОС) и сами ОС (в основном языки С/C++);
- прикладные программисты. Пишут ПО "для специалистов не ИТ областей" (например 1С);
- веб-разработчики (пишут вэб-сайты, языки PHP/CSS...)
- специалисты по работе с данными (Data Engineering/Data Science/Machine Learning. Языки Python/SQL)
Это далеко не полный перечень. Каким программистом вы хотите стать?
2) Определите свой уровень подготовки, математику вы знаете на каком уровне? От этого зависит выбор курсов.
3) Выбор курсов большой и успех их прохождения зависит от вашей подготовки и усидчивости. Посмотрите следующие площадки:
- Coursera, Stepic (лучше смотреть курсы от крупных вендоров - Яндекс, Mail.ru group, крупные университеты.
- Дальше можно получить диплом на курсах повышения квалификации, переподготовки. Но это уже когда работу найдёте в конкретной области.
Хорошие курсы - субьективная оценка, зависящая от автора курса, качества программы, уровня преподавателя, уровня подготовки
учащегося и многих других факторов. Рекомендую попробовать силы на онлайн площадках (Coursera, Stepic).