Если твердо решили идти в программирование — то без самообучения тут никак вообще. Будьте готовы к тому, что придется заниматься саморазвитием и обучением очень много.
Фриланс: например на позицию джуниора в команду или просто помощником опытного фрилансера. Основной плюс — обучение на реальных задачах, и возможность учиться у более опытных людей. Дополнительный плюс — возможность работать в любом месте, где есть электричество и интернет и в удобное для себя время. Минус — непредсказуемость/нестабильность доходов. Бывает приходится работать месяцами без выходных от заката до рассвета и все остальное время, а бывает затишье.
Большинство ВУЗов программированию почти не учат по вполне всем известным причинам. А IT развивается с огромной скоростью — за год все меняется очень сильно. Классические ВУЗовские программы обучения устарели **цать лет назад, а за вермя обучения можно отстать от всего мира еще на несколько лет. Так что постоянное самообучение и «рука на пульсе/глаза на хабре» позволяют оставаться в курсе происходящего в мире.