Что изучать, на что тратить свободное время, чтобы в будущем стать востребованным программистом с нормальным заработком?
Ответ на вопрос будет сильно зависеть от того, в каком направлении вы думаете развиваться. 
Будет ли это сетевое программирование? Тогда это си, в основном.
Может быть, веб-программирование? Тогда тут могут быть php, javascript, python, ruby.
Захотите разрабатывать программы на десктоп? Вам нужны c# или java.
На мобильные платформы? тогда java и objective c (плюс swift).
Или податься в разработку игр? Тогда либо c++, либо с# (для Юнити - наверное, самой популярной платформе).
Хотите экзотики? Приглядитесь к функциональным языкам - Erlang и Haskell.
Разработка железа и драйверов для железа? тогда си (без плюсов) и ассемблер.
Определитесь, что вы хотите, потому что всё объять не получится. Выберите один (или два) направления и добейтесь хорошего уровня в нём. А потом вам будет уже легче двигаться дальше.
Мой совет - попробуйте изучать C# или Java (они во многом похожи) для софта, или Javascript и php/python для веб-приложений и сайтов.
Добавлю, что очень правильный совет дал @tsarevfs - помимо языка программирования, хороший программист должен знать несколько инструментов - и в первую очередь, это система контроля версий, например, git. Плюс юнит-тестирование (хотя это можно начать изучать позже, через годик-два). Плюс - нужно хорошо знать свою IDE, в которой работаете; не вздумайте работать в блокнотиках!
Ещё помимо практики нужно знать теорию - читайте Макконнелла, Фаулера, Мартина, Бека.
Подпишитесь на хабре на пару десятков хабов и регулярно читайте всё подряд. Через годик ваш уровень понимания статей сильно вырастет.
Я сам преподаватель программирования в колледже, и, к сожалению, таких желающих изучать там очень мало. Пишите мне в личку, если будут вопросы.UPD. Важное дополнение из обсуждения в комментариях (спасибо @Argentum88 @Deerenaros )
Чтобы стать профессионалом и "востребованным программистом с нормальным заработком", нужно очень хорошо понимать внутреннее устройство тех систем (платформ, фреймворков), на которых идёт работа. 
Для этого нужно заглядывать вглубь. Изучив различные мейнстрим-инструменты, посмотреть на аналогичные менее популярные системы. Изучать исходный код используемых open-source библиотек. Написать свою подобную систему. Для web - написать свою CMS (хотя бы базовую). Для десктоп-программ - попробовать программировать без навороченных библиотек, которые делают рутинную работу за программиста. Для разработчика игр - сделать простую игру на базовом инструментарии платформы, где всё придётся делать своими руками.
Всё это даст возможность проникнуться, почему всё делается именно так, даст понимание взаимосвязей разных частей программы.
А потом, осознав это, выбрать один из уже готовых инструментов, и продолжать писать на нём, уже обладая более глубоким его пониманием.
на любом языке программирования хороший программист получает зп в столице за 200к рублей.
так что без разницы какой из трендовых языков вы выучите