Meditations on programming, startups, and technology
New Relic

FAQ: What programming language should I learn first?

Python LogoThere are hundreds of different programming languages out there. As a newcomer you can ignore the fact that most of them exist. However, even if we narrow the list to just a dozen mainstream languages, deciding on what programming language to learn first can be a daunting task. You might find yourself asking, should I learn C, C++, Java, C#, or PHP first? If you ask ten programmers this question, you’ll probably hear ten different answers. Here is my take.

Much as with human languages, programming languages are used to communicate. Interestingly they still involve communication between people, whether other programmers will end up reading/modifying/enhancing your code or you’ll do at a later point in time. Unlike natural languages however, programming languages are unequivocally understood by computers, thanks to the aid of interpreters, compilers, and similar types of software.

Depending on the kind of program you’re trying to write, and in which environment you’re working, you’ll find that some programming languages are better suited than others for certain tasks, even if most common programming languages are labelled as being “general purpose”.

For example, if you want to create iPhone and iPad applications, your best bet would be to use Objective-C. For Android smartphones and tablets, in most cases, you’ll need to become accustomed with Java. If you want to build web applications, you’ll want to learn client-side technologies such as HTML, CSS and JavaScript (of those three only JavaScript is an actual programming language, but the other two are necessary nevertheless). For the server-side of your web application, you’ll probably want to learn a language like PHP, Ruby, or Python (all three have frameworks that will help make most web programming tasks easier and less time consuming), rather than a system programming favorite like C. (And of course, one has to mention SQL if you’re interfacing with a relational database).

So should you start your foray into the world of programming languages with JavaScript? What about Objective-C? SQL? My advice is to avoid starting your programming journey with a language that is tailored to a specific environment. This early in the game, your main objective is to learn how to program – and how to reason like a programmer – rather than learning a specific language. Once you have mastered the fundamental concepts with the aid of a general purpose programming language, you can ease into other languages as the need arises, depending on the type of software you’d like to develop.

This is a profession where most of your skills are developed and honed by actually “doing”. If you grasp the fundamentals of programming outright, you can easily pick up a specific language and framework when you need to build iPad applications or whatever else you’d like to create.

A well-rounded programmer will end up learning several programming languages and tools over the course of their career. That said, if you are just starting out, focus on one language first. While this might seem a tad dull on the surface, the good news is that unless you pick a truly exotic programming language, a lot of what you learn will be applicable to other programming languages as well. Remember that at this stage, above all else, you are learning how to communicate your thoughts in precise statements for other programmers to understand (and for the computer to execute).

For this reason, you can’t really go too wrong with any of the “somewhat mainstream”, general purpose programming languages (e.g., C, Java, C#, Perl, Ruby, Python, or Scheme). That said, particularly if you are learning on your own, I’d advise that you go with a language that will make your learning trek easier. In other words, opt for a programming language that is widely used, well documented, and beginner-friendly. You’re looking for one that isn’t overly bureaucratic, doesn’t require you to manage memory directly, or have a deep understanding of mathematics to get started.

As such, my suggestion would be to start with Python, and use it as a tool to learn the general craft of programming. Learning Python is fun, easy, and useful. You’ll be able to use it for a wide array of projects in several environments (scripting, web, scientific research, etc…).

There are a variety of free tutorials on the web, but if you want a more rigorous/systematic/academic introduction, I highly recommend “Python Programming: An Introduction to Computer Science (2nd Edition)” (USA | UK | Canada).

Once you have learned the fundamentals of programming, have a decent command of the Python language, and have gained some experience with practical Python projects, you should be better armed to evaluate and pick up other languages and frameworks based on the projects you intend to develop or contribute to in the future (Open Source projects are awesome for this purpose).


If you enjoyed this post, then make sure you subscribe to my Newsletter and/or Feed.

receive my posts by email

11 Responses to “FAQ: What programming language should I learn first?”

  1. Aaron says:

    I saw this a while back, it kind of has the right idea: http://www.streamhead.com/what-programming-language-to-learn-next/

  2. Antonio, you chose Python over Ruby as the first language. I am in shock :-)

    • Hehe. :)

      Ruby is very close, and equally suitable. What I like about Python as a first language is that it’s closer to pseudocode than Ruby. When learning about standard algorithms it will be easier to see and translate them in Python than in Ruby (with its heavy focus on blocks).

  3. Harsh says:

    Thanks a lot your article made a difference for me now as i was figuring out which way i should take a chance and i think i figured out.

  4. […] skills while learning more abstract concepts. Google searches on the subject led me to the blog Programming Zen, whose author wrote an article about how to get into computing. He said that beginners should make […]

  5. Kai Hoop says:

    I would say that one should start with HTML, then Javascript, then CSS, then Scratch (scratch.mit.edu), then Java. If you want to, to help with learning Java, you can play a Java-based Java programming game called Robocode (robocode.net). Once you’ve learned Java, there’s almost no programming challenge you can’t handle.

  6. Kai Hoop says:

    Python is a good calculator, though.

  7. Methun says:

    I wand to be a programer so what i do now?

  8. Seramick says:

    Awesome article it really helped me to narrow down options. Also isn’t javascript a scripting language? Not entirely sure on the subject. Thanks.

  9. Cayden says:

    I sincerely appreciate your post on which programming language to begin using. I have no experience programming but am fascinated with app, web, and game design. As an aspiring entrepreneur in college Python will be a great start for my newfound passion for a career. Thank you.

Leave a Reply

I sincerely welcome and appreciate your comments, whether in agreement or dissenting with my article. However, trolling will not be tolerated. Comments are automatically closed 15 days after the publication of each article.

Current ye@r *

Copyright © 2005-2014 Antonio Cangiano. All rights reserved.