If you like this post and want me to hyperlink it, just say so in the comments – I know dozens of sites for these things, I’m just too lazy to fill them in right now.
Here are some things you can try if you’re just starting out as a coder.
- How about the way that websites work? You’re going to run up against CSS and HTML eventually, like most everyone who programs does, but in this case I would recommend you grab yourself a copy of Ruby on Rails and start doing some tutorials on that. Some people criticize RoR for letting you reach a superficial understanding of the software without letting you really dig deep into it; I think that the skills will come with time, and it’s best to follow a course on Ruby itself and Ruby on Rails concurrently (yes: The software package has different courses than the programming language. They’re that different). Honestly, web isn’t really my thing right now, so you should look around some more.
- I’m just starting out. What’s popular and why? Python. Because it’s easy to read, easy to code in, and yet still powerful enough for freaking Google to professionally endorse it. Do it. Your future self will thank you in more ways than you can imagine. It’s what I first learned, and no matter how many languages I go through, I keep coming back to it as my Swiss Army chainsaw of choice.
- I don’t want to work at Google, I just want something that will get me on my feet for a career. Oh, gosh, I wish I was as practically-minded as you. If you’re on Windows, learn the .NET framework, preferably with ASP.NET and C# – everybody’s doing it. If you’re on a *nix-box (Linux, BSD, modern Mac, etc.) your best bet is probably Java. Although Java will “only” have buying power for the next five-to-ten years in entry-level positions.
- Interested in mind-bending mathematics and programming techniques? Look no further than Haskell, the purely functional programming language. Haskell is a complete mystery to most people: It is completely different from “conventional” programming languages, and this pretty much reverses the usual pattern of learning to use it. Hard things become almost idiomatic, like the infamous Python map() function’s utility, and supposedly easy things like printing “Hello, World!” can lead you directly to a confusing lecture on monads, programming side-effects, and lazy evaluation. Of course, the flipside is, if this is the first language you learn, none of this will feel weird to you until you try something else.
- Whoa, whoa, Quinn. I don’t want to get too crazy here.: There are plenty of other options to Haskell you can try out. The LISP family of languages, stretching back to John McCarthy’s work in 1958, is similar in style to Haskell but perhaps a little closer to what other programmers are used to. Scheme, a lightweight LISP dialect, is particularly notable for being the language of the incredible book Structure and Interpretation of Computer Programs. The Python programming language has a whole module called “functools” and “itertools” that serve as a gentle introduction to the same techniques usually used in functional programming.
- What if I want to work as close to the bare metal as possible? I don’t know why I do this myself, but this is pretty much the whole reason I put myself through the meat-grinder that is ANSI C. There’s just something intuitively appealing to know that if I want to, I can code at the level of the microchips that stuffed teddy bears and automobiles work on. And the granddaddy of bare-metal programming everywhere: Assembly language. Note: NOT recommended for beginners. Not because I doubt you can do it, but just because it’s not much fun until you’re able to nerd out about bitwise operations and such.
- I want to contribute to open source projects. Any of the languages above will let you do that. Alternatively, choose the open-source project that you love the most, learn to make add-ons for it, and work your way into its internals from there. That’s what I want to do eventually with Firefox (not my main reason for learning C, though).
- How about something to make me the best number cruncher on the planet? Honestly? Learn spreadsheets. No joke, Microsoft Excel/OpenOffice Calc are actually immensely powerful tools when you really learn to hack their commands. If you absolutely abhor the idea of using the same software your accounting department does, however, then the R statistical programming language is free and excellent, and it comes with artificial neural network packages to boot. Those little bastards are always a hoot.