At last month's Riviera Craftsmanship meetup the eternal question came up. Not about the meaning of life, but the first language we should learn. I mean the first programming language.

The person who came up with the question said that he used to think Ruby had been a good choice, but it doesn’t seem to have good perspectives anymore.

Which language to choose, is this an easy or difficult question to answer? It really depends. It’s easy because there are no good or bad answers, in my opinion, so you can say almost anything and that’s the very same reason why I think it’s also difficult.

In fact, during that 20 minutes that we spend on discussing this question we didn’t settle on any language, we didn’t even try to. I think this is a good sign. It means that we are quite pragmatic.

So instead of languages, questions came up. If you are about to start programming, you should answer some questions before you pick a language.

  • What is your goal?
    • Do you want to do some web development?
    • Are you looking for some data mining?
    • Do you want to automate some tasks?
  • What do you want to learn?
    • Do you want to learn how to use a language without understanding what’s under the hood?
    • Do you want to learn about programming in general?
    • Do you want to learn about abstractions?
    • Do you want to learn about idioms to use?

I don’t want to advocate for any language. If you answer those questions, it will enable you to ask better questions from friends or on online forums. It will help you to avoid the suggestions of those articles that are saying whatever you want to do, learn Javascript because it has the ultimate answer for any of the questions you might come up. Or Python. Or C. Whatever.

I thought a lot about what kind of language you should start with. Something low-level like C, or a high-level one, like Python. Again, I think there is no good answer and it also depends on your personality. Maybe someone would give up really fast learning C but would manage to learn Python and later on would progress to learn more low-level programming if needed at all. Perhaps someone else would never want to learn anything like C after having seen the ease of crafting an application in a high-level language but would have had no issues at all learning something low-level in the beginning.

Conclusion

So what to choose? As John Sonmez says in his book the Complete Guide, it doesn’t really matter, just pick any. I tell you the same. After answering some questions about your whys, pick any that fits them and start coding. The rest will come. Just don’t get paralysed by analysis.