I'd be all in into learning as many programing languages as possible and getting skilled with coding in as many areas as possible.
One has to be young for this because it takes years to master.
No no no. I made that mistake in the 1980's I made a hobby of "collecting" programming languages but failed to develop expertise in what they might be used for.
Yes, learn multiple programming languages. Really -learn- them, too. But if -this- language is pretty much like -that- language that you already know then don't waste your time. Learn a language that's different in more than just the syntax and keyword choice. My suggestions would be:
- Learn C. Just quit your whining and learn it.
- Learn Assembly. It doesn't really matter what flavor.
- Learn an object oriented language
- Learn SQL
- Learning MUMPS (as a counterpoint to SQL)
- Learn FORTH (get a handle on stack handling)
- Learn shell scripting
Maybe javascript for the object oriented choice. Maybe throw in some python.
Ruby, perl, lua, lisp, etc etc ad nauseum - maybe later, on an as-needed basis.
That should keep you busy for a while. A selection of languages like the above list will emphasize key elements that you will use often throughout your career. Also learn certain common algorithms - how to implement a quick sort vs a bubble sort and why one might be better than the other and that sort of thing.
But also
- Learn "Systems analysis" - the steps before "coding" are critical.
- Learn data structures - stacks, queues, linked lists, arrays, structs, etc, etc.
- Learn system administration. Yes, Windows too. Even if you don't plan on getting certs.
- Learn "networking" - often lumped in with system administration
- Learn at least a little about security
- Learn at least a little about file transfers.
- Learn about many facets of -business- because employers want "subject matter experts"
- Learn at least a little about hardware control
- Learn git
- Learn grub
- Learn English, both written and spoken
Depending on where your career takes you (or where you expect to take -it-...
- Learn a little about word processing
- Learn a lot about spreadsheets
- Learn a little about slide presentations
- Learn about CAD
- Learn about graphics
- Learn about application support and even customer support.
Become an expert in -something- but don't be "one dimensional"
Do not let yourself start to believe that the technical stuff is important and the "soft side" (user / customer interactions) aren't.
Do not just depend on my advice - I learned some of these things too late in my career and some of them may not apply today.