Если понимаешь алгоритмизацию и логистику - то можешь начинать изучать простенькие языки (Pascal/Delphi), в которых почти все операторы являются эквивалентами их значения на английском. Если не понимаешь - почитай что-нибудь (книги, статьи, что угодно, чтобы развить эти навыки), иначе даже линейное программирование тебе будет даваться тяжко. Потом ищешь книгу по вышеупомянутым языкам, читаешь теорию, выполняешь практику, если что-то непонятно - гуглишь. Выучив 1 язык ты уже будешь более-менее понимать что ожидать от программирования на других языках, не считая их особенностей. Не знаю что изучают в российских вузах, лучше ориентироваться прошлые комментарии, но одно знаю точно - самообучение и программист - две неразделимые вещи.
И да, codeacademy (и остальные аналоги) может и хороши для изучения синтаксиса других языков, но никак для обучения базам.