Так сперва надо решить ты хоч быть прикладным программистом или сис ? Я отношусь ко 2, для системщика нужны знания математики, операционных систем, компьютерные сети, архитектура компа, а прикладному например проще в этом плане но сложно в другом, например ты должен постоянно учить новые библиотеки и т.д