Рекомендую посмотреть курс CS50 от гарварда. На JavaRush есть его неплохой русский перевод. Там будет все то, что необходимо знать начинающему.
Вообще, он один из крутых курсов, посвященных этому. А так - выбираешь язык, который подходит к той области, которой ты хочешь заниматься, берешь книгу по этому языку, читаешь. Пишешь много кода. Читаешь книги по паттернам (банда четырех в помощь) и организации кода (много разных), читаешь книги по алгоритмам (грокаем алгоритмы, например) (после того, как выучишь основы синтаксиса языка, чтобы не думать С ПОМОЩЬЮ ЧЕГО это сделать, а думать непосредственно, КАК это сделать). И практика, практика, практика. Без нее никуда.