As someone who is a coder:
My "career" switches with each job. I go from Defense, to Logistics, to Mathematics, to Systems Software, to now Databases.
I'm not trained in all these to 10,000 hours. I have 25+ years at this, and I still have to learn at every job when I start.
So, the most important thing is the core. The very core competencies of a programmer:
- Rigor - You must be willing to rigorously think things through.
- Mathematics - With the above, most of what a computer does is... math in the end. Algerbra is probably the most essential, ironically. Followed by Discrete Math. The rest is all nice to have.
- A bit of "Computer Science". Learning algorithms, what O(n) means, etc. This helps you understand how to think.
Note: I never mentioned a computer language.
A computer language is how you take all the above and turn it into something.
You should work on learning a few. But honestly, one you know 2 languages, you know 90% of all languages, and can read most code.
The languages I'd suggest: Python, and C.
People will curse me for C. But honestly for understanding how a computer works at a low level, there is no better language, it strips away the bullshit and leaves you to deal with the machine, but it doesn't force your nose into assembly, which is probably a bit much for a young programmer.
Python, is what you learn to do "real work". I interview in Python, Python and Python... and maybe a bit of Python. There's a reason. It is a language that you can really get things done in quickly, and manipulate things easily. It is the "anti-C" in many ways :).
One can argue for Java also. But really, Java is miserable without an IDE, and the machine does so much coding for you, I think it is a bad early language. Once you know the first two... I think it is a great one to pick up.