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.

  • Do you like the way that websites look? Then start with learning how Cascading Style Sheets (CSS) work. This will bring you into understanding how it hooks into HTML, and from HTML you can move on into JavaScript, making your own nifty dynamic web pages. My first thoughts: Look into the CSS Zen Garden, a collection of pages where the only thing different about them are the CSS pages used to prettify them. Go in, start tweaking some values, save and reload.
  • 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.

Code like a motherfucker. Use your intuition until you are truly, hopelessly, wonderfully lost in your own mess. Then back up, open a new file. Code a smaller version of one of those problems. Repeat until satisfied. (Do not become satisfied.)

This blog goes up over five years after I first heard about this new jam called “Linux” and spent a sleepless freshman-year night installing it onto my parent’s decrepit Dell, praying to Buddha that I wouldn’t accidentally wipe Windows XP off the entire thing by accident. It took me a long time to get where I am, and looking back on it, I realize that the one thing I was truly missing was time spent actually coding – coding with the wind at my back, coding to test a thousand ideas one at a time. Time that I lost (ironically) reading a thousand sites like this one.

You could say I got lost in the same way that a curious thing called analysis paralysis takes hold: In the face of a near-infinite amount of options of what programming language to learn first, what activities to try, etc., I never dove in and really began coding — or at least coding at that liminal level where you almost don’t know what you’re doing, but you feel solid enough in the fundamentals to press onward.

Now that I’m learning Pygame for myself, after never doing anything like graphics programming before, I’m having that experience day in and day out.

It feels weird to me to describe this learning process as being almost akin to a state of flow — after all, flow is supposed to only happen to people who already have a high level of skill with whatever it is they are doing. But maybe the flow state isn’t being activated just by the programming: It’s the learning that pushes me there. I am really, really good at learning new things. (Yes, learning to learn is a real thing.)

Maybe it’s just that I am very good at putting myself in a position of application of the laws of learning. In any case, enough of me yammering. Go code.

Hey there, slacker. My name is Andrew Quinn, I run this joint right here, “Cardinality.co.” I hope it contains many savoury caramelized nougats of information for you to enjoy. Unless you don’t like caramel. In which case may it be licorice, by my Magick.

This blog is basically me at my most “Internet-accessible” for the moment: I don’t have a Facebook account, and I don’t frequent a lot of websites. That notwithstanding, I fancy myself a bit of a computer enthusiast. When I was 16, I got my first job as an intern at the ever-awesome Akamai Technologies, here in my next-to-hometown of Cambridge, Massachusetts. (That page opens in a new tab. Like all hyperlinks on this website do. Sometimes I wish TV Tropes did that too. But I ramble onward.)

I spent a semester this year at a university. I backed out because I didn’t like it. Or, more accurately: I liked the place, and the people, and the parties; what I didn’t like was the price tag and the poor American education system. I’ll be heading up to my local community college this coming fall, for biomedical engineering – because saving lives is an awesome job to have (more awesome, slightly, than hacking, unfortunately). If I’m lucky maybe my grades there will let me transfer into MIT or Olin with a scholarship to boot. Or maybe this website, which is kind of a tell-all showcase of my various efforts, will.

I dunno. For now, the only thing I really know is that I get up every day, I take a long run outside, I pet my cat Leslie, and I fire up Emacs and hack away at Python/C/Scheme/Haskell/Prolog/Bash/whatever it is I’m up to for the day.

I don’t contribute to any open-source projects for the moment, but that’s because I don’t feel like my coding skills are up to snuff with the bigwigs yet. Also I don’t like revision control systems. Github? Maybe later, when I’ve got some live stuff up and going for myself.

Okay, that’s enough about me. What about yourself? Feel free to introduce yourself in the comments, I love making new Internet chums.

I might post a resume later on listing all the other less-interesting things I’ve done in my short life, but right now, that would be presumptuous. Peace and love,

-Andrew Quinn

Follow

Get every new post delivered to your Inbox.

Join 30 other followers