А насчет базы программирование, я как считаю, всё же надо знать, что такое процессор и память. Чем меньше для тебя магии в коде, тем проще становится. Я для этого немного узнал цифровой схемотехники(в вузе было и сам интересовался), ассемблер ну и Си немного.
Если чисто низкоуровневое изучать, рискуешь года через 3 написать свои первые нормальные программы. Поэтому рост получается и в низком и верхнем уровне, т.к одно другое поддерживает
Херня)
Для программирования нужно иметь понятие о том что такое алгоритм. И уметь эти алгоритмы составлять.