Как по мне, то лучше всего сделать, как сказал ScorpLeX. Ибо сам так начинал, у меня было и высшее и програмить я мог (я так думал). Мне тоже советовали, посмотреть проекты на фрилансах, потренироваться. Но когда ты их выполняешь, то тебе кажется, что всё правильно, ты ведь сам оцениваешь их, а не крутой дядька программер. Начал искать работу, все хотят с опытом, не менее года, искал 2 месяца (ходил, звонил). Уже был готов бесплатно, работать, чтоб опыт хоть какой-то был (по форумам полазил, тоже так советовали). Ну и вдруг попал я джуниором в одну фирмочьку, где я понял, что ничего не знаю и большие дядьки мне обьяснили, что это не то, а это так. То есть дали направление, поделись опытом и т.д. Так что я считаю, что только работая, ты станешь программистом. И ты должен любить это дело, иначе ты не будешь программистом. И за деньгами не гонись, первое время будешь очень мало зарабатывать (т.к. джуниоры в Москве зарабатывают от 20 до 30) и если ты не любишь программирование (соответственно и не будешь развиваться), то ты и не станешь больше зарабатывать.
А что учить?
Если ты выбрал C#, то сейчас в моде MVC (всё же мир движется к вебу), WPF.
Обязательно должен знать базы данных MS SQL и не просто знать, а хотяб уметь писать простенькие процедурки, запросики (т.е. не просто select, update, insert – этого мало).
Паттерны изучай обязательно (без них ты не программист, а простой школьник)!!!
Да в принципе тебя на работе направят, главное не упирайся и слушай дядей. Ты можешь чего-то не понимать и думать что это бред и не правильно. Но как вырастишь, поймёшь ))))
Удачи.