Сперва нужно определиться, что именно мы понимаем под определением «программирование»?
В каких компаниях или проектах хотите работать? Изучить их требования к языкам, навыкам, опыту. СУБД? Web? Скриптовые, компилируемые языки? Java, Swift, Lua, C#, C++, PHP? Или планируете использовать сразу нескольких языков? Или ваша цель вообще программировать логику в игровых движках, на визуальных блочных компиляторах?
Исходите от задач и проектов, которым планируете заниматься.
Безусловно, программированию учат и в школах и в ВУЗ-ах. Но они дают по большей части теорию, базу, которая сильно оторвана от реальности. Тенденции и требования постоянно меняются, строчки кода буквально мутируют.
Короткие курсы и видео уроки дадут вам синтаксис, но не программирование. Вы будете примерно понимать «о чем», но не «как». Поэтому, например, тестовое задание по вопросам, которые вы проходили в теории, могут быть совершенно не того уровня, который требуется работодателю. Кроме того, еще на входе компании просят прислать решение задачи, чтобы посмотреть из него «кусок кода», и на первой же ступени определить подходите вы или нет. Список проектов в которых вы работали тоже имеет значение, а в ВУЗе работать одновременно над хорошей учёбой и писать свой код очень сложно.
Если же вы решили, что именно код — ваше все, то практика, много практики. Поэтому, курсы стоит выбирать именно те, где вы работаете непосредственно «на портфолио», и те, где вам будут давать писать код для настоящих проектов, а не пересказывать решение типовых заданий по учебнику.
Я всегда считал, что программированию можно научиться самостоятельно. А что делать с математикой? Она ведь тоже нужна.
Курсы+самообразование+репетитор(делательно из крупной компании) и вы станете суперпрограммистом. А еще лучше валите в сша или японию. Там из вас в тамошних вузах суперпрограммиста сделают.