On the other hand, if you want to be a quality programmer, that is, a good programmer — and not just hope or falsely claim you are one, because hey, you can actually write a program — what you have to work through is a six-step language set:
First: assembly language. You need to be good at this in order to understand what the computer actually does, and this is the only way you can learn that. Grab an emulator of a small machine that has lots of addressing modes, a variety of different kinds of registers (accumulators, index registers, stack pointers, condition codes, paging registers) and have at it until it’s as familiar as breathing. The lowest really useful common denominator here would be a 6809 emulation. Then look at a machine that handles memory management, and wrap your head around that.
Second: c. You need this to be able to write high-performance code. Period. This is the holy grail of writing code that uses resources effectively, runs almost as fast as assembly, and puts no more constraint on you than assembly does — in other words, to work in c, you will need high-quality programming skills. The skills you learned from assembly language programming will transfer directly over.
Third: c++. You need this so you can understand object-oriented programming. c++ is where efficiency and power meet in a paroxysm of Huge Hammer Crushes Any Nail; if you can’t write whatever you can imagine in c++, you probably can’t write it anyway (and you probably shouldn’t, because you aren’t a very good programmer yet.) c++ is a superset of c; you’ll have a terrific head start, and a very large number of the new ideas are worthy and interesting so this should actually be fun.
Fourth: Python. You need this so you can whip out fabulous local and server-side scripting for any purpose whatsoever; there’s nothing better. You’ll learn it in a very short time, because steps 1–3 have equipped you to learn any language that you want to. Python will teach (or remind) you about the value of consistent formatting while it dazzles you with the ease of doing many, many useful things. Python is cool.
Sixth: Go. The reason you want this one isn’t its popularity; it’s because Go approaches some things directly that the above languages deal with only after a considerable amount of work on your part — the ability to easily run all manner of operations concurrently with almost zero pain. The fact that it is becoming so popular is just icing on the cake. Your c and c++ knowledge will make the learning curve a trivial matter. Go is a fast, highly efficient language, too, so it’s really worth your time.
In fact, now learning any language that doesn’t make a complete hash out of human readability (like APL does) will come to you as fast as you can read about it. You know why? Because now you’re a quality programmer.
Somewhere along this path, you need to develop two more things: The (trivial, frankly, but still absolutely required) ability to write markup languages (the poster children for this are HTML, CSS, and Markdown) and the ability to write good documentation. If you can’t do the latter, you’re going to present more of a problem to those around you than you are a solution. Sound bombastic? Not at all. Documentation is the reason other programmers either love you, or hate you. And that really counts; never think it doesn’t. It affects job opportunities, reviews and recommendations, and your ability to understand what in the living hell was written last year, and why. By you or anyone else. Bad documentation (or none) should make satanic music begin to play in your mind. Bad smells, too. And twitching. There’s definitely twitching involved.
Teams. You’ll need to learn how to work with teams and share your work effectively. A critical tool here is Git. You probably learned this as a side effect of the above six steps, but if you didn’t, you need to get after it ASAP.
Skills that support all this really effectively are math; typing; literate writing; high retention when reading; a good memory; and patience. Lots and lots of patience.