Для начала необходимо определиться, чем ты хочешь заниматься, в какой области работать или чем бы ты хотел заниматься. Это поможет не распыляться на все подряд. В любом случае , какой бы путь не был выбран, все равно нужно будет закладывать фундамент и знакомиться с основными понятиями любого языка: переменные, типы, массивы и т.п. и т.д.
Чтобы научиться плавать, нужно плавать - (с). Если с областью определился, то пора изучать язык, принципы и начать писать простенькие вещи. Имхо, все эти книги по алгоритмам, структурам и т.д., это , конечно, здорово и будет плюсом. Спросить любого прогера с большим стажем и он насоветует еще 100500 сверху, какие ему пригодились по мере возникающих задач в его работе, один или два раза за всю жизнь. Но все это отнимает чудовищное количество времени, что можно вообще не добраться до кода, к тому же это нужно далеко не всем и не всегда. Достаточно знать, что они существуют и их можно посмотреть в случае нужды. Например, если бы людей перед обучением вождению автомобиля заставляли читать: историю автомобилестроения, полностью изучить устройство автомобиля, правила вождения в других странах и т.п., то у нас бы водили единицы.
По сути у меня впереди есть несколько лет для того, чтобы спокойно получать знания.
Поверь, я бы на это не рассчитывал, время просто летит и не ждет никого. А в жизни может произойти всякое, что потом у тебя не будет ни минуты свободной.
Ну, и помни: специалист - это тот, кто знает что-то очень хорошо и глубоко, а не все, но понемногу. Теже: футболисты, хоть там и присутствует элемент "бега", не являются по нему чемпионами. Искусными мастерами своего дела становятся те, кто оттачивает свои умения до совершенства.