Writing

Software, technology, sysadmin war stories, and more. Feed
Wednesday, November 14, 2012

Asked to choose a programming language for a beginner

A couple of weeks ago, I went to something called Startup School which was held on a Saturday at Stanford. The night before, there was a reception in which a bunch of people (largely from Hacker News) hung out, had drinks and a buffet dinner, and talked business and technical nerdery for many hours.

I met a whole bunch of people there, and most of them were the sort you'd call a "technical cofounder" if you were organizing a new company. Only a couple of them were self-described as "nontechnical" - they were designers, PR people, and that sort of thing. Basically, they distinguished themselves as not being "coders" or even "developers", depending on who you talked to.

One of these conversations went into the differences between these worlds, and the guy I was talking to started saying how he wanted to become more of the technical sort. He had a couple of people working for him who were doing that kind of stuff at the moment, but he wanted to be able to "get into the code" and see what was going on.

That's when he asked me The Question: which programming language should I use to start learning this stuff?

It seems like an innocent question, and from him, it probably was, but what surprised me is where my head went immediately after he said it. Instead of jumping into the short list of languages which I tend to appreciate and use for solving my own problems, I instead started sorting them by some other metric. I don't have a name for it, but it was something like "which language has the most training wheels and padding so this guy can't hurt himself?", and that surprised me.

I won't share the contents of that list, but it doesn't matter. Anything I could say would only serve to enrage some community while giving some other community a nice smug feeling of satisfaction. You can just imagine what's on that list for your own purposes.

I brought up this situation with a friend, and he said he would have given a language which is really fiendishly complicated and painful. The idea is that this would tie up the aspiring programmer for a long time and hopefully make them leave him alone. I said that might not work so well, since this person probably will orbit to some other group in the party, and then ask the same question and mention the advice they just got from you.

When they say they were told to try painful language X, other people in the know might not realize what's going on and say how that's completely wrong for someone in that situation. They might then think the person who came up with that idea (my friend, in this case) was being mean or evil themselves. They'd be right, too.

For my part, I think I finally managed to steer away from any kind of value/judgment call and just mentally flipped back to an old post and asked "what have you tried so far". I didn't get a very good answer. That question is more about detecting motivation than trying to figure out any particular language preference. In other words, it's the magnitude of the answer which matters here, not the direction.

I really don't think the flavor matters when you're starting out. Just pick something and see how far you can get with it. If it doesn't work, switch gears and try something else. Eventually you should find something where you can go really far with it and feel satisfied, or you may just find that none of them work for you. That's okay too, since some things aren't for some people. At that point, you can put it away and go do something else in a completely different field, or stay in the field and try to forge your own path by inventing your own tools and techniques. Either way, you'll have the experience of having tried a bunch of stuff so you can have some idea of how you are wired.

Isn't that a nice alternative to programming language wars?