Which Programming Language Should I Learn First? [Infographic]

Before choosing your first programming language, you should also check out this infographic on What Is Programming And What Do Programmers Do.

So you want to learn programming. Maybe you have asked your developer friends for recommendations and get different answers. They explained with terms that you don’t understand (what is object-oriented?!). To help you to pick your first programming language to learn, here is an easy-to-understand infographic that recommends the best option, depending on your purpose and interest. Details such as learning difficulty, popularity, and average salary for each computer programming language are provided too.

I have also compiled a list of best programming tools and resources for each programming language, to help you get started quickly.

Special thanks to Prithviraj Udaya for allowing me to use his awesome The Lord of the Rings analogy on Quora.

Note: A good programmer must know at least a few programming languages to learn different ways to approach problems. They continue to learn and grow as technology advances. This is just the beginning of your programming journey. Simply pick one and start coding now!

Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program.

– Linus Torvalds (creator of Linux)

Infographic: Which Programming Language Should I Learn FirstClick on the infographic above to view in full size.
Order the printed poster here or get the PDF version here.

I thought Facebook uses PHP? Why is Python everywhere? Is PHP for small sites only? I’ve received a lot of questions and misinterpretations of the infographic, which is understandable. There’s only so much information I can squeeze into an infographic. Check out the full explanation of the infographic & FAQ at the end of the post (Click here to jump).

Best Programming Tools & Resources

Here is the compiled list of the best courses, tutorials, books, etc. for each programming language. Feel free to suggest any new resources to keep this list growing!

Beginners read this: IDE stands for Integrated Development Environment. It is a tool that facilitates developers to write code, which normally consists of a code editor, compiler, and debugger.

Also, you need to understand some important concepts behind programming. Check out: 40 Key Computer Science Concepts Explained In Layman’s Terms.

PythonJavaC/C++JavaScriptC#RubyPHPObjective-CFor Kids

Official site: https://www.python.org/


Free Interactive Tutorial


For Web Development

If you want to create websites using Python, try Flask, a beginner-friendly Python web framework:

Then, you should probably move on to Django, the most popular and widely-used Python web framework:

Official site: http://www.oracle.com/technetwork/java/javase/overview/index.html


Tutorials (Free)


If you want to create Android Apps:

For C/C++

For C

For C++

Note: Theses resources are mainly for Ruby on Rails framework only.

Official site: http://rubyonrails.org/

  • Official Ruby on Rails getting started guide
  • IDE: RubyMine
  • You must have a basic understanding of HTML, CSS, and JavaScript to develop websites using Ruby on Rails. Go to “JavaScript” tab for more information.




Official site: http://php.net/



After you’ve learnt the basics, you may consider to use a framework:

  • CodeIgniter – Excellent for beginners, easy and suitable for small projects
  • Laravel – One of the best and most popular PHP framework

More Recommended Sites

Infographic Explained & FAQ

1. Why is Python everywhere? Are you a Python fan?
2. Favourite Toys Analogy
3. Auto & Manual Car Analogy
4. I thought Facebook uses PHP? Is Google using Python only?
5. What are the challenges that programmers normally face?
6. Is PHP for small websites only?
Do you agree with the flowchart? Let us know in the comment section below. Also, feel free to suggest improvements as I will be constantly updating the infographic and content when necessary.

If you liked this, check out:

At least I'm not an annoying pop-up

If you like our posts, you should give our email list a try. We'll only send you 2-4 emails a month. We hate spam as much as you do!

Comments on this entry are closed.

  • A

    It’s Python, not Phyton.

    • Carl Cheo

      Fixed! Can’t believe I missed this. Thanks for spotting the typo.

  • Like when writing a story, the language you use is not a big deal. Programming is not about the language you use.

    In some programming languages, like in Python or Ruby, it’s a bit easier to grasp some concepts because they read more like plain English. For the same reason, it doesn’t matter what platform or motivation you have, C++ IS NOT a good first language to learn!

    My piece of advice: Go Python. After some time playing with basic scripts and small console programs, go learn what object-oriented actually meant, even pulling the string from the WP article will be a good start. Only then, when you got bored played with Python, come back here and follow Carl’s nice infograph!

    • Carl Cheo

      I totally agree with you. That’s why Python is listed as the easiest and best option in the flowchart. When you are in doubt, choose Python 😉 .

      • taufik akbar

        but sometimes using python is limiting your development, because most of the time there are already plug ins for whatever you want to do. even for the simplest thing (grabbing html from url) and makes you lazy to know “what’s behind the import”. In my college we go from C and cannot use any library so we get the concept then move to either java, c++, or python

      • Peter Kula

        Mostly because its free, and students cannot afford to host on windows server.. but maybe iwth ASP.NET 5 that will change. C# and MVC is defiantly easier than Python and sooo much more convenient…. but the problem is the deployment process and the fees needed. MonoIDE is free and good, .NET5 is in beta and can self host OWIN on almost any platoform now 🙂 We need more C# developers!

    • Paul Carlsson

      It’ s a point of view, but in my opinion C++ is a good language to start with. I learned C++ as my first programming language it’s a bit hard at the beginning but after you know C++ you will comfortable in any other language. After learning C++ for 3years i managed to learn Python,C#,PHP and Java in less than a month

      • Agree. That’s why I mentioned in the flowchart that it will be easier to pick up other languages in the future. It all comes down to whether you want to learn coding the hard way. If you love challenges, go for C++, but make sure you have proper guidance too.

        • Andrés Carmelo Micalizzi Casal

          I’m planning on doing videogames (learning unity right now, but planning to switch over to UE4 when i upgrade my card) what should i do? do I stay in unity and keep up with C#?

      • So you’re saying you should start with the language that makes all the other languages feel like a breath of fresh air? Or that your first language should teach you all the concepts you’re ever going to learn? Neither of those interpretations sit well with me.

        I think this is a chart for deciding which language to learn *second*. Before you try your hand at the suggested language, spend a few months toying with Python or Ruby. Then when you get to C++, you’ll not only have a handle on a lot of the concepts, but you’ll actively seek out obscure bits that will make your life much easier. For example, Ruby has regular expressions and dictionaries/hashes built right in, so you’ll immediately look for ways to make use of that functionality (even if it requires pulling in new libraries).

        Also, the “do X to an array of objects” (.map, .each, .inject, etc.) are a good lead-in to C++ generics, templates, containers, etc. When it’s time to introduce them in C++, the student has already seen how powerful they are. They won’t work as hard to find workarounds to avoiding learning them.

        I can’t be certain, but I suspect if you’d taken a few months with Python, you could have saved about a year learning C++.

  • Agunk Fratell

    Great article for a beginner like me

  • Leah

    CodeMonkey is also a great tool to get kids coding.. unlike other platforms, it teaches a real programming lanaguage (coffeescript) and the kids get to practice writing code and not just dragging blocks

  • You can target Mac, Linux, Android and iOS with C# and Xamarin/Mono, FYI.

    • Peter Kula

      Yea in ASP.NET 5 that is possible.. and should be a “super set” of languages next to those. The core advantage is obvciolsy WIndows Phone and desktops. But also ASP.MVC is so bloody easy, I would say its easier than Python (for Windows Dev) But going back to your comment, I am actaully trying to deploye an .NET 5 MVC site to FreeBSD with MySQL backend… so that makes it even easier for Linux brewed guys to get into C# – Als the Mono IDE runs cross platform and is pretty good Visaul Studio Alternative. I think .NET is going to be a paradigm shifter in 2015! Good bye PHP, finally!

  • a2n

    Objective-C can make iOS & Mac app, not web page, you use the wrong icon.

    • Fixed! Thanks for the correction.

  • Nick Jacobs

    Regarding Java IDEs, I would propose that IntelliJ be listed there, too. The community edition is free and great for Java development, especially in the early stages. I’ve used Eclipse quite a bit in the past and I’m not knocking it, although my preference is for IntelliJ. In particular, I find that the IntelliJ Maven integration is superior and that is a really big win for me.

    • Thanks for the suggestion Nick! I’ve added IntelliJ into the list. I personally had only used Eclipse for Java development, but I’ve heard some great feedback about IntelliJ.

  • Alex

    The way you talk and disregard php in your article is so misleading, that made me loose all credibility on this article. I use it for the whole back end of my company, with php I:
    * Handle over 20.000 spiders that are constantly running and extracting information from different sources (very BIG data)
    * Have 100’s of different script processing and transforming information.
    * Communicate between servers to share the load of every thing above.

    That is, besides serving the whole front end of our site. PHP is not for “small and simple sites”, and saying that is misleading. It’s very stable and easy to develop, my scripts never fail, don’t eat up memory or behave erratically, ever.

    I am not saying that python is a bad language (it’s amazing), or that people should learn one or the other, but you are, and when doing so, you are misleading the readers because of your personal preference.

    My 2 cents:
    * If you want to work for facebook, learn PHP, it’s what they use, otherwise this wouldn’t open: https://www.facebook.com/index.php (and should learn C to work for google, but that’s another discussion).
    * If you want to work in anything web related, learn PHP, after all “It is still the most popular server-side scripting language”, it’s been like that for years, wont change anytime soon.

    • I apologize for the misunderstanding caused. I’ve added clarifications in the infographic explained and FAQ section. Please refer answer #1 and #6 for the explanations.

    • Peter Kula

      You must have a really bad day, every day, to torture your self like that. PHP has died about … 10 years ago mate. You need to wake up or you will never be able to churn you way out of all that code. “Ignorance is bliss”

      • Alex

        Actually, nope. No bad days have ever come our way because of PHP, ever. It’s fast, stable and reliable, which is what you want for the language that makes the core of your business.
        We are very cutting edge company and do some pretty advanced stuff. We adopt new technologies whenever it makes sense to do so. If PHP was the source of any of our issues, we would have moved to another language long time ago (we do use other languages when it makes sense).

        Saying that PHP has died 10 years ago… I’m just going to re-quote @carlcheo:disqus’s article: “It is still the most popular server-side scripting language right now”… “Ignorance is bliss” 😛

        I am not advocating for PHP, nor saying it’s the first language someone should learn (actually, it’s a very bad idea to start with PHP — I would suggest Java or C, because if you can program there, you can anywhere else). But I think people have this misconception that it is old, bad or only for small stuff, when actually it’s not, and saying otherwise seems a bit ignorant. The reality is, you can use it on any kind of web projects, no matter how big they are (facebook?). It sounds like people dislike it because it’s ‘popular’ and not ‘cool’, but those are completely invalid reasons to base a learning decision, which is what this article is all about.

        • Peter Kula

          Only because .NET doesn’t run free on Linux.. oh wait, it does and its free. It will soon be replaced and as Apatchme got replaced with nginx, while IIS is catching up to nginx, so will PHP with ASP.vNext. I currently run Kestrel behind nginx with full blown ASP.NET WebApps and when I publish my book, even more newbies will realise the power of Visual Studio and the comfort of programming in .NET. I have been in the land of PHP because I hated ASP.WebForms, but came back because I realised PHP was far more worse.

        • Peter Kula

          And now we got SQL Server running on Linux too, for free.

      • PHP has died about 10 years ago you say? Sure I would agree – oh wait, sorry I forgot, PHP is probably the most widely used server side language with some 82% of web servers running PHP compared to the 17% that ASP.NET claims (source: http://w3techs.com/technologies/comparison/pl-aspnet,pl-php – Updated April 16th 2015). All I’m hearing from you is that you’re a typical PHP hater. And for reference, yes I’m a PHP developer and proud to be.

        • Peter Kula

          Bravo for defending PHP! Anyway… I suppose PHP died for ME 10 years ago,never met any other PHP developer and never did any PHP code, never really liked it. But yea, the largest sites in the world run on PHP. Touché. I just like simple code that works. *beer*

          • So, as I underdood you stopped using PHP 10 Years ago and didn’t approach to it anymore for such a long time?
            Too bad, man!!
            I guess you missed a lot of new functionalities/features and implementations especially starting with PHP 5 and later 5.3.
            I’m not going to bring you external link to show how much popular PHP is… Just make a simple google search and enjoy with results, but I really think that a sentence like “PHP has died about … 10 years ago mate” denotes deep ignorance and, maybe, a pinch of self frustration.
            A time range of 10 years in technology represents the difference between DAY and NIGHT dude

    • 4lvin

      Same here for this misleading fact sir. Came for this comment. Thanks much 🙂

    • I am so much agree with you Alex!!!!

  • 영준


  • dongguangming

    I think python and java good.

  • Brian Drummond

    Ada would be Galadriel. Elegant, wise, makes a lot happen without fuss. But probably seems quite unkind to beginners.

  • Dunets Nickolay

    I don’t think C and C++ in the survey should go as one item. Imho C is the perfect language for beginners to understand how programs work at low level while C++ is a huge mistake and should be avoided. In fact from this diagram I’d recommend only C and maybe Javascript (if newbie interested in web development only) as a *first* language to learn. Most of the others are either reached the impasse or going towards it including my beloved C# which is feeding me well since 2004.
    For .NET / Java platforms I’d suggest newcomers to pay more attention to mixed functional-OO languages of each ecosystem: F# and Scala respectively. More and more teams adopting them but it’s happening too slow as supply of specialists is close to none and re-learning from OO paradigm to FP is a painful experience even if you’re motivated.

    • Gwen L.

      Why not Haskell? I picked it up as my third language, but I really liked pure functional programming over object oriented programming; Haskell just seems to me to make so much sense, and the syntactic sugar has some real thought behind it. Probably one of the best things to ever come out of a committee.

  • Arne Deruwe

    With .NET going open source and cross-platform. I think you should edit the Legolas part a bit. “Used to stay in their land but recently started to give a shit about it’s neighbors” or something like that 😉

    • Peter Kula

      Totally agree. Visual Studio Express web edition you can bang out an MVC site with Entity in about 6 hours, that actually does something usefull. It defiantly belongs in the Easy bit, alongside Python. Why do you only choose one?? It is possible for Python AND something else to be easy!

      • Thanks for the suggestion Arne and Peter. Just updated the C# section in the infographic :).

  • Peter Kula

    Wow, how is it possible that I vote for C# and the result is, 0 votes? C# is reeeeealy underestimated on this chart. ie, its the goto webdevlopemnt in Europe at the moment. Hotbed for MVC apps. With ASP.NET 5 with cross platform…. its going to smush even more. The PHP bit… well, that true, old,s tinky toy that works but leaves a bad taste.

    • I was wondering why the poll receives so few votes, seems like there’s some issues with the voting plugin. Will look into it. Thanks!

    • Sikander Masum

      the voting plugin must be built with C#

  • Great graph! A suggestion: you could have used Arwen instead of Legolas, or Eowyn as a woman instead of a man. We need more women in IT! We all secretly know that they are smarter than us men 😉

    • Billy Perdie

      Kurt, your pandering is nauseating. If you really want to help an aspiring female programmer, teach her some programming.

  • Karel

    Why are Joomla and Drupal not in the list ?

    • They are CMS, not computer programming language.

      • actually Drupal 7 is a FMS (Framework Management System)

  • Fernando Alvarez-Uria

    Hi Carl,

    Awesome graphic! Maybe you want to add Perl to that list:

    Perl. Dwarf. Difficulty: ***··

    “[I prefer to learn things…] -> [Another way]”

    Is strong, has great endurance but is somewhat difficult to deal with.

    “Perl is the duct tape of the Internet.” – Hassan Schroeder

    Long ago was one of the most popular languages for webmasters and system administrators.
    Has a complex syntax, often dubbed a read-only language.
    Thousands of modules readily available makes it a good choice for system scripting and text manipulation.

    The release of Perl 6 might mean the resurge of the language.

  • Alexander

    For now: python is the best. And as a first language too.
    My history: basic, foxbase etc, assembler, c, c++, perl, php, python & javascript… Maybe miss some…

  • Very interesting ! Congrats !

  • dianaadams

    This is amazing! I just wrote about it (and linked you more than once) here: http://techacute.com/which-programming-language/ Thank you for such great content. 🙂

  • stanley onwuchekwa

    i want to launch a web based startup in the future which is the best to learn between python and ruby/ruby on rails?

  • Kids, don’t jump straight into COITUS, first you should learn how to KISS !
    Note: COITUS – COmputing ITerations Usage and Standards, KISS – Keep It Simple Stupid.

  • eranation

    What’s The Best Programming Language For Beginners To Learn First?

    I would say it’s clearly Scala 🙂

  • Yo_Its_Me

    Are there none with a difficulty rating of 5 stars? I see C++ has highest difficulty rating of 4 stars.

    I followed the flow chart and answered how I just want to learn for fun because I recall taking a COBOL class (eons ago) and how I enjoyed it, and was top of the class, and I enjoyed any other little computer thing I taught myself. But alas, I haven’t tinkered with any other programming or coding, and would like to do that for the challenge. I figure I’d earn money with whatever avenue I choose, so I’d rather make a choice based on what would be enjoyable even when money isn’t an issue.

  • javascript is not easy to learn.
    only because you know how to write it, you dont know how the interpreter will deal with it.
    prototypes, scoping, event orientation, getters, setters, design patterns etc.. it took me years to get to a level where i could write 10000 lines of code without running them once before i’m done.
    rating the difficulty 2 out of 5 is just bu**sh*t

    also if you look at github and stackoverflow javascript is insanely popular and not, as it is described here, only used clientside.

    i also feel comfortable writing java, c, c++ and php
    and i’d say c and python are the simplest among the listed ones because their interpreters will not do magical stuff in the background that might change behavior of your methods.
    c++ however does magical stuff. c# is insane about it and java throws lots of exceptions for stuff you didnt code yourself even though you are the one who did a mistake.

    now dont blame me for this. this is just my opinion on this topic. i’d just say this picture is outdated.

  • Ken Devin

    I work in data analytics for public safety using crystal reports. I have also written some SQL reports over the past 10 years but not every day. I need to know the best and most efficient avenue for me to fast track and improve my syntax skills both crystal, basic and other. Not sure if I need to focus on a intro to programming class, python, VB, C, or sql or crystal class / training. I really don’t have time to go step by step through basic crystal classes as I am good with creating basic to mid level reports but I need help with specific things like combining multiple reports, conditional filtering, summary by fiscal years and other specific things that come up during my work day. I get lots of urgent ad hoc requests and need to be fast and accurate.

  • Jaime Zegpi

    looks like a php hater!…
    you be a designer, not a programer, nice graphics..

  • mfc

    I have an old, ugly toy but I love it so much.
    my sides…

  • Rose Feehan
  • You really need to get Swift on here, as it seems like that should be the answer for both OS X and iOS at this stage. 😉

    • Sure will consider to add Swift since the infographic was last updated about 6 months ago :).

      • SWIFT = ARAGORN!!!!

      • After considering Swift as a candidate to be Aragorn, one of our IT guys proposed Swift = Gollum. Swift has a dual personality Apple-open-source:

        – My preeeeeciousssss
        – …but open-source is goooooood…..

        (stopping allowing coffee to our IT guys at the office in 3, 2, 1…)

  • Schomoyoho

    Gaming > C++. But for a newbie, isn’t the best thing start with engines? I’m very confused if I have to start with C++ or try Unity Engine. I want a job programming games, but have too much choices and I don’t know how to start.

  • Diky Galau

    easiest programming languange to learn is pascal, because it is very close to pseudocode, then basic after that you can learn oop languanges. btw c is very close to pascal

  • Nice, but you missed Ada (as Galadriel of course) which is the language that I would recommend to learn programmation. Good habits from the start!

  • bzimmerly

    Where’s LISP, Forth, or *** Assembler *** for cry’in out loud? Some people (like me) prefer the most powerful, expressive, interactive, and flexible language available, and by excluding those three, you are doing people a disservice.

  • Fabiano de Freitas

    Very cool post. Somebody likes #python a lot… Me too…


  • Jean Carlos

    My suggestion is to change the infographic about PHP.
    It not sounds good and it’s not a real resume about the language. The bad programmers of all languages don’t make a bad language (or a ugly language as you said about PHP).

    I trully recommend a change. If you consider my suggestion, I could help you writing something different.

    • I guess this approach on php comes out from a lack of knowledge of the language itself and its potentiality.

  • Eric Vasbinder

    Don’t forget Xojo, nee realBASIC, closely related to Visual BASIC .net, using a similar syntax to the old BASIC languages. Simple and understandable object oriented language that compiles on to many modern web, desktop OS, and mobile OS platforms. Nice language, but with a REALLY small market share.

  • sachin pal

    One of the best website which I found was http://www.tutorialsschool.com/c-programming

    The website have detailed explanation of all the topics. Not only that, there is one separate section where they have explained each topic with examples, which is amazing. You can check the examples section here: http://www.tutorialsschool.com/c-programming/c-program

    And you know what, once you are done with beginner level, you should start writing code snippets, nothing else can teach you better.

  • sachin pal

    One of the best website which I found was http://www.tutorialsschool.com/c-programming

    The website have detailed explanation of all the topics. Not only that, there is one separate section where they have explained each topic with examples, which is amazing. You can check the examples section here: http://www.tutorialsschool.com/c-programming/c-program

    And you know what, once you are done with beginner level, you should start writing code snippets, nothing else can teach you better.

  • Miu Razvan

    forgot http://www.w3schools.com and http://www.sololearn.com for beginners but still very very helpful. Had no ideea python was so cool and easy. Did tutorials on php/javascript/c++ and they seem relatively the same, of course i do realise that’s just the beginning and the first functions and so forth. i have a huge c++ book and went a bit through it and there are so much memory and thread work and so on that it makes my head dizzy. Must really try python, didnt give much focus on it because i didnt know what to expect but if you guys say its a piece of cake then thats my next language to learn.

  • Carl – thank you so much for creating this. We have a copy up at our Birmingham, AL makerspace, Red Mountain Makers. We’ve also been taking it out to community outreach events, where it’s been a useful tool to help those interested pick their first programming language.

  • Totally disagree about your analysis on PHP.
    I’m also thinking that you don’t have an appropriate knowledge of the language and related tools/frameworks to bestow judgments and rulings.
    Code Igniter and Laravel????
    Perhaps you meant Symfony and Silex!

  • sffoghorn


    int is_subset_of(foo,bar) {
    if (strcmp(foo,”C”) && strcmp(bar,’C++’))

    main(int argc, char** argv) {



  • Joaquin Menchaca

    So if C is a subset of C++, then you are saying C came AFTER C++?!?
    So JavaScript is easy? Have you done actual OOP on it, with encapsulation (privacy) and inheritance, e.g. something like a like Person and Student class, or Shape and Circle class?