What (Programming) Language Should I Learn?

People who want to learn programming often ask me what programming language they should learn.

Great question!  Check out this answer from the Programming Is Terrible blog.

The right answer is usually Javascript or Python.

Javascript is great because you can make interactive web pages using Javascript.  You can make really simple and even useful things and share them with your friends and family.

Another good choice would be Python.  Python has an attractive mix of qualities:

  • it's easy to get started
  • it's easy to build big, powerful, well-structured pieces of software with it
  • there is a big, growing community around it with a positive attitude
  • it's well-documented
  • it's clear and consistent

Ruby is fine.  The Ruby community is full of self-important weenies who think that making a video is a good form of documentation.  But there's nothing wrong with Ruby itself.

Definitely not PHP.  Why not?  It's not because PHP is an inherently bad language.  PHP has a bad reputation that it no longer deserves.  The reason not to learn PHP is the same reason that you shouldn't learn Russian.  Don't get me wrong!  Russian is a wonderful language; I studied it in high school.  There is some fantastic literature written in Russian, and millions of people speak it.

There's nothing wrong with learning Russian.  But you would be better off learning English, Mandarin, or Spanish instead.  Those languages are growing in terms of the number of people who speak them, and the places in the world they give you access to.

PHP programmers are unfairly seen as second-class citizens in the programming world.  Why mark yourself as a second-class citizen if you don't have to?  There's no advantage in PHP that makes up for that disadvantage.  So unless you have some other compelling reason to choose PHP, you shouldn't.

Definitely not C or Objective-C or Java.  They are fine languages, and are the right choice for certain projects, but it's harder to get started; learn them later.


Hey, I hope this is helpful.  Let me know what you think!  Questions are great too.

No comments:

Post a Comment