Learn C/C++ (C# is very similar but there are some differences that are noticeable for those who know what computers do at the hardware/assembly level, all of which are mostly there to make writing business programs easier, while in C/C++ the programmer has to manually do things.) Few languages do anything particularly better than C unless you're getting into base-level OS stuff or security stuff (since C has some security vulnerabilities).
After that it's helpful to have some experience in an assembly language and then learn how C translates common instructions to assembly, to get an idea of how to write the most efficient and elegant programs. If you can do that, learning any other language or system is a lot easier.
Real heart of being a good programmer is systems analysis rather than "coding". Any idiot can write code, but what you're going to do as a programmer is solve problems, some of which happen in the real world and have to be modeled the smart way. It's an art and so many people have difficulty with this.
A lot of people want to learn for game programming, but I can tell you that games are simultaneously some of the most frustrating projects and also the least rewarding, and a lot of game programs are kept simple (and can be pretty badly programmed when you look at them). Games are frustrating as a starting project because you're worried about graphics, music, and gameplay. I find a better way for a novice-intermediate programmer to get used to programming is to program simple applications.
The ideal for a programmer is to build a program that does one thing and does it really well, rather than a big application with lots of features. I'd like instead to type in command line "timer" and get the thing I wanted. You can reuse code and even build libraries if several different programs are going to call the same functions.
Another thing that's helpful for learners: use g++ and, this is really useful, learn how to use Makefile at some point. There are versions of this for Windows and Linux both, and on Linux you're going to get very used to Makefiles since a lot of stuff you would install uses them. The advanced IDEs are helpful (and most helpful for experienced programmers working on a team project), but the best way to learn is to be as close to the computer's simplest operations as possible.
These things can be pretty difficult to pick up. For a code editor, Visual Studio Code is pretty good,
Post too long. Click here to view the full text.