Довольно интересный вопрос. Я почитал все ответы к нему, но не увидел главного на мой взгляд...
Для того что-бы стать успешным программистом нужны не только знания, нужен прежде всего опыт.
Знания и опыт - две основные составляющие успеха для программиста. Можно годами учиться, но так нигде и не применить свои знания.
В детстве я мечтал стать сисадмином, не только потому что мне нравилось пользоваться компьютером, а в основном потому что я считал сисадминам не нужно особо напрягаться на работе. Соответственно пошел после 9 класса в колледж СибГУТИ на специальность "Автоматизированные Системы Управления и обработки информации" или АСУ. Специальность круче была только "безопасность". Так вот, за все время в колледже я ни чему не научился - там слишком легко, и все полученные там знания в IT не применить на практике. Потому все же советую не идти за средне-специальным, а поступить сразу в ВУЗ.
В силу своей лени я начал зарабатывать разработкой слишком поздно - в 18 лет, 3 года назад. Было это спонтанно и начиналось с самого дна. Как-то раз друг просто сказал мне "давай верстать сайты" и сразу выдал мне работу. Основы HTML и CSS освоились за неделю. JS на уровне jQuery и использовании плагинов - еще неделю. Мне быстро это наскучило и я стал развиваться в сторону фронтенд-разработки постепенно отдаляясь от верстки. Параллельно осваивались и другие языки программирования. Это все я к тому, что главное начать получать опыт на реальных проектах.
В остальном по своему опыту могу сказать следующее:
Для успешной работы в этой сфере окончание ВУЗа - не обязательно, но не повредит.
Работать начать можно уже сейчас через фриланс, проще всего с веб-разработки.