Bookmark and Share

If you want to be a webmonkey / script-kiddie, sure, learn Javascript first and to heck with a quality skillset. But is that what you want?

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 one— 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.

Fifth: Javascript. This is such an integral component of the web that there’s just no getting away from it. The good news is the syntax is essentially a limited subset of c and c++, with just a couple differences thrown in along with the ability to work directly with elements of web pages. Aside from frameworks (which is a never-ending well of temporary indulgence in new information that is almost always becoming dated before you can learn the latest and greatest thoroughly), the core language can be learned in a day if you approach in as the fifth step as I describe here. The bad news is that it’s not a very good language, particularly in its earlier forms, which you will almost certainly run into if you actually do work in this area. It suffers from some really, really bad ideas about how variables are handed in terms of local and global scopes. Some of the great things that are in c and c++… Javascript falls flat on its face, not so much missing the boat as falling off right into the jaws of a great white. Never mind, you’ll find out. You have to learn it anyway, so grin and bear it. Just don’t try to learn it first. That’s a terrible idea. Repeat after me: Learn it fifth. Fifth.

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.

On the other hand, you could just learn Javascript. And blunder about the way the vast majority of script-kiddies do. Good luck with that.