LearnHow to Choose a Programming Language

Wade Christensen
writes on July 1, 2015

Share with your friends










Submit

I’m going to tell you how to choose a programming language: don’t. Wait … what about all the high-paying tech jobs? Isn’t this the best time to be a programmer?

Many people are curious about code. Unfortunately, choosing a programming language can be a major hurdle, because people lack the information necessary to make a good decision. That’s why you shouldn’t start with a coding language.

I encourage you to think about what you want to accomplish with code. Be specific. Getting a good job isn’t precise enough. After all, is a job good, if it pays well, but you hate it? Code is everywhere, and that means you have many of options. Do you want to build mobile apps? Are you interested in the Arduino and Raspberry Pi? Are you a researcher who wants more command over your data? You can do a lot with code, and the opportunities continue to expand.

Once you consider what you want to study, build, and contribute, you can start thinking about which language to learn. There are always options, and there will still be confusion—more on that later. However, languages have strengths and weaknesses. Certain languages have been adopted more regularly in specific fields. By picking a project or goal, you have drastically narrowed the field of options.

To put it simply, you wouldn’t spend months brushing up on Mandarin before a trip to Germany. Sure, there may be a few people speaking Mandarin in parts of Germany, but you would be better off studying German. If you know the destination ahead of time, you’ll be working on the right stuff from the start.

But it isn’t that easy

I know I’m making it sound simple. It’s hard enough to decide what you want to do. Once you get a general idea, it can then become more confusing. Let’s say you want to build web apps. Great, now you Google the languages used to make web apps, and … you …  you find a forum post that … OK … PHP seems popular … but Ruby also … well, this person with a TON of Twitter followers says … AHHHHH … FORGET IT!

Someone will tell you to learn JavaScript first, then someone else will tell you that Python’s syntax is simpler, so you should start with Python. Then you’ll hear about Java and all the available jobs. It goes on and on.

So what do you do? You can keep refining your goal. Maybe there’s a specific company you want to work for. What are they using there? You might get a general idea from stackshare, which is a site that shows many companies’ tech stacks (the different pieces of technology that come together and form the service you use).

Some other beneficial resources include Stack Overflow and Reddit. Unfortunately, those forums can lead to some of the confusion mentioned earlier.

I suggest asking someone you trust. Go find someone in-person. Attend a Meetup and ask the people working in the field what they recommend. You’ll find that people are still much more willing to engage meaningfully offline. You can also ask follow-up questions—you know, have a conversation.

I also recommend dropping into the Treehouse Community. Even before I worked for Treehouse, I found the community to be a helpful place. The Treehouse teachers are active, and the community’s responses are beginner-friendly. The Internet can be a rough place, and we work to make sure the Treehouse Community remains approachable.

So, yes, research is your friend, but I don’t want to send you down another Google hole. So here is a list of general guidelines and information about some of the languages you will find in the wild.

My Oversimplified General Guidelines to save you some Googling

HTML/CSS:

People often begin by learning HTML and CSS. Why? These two languages are essential for creating static web pages. HTML (Hypertext Markup Language) structures all the text, links, and other content you see on a website. CSS is the language that makes a web page look the way it does—color, layout, and other the visuals we call style.

Why not just start with HTML and CSS? You may not be interested in creating content for the Web. As I said earlier, you can do a lot with code, and the Web is just part of it. However, if you are interested making websites, definitely start with HTML and CSS.

JavaScript

JavaScript is the first full programming language for many people. Why? It is the logical next step after learning HTML and CSS. JavaScript provides the behavior portion of a website. For example, when you see a form field indicate an error, that’s probably JavaScript at work.

JavaScript has become increasingly popular, and it now lives outside web browsers as well. Learning JavaScript will put you in a good place as it becomes a more general-purpose language. JavaScript seems to be everywhere lately.

Java

Despite its name, Java is not related to JavaScript in any meaningful way. JavaScript was named when Java was becoming popular. Some marketing minds decided to confuse us all in an attempt to make the LiveScript language more popular by changing its name to JavaScript. Just remember that Java is not JavaScript.

Java can be used for anything from web applications to desktop and mobile apps. Java has a strong presence among large enterprise applications—think bank, hospital, and university software. It also powers Android apps, so it’s a good choice for those inclined toward mobile development.

Objective-C

Like Java, Objective-C can be used to write desktop software and mobile apps. However, Objective-C is essentially Apple territory. Until the recent release of the Swift programming language, Objective-C was the language for developing native iPhone and iPad apps. Many major apps are still written in Objective-C, and programmers for these apps are in high-demand. If you want to work on iPhone and iPad apps, it’s a good idea to learn Objective-C.

Swift

Apple released Swift in June, 2014 as a modern language for developing Mac, iPad, iPhone, Apple Watch, and Apple TV applications. If you want to enter the world of iOS, Swift is the language with which Apple intends to move forward. Yes, many apps are already written in Objective-C, but Swift is here to stay. If the Apple ecosystem lures you in, you’ll need some understanding of both Objective-C and Swift.

PHP

PHP is one of the most popular web languages. It runs massive sites such as Facebook and Etsy. WordPress and Drupal are both written in PHP, and those two platforms power a huge number of the sites online today. Because of its popularity, learning PHP will serve you well if you intend to code for the Web.

Python

Python is a general-purpose language used for everything from server automation to data science. Python is a great language for beginners, because it is easy to read and understand. You can also do so many things with Python that it’s easy to stick with the language for quite a while before needing something else. Python finds itself at home both creating Web apps like Instagram and helping researchers make sense of their data.

Ruby

Ruby is often associated with the Rails framework that helped popularize it. Used widely among web startups and big companies alike, Ruby and Rails jobs are pretty easy to come by. Ruby and Rails make it easy to transform an idea into a working application, and they have been used to bring us Twitter, GitHub, and Treehouse.

Don’t Worry

Fret not, unless you make guitars. Then fret away (sorry, I couldn’t resist). Choosing a programming language may still seem overwhelming. It shouldn’t. You can’t go wrong. As long as you choose a language that is regularly used in technology today, you’re winning. When you are starting out, the goal is to become solid in the basics, and the basics are pretty similar across almost all modern programming languages.

The concept of a variable, loop, array, or function is the same no matter which language you choose. If you decide to get involved with front-end web development, you might choose JavaScript. You might, after a time, get bored. You then think building a phone app sounds fun. Now you need to learn Objective-C, Swift, or Java. Was all your JavaScript study for nothing? Not at all. Most of the things you learned about JavaScript are applicable to the next language you tackle.

Part of learning to code is learning a language’s syntax (its grammatical or structural rules). A much bigger part of learning to code, the part that takes longer and gives you more headaches, is learning to solve problems like a programmer. You can learn the grammatical structure of the English language pretty quickly; however, you won’t truly understand the language until you put that grammatical structure to use in a conversation. The same is true in programming. You want to learn the core concepts in order to solve problems. Doing this in one language is similar to doing it in another.

Because the core concepts are similar from language to language, I recommend sticking with whichever language you choose until your understanding of the core concepts is solid.

What I’ve Done

I am fascinated by just about anything and how that anything works. I like to play with electronics, I enjoy smashing a pick against guitar strings, I have fun making videos … you get the idea.

My predisposition to jump from one interest to the next has been true of my efforts to code as well. I first learned HTML and CSS in college with a few books and help from friends. I decided to learn JavaScript after building several static sites. I was able to get a basic handle on JavaScript through books, but concepts got muddier.

When I started learning to code, Treehouse didn’t exist. There were no tracks or paths to follow. I would just Google until my eyes burned like coals. Eventually, I started working with Drupal. Learning PHP became a necessity.

After some time with Drupal and PHP, I became bored and got interested in Python.

In short, I drifted from one project and language to another based on whatever seemed interesting at the moment. This approach scattered my efforts. I never felt confident with several core concepts in any language. I could hack together something simple, but I certainly wouldn’t have called myself a programmer.

What I wish I had done/What I eventually did

After being hired by Treehouse as a video producer, I wanted to continue my coding hobby (yep, I’m mostly a video guy). I made a choice: I was going to pick one language, Python, and give it as close to undivided attention as possible. I would build a few different projects using the language. I would seek help in truly understanding things when I didn’t get it. Do I wish I had taken this approach sooner? You bet.

I never really felt comfortable with Object Oriented Programming before focusing on the concept in the context of a single language. I still have hangups, and I get lost constantly, but I feel confident in asking questions. I feel closer to the answer. I know what to look for.

This has made my understanding of other languages clearer. Like I said, the basics are the same across most languages. When I go back to JavaScript for a project, I now feel better suited to tackle a problem in that language. I’m better able to think like a programmer. Remember when I said that problem-solving like a programmer is the harder part?

There are still sticking points

No matter what you choose, it will be challenging at first. Persevere. Recognize when a sticking point is caused by the simple fact that you’re learning something new. That is when you need to have a gut-check and push through the pain. That might mean taking a few days away to process all the new information, but don’t give up.

All that said, don’t forget the first point–do your best to pick a project that interests you. If you just don’t care about your project, you may want to find a new one. Your early projects should excite you. It’s not a job yet. You’re in control, so have fun. You’ll learn more that way.

The Takeaway

What works for me is focusing on something until I can use it to solve a problem—something I’m interested in tackling. Don’t stress. Great resources such as Treehouse exist today. You can sample quite a few coding languages right in your web browser without installing anything. It’s a wonderful time to learn how to code. Lastly, don’t worry if you dislike the language you picked, because you haven’t wasted any time. Pick up, dust off, and … on to the next one.

Good luck in your coding journey.


Anyone can be a Developer.
Earn a Techdegree and get the job-ready coding skills you need to launch your new career in tech.

46 Responses to “How to Choose a Programming Language”

  1. ِِAkram on February 10, 2017 at 8:54 am said:

    I want to build a blocker website program which language do you recommend

  2. Its amazing how a single article can really enlighten you so much. I feel less confused now! Great!

  3. Presently many programming languages have for making better career and all languages are the best. I am interested in python. Which language is going to dominate the future of web development: JavaScript, PHP, Ruby, Java/Scala, or Python?

  4. Mike Headley on December 13, 2016 at 9:41 am said:

    Hi Wade, thanks for this article. As a senior college student majoring in computer science I found this very valuable and helpful. Keep up the good work.

  5. Lukman Olaide on August 27, 2016 at 3:58 pm said:

    Hi, I’m having a huge problem choosing which programming I should learn and stick with.. I’m a potential Educational Technology Lecturer.. I want to learn a computer programme,so I can use it on my research work and also in teaching student. please I need your advice

    • Faye Bridge on August 29, 2016 at 7:07 am said:

      Hi Lukman! Happy to offer any additional guidance you need. Do you know what you’re most interested in teaching your students?

  6. One thing that has been left out relating to learning to code is the capabilities of a debugger. It’s easy to code, Its hard to get the code to work right. The debugger lets you see what the language sees, not what you think is there.

  7. Stay hungry. Stay foolish.

  8. John Sawanah on May 9, 2016 at 10:34 am said:

    Thanks.

    It was helpful to me. Now I can choose a language to start with since I am a beginner.

  9. Afeefa on April 8, 2016 at 8:14 am said:

    Thank you so much….finally found something truly helpful after so much googling. Now i know the right language for me to start learning 🙂

  10. Bridgette on April 4, 2016 at 6:14 pm said:

    Great article. Found it inspiring and hopeful. I’m currently doing a web developer course on Udemy and my confidence is being built. Also taking a course on Big Data. So I’m on a path to building on my skills.
    Thanks again 😊

  11. Good article. However, there is one thing that is never discussed when asking and answering this question and that is: What development jobs are available in your area?

    While HTML/CSS/JavaScript are no brainers, in my neck of the woods, very few, if any businesses are looking for Front-End developers only. They may call the position Front-End Developer, but when you read the details they want you to either have design experience (Photoshop, Illustrator, etc) or experience in a Back-End language. It seems that while tech folk know there is a difference, managers and HR people do not.

    If you want a job in software development, you need to know the languages being used by businesses in your area. Period. It does no good to learn Python or Ruby if the only languages being used are Java and C#. Don’t believe the hype that once you know Computer Science (data structures, algorithms, design patterns, etc) you can program in any language. While it may be true, that’s not going to get you past the automated HR programs used to weed out applicants. If the requirement calls for C# and you know Ruby or Python then unless you personally know someone, the chances of you getting an interview, much less a job, are slim to none. Especially as a new developer.

  12. Don’t you know, which language to choose? After this article you will know for sure whether Django is appropriate for you! http://7webpages.com/blog/most-popular-django-sites/

  13. Dear Sir / Madam

    I want to learn to code with treehouse. However I am not sure which one is suited to me. My main purpose is to learn a programming language that I can programme my site to retrieve data from other site, same as Kayak.com.

    Could you advice which programming language I need to learn in order to perform this task.
    I am familiar with HTML/CSS and JavaScript.

    I look forward to hear from you.

    Thanks
    Shahin

  14. How to choose a language? Figure out what you want to make and then research which language would suit your needs best. You learn to pick up bits and pieces of most of them eventually anyway. Which is good because you’ll be tested for multiple languages in job interviews usually. Like the coding tests from TestDome do for example: http://www.testdome.com/

  15. bobby e.a on January 10, 2016 at 9:06 am said:

    wade u are doing a great job! your post has made me identify my starting point at least I can rate myself a 4star in JavaScript…. all my friend are so surprise……. thanks again

  16. A language that is very instructive is C. It deals explicitly with memory managing and is strongly typed. It is an essential language to learn before the more object oriented or elliptical languages. These languages may have features to manage automatically the memory or to infer variable types. They are more efficient, so far as the base concepts presented of C are well understood.

  17. David Lee on December 5, 2015 at 12:50 pm said:

    Hello Wade, I am doing a book talk for a school project, and I would like to make something that can show the similarities and differences between me and the protagonist in an interactive way. Could you please help me with which language I should use and links to tutorials and how I should do it? Thank you so much!

    • Wade Christensen on December 7, 2015 at 10:30 am said:

      Hi David,

      Unfortunately, I don’t have enough time to provide that type of one-on-one help, but it sounds like you’ve got some good ideas. I recommend posting specific questions in our forum. I’m sure you will find quite a few experienced people who can help you navigate your project on the Treehouse forum.

      I hope that helps, and again, I’m sorry I can’t provide more one-on-one assistance. Best of luck with your project going forward.

  18. I love to explore things differently rather than conventional methods…I think learning to code is never ending process, we can dig deep into any programming language we want until we feel secure in that language..all we want to do is to be obsessed and sticking to the one which we really passionate about..
    Learning a particular language is like building your own vehicle from scratch to travel around the world from one place to another…we can build bike,car,train or jet Airplane anything you can..but stick with it..the harder we work on building our vehicle makes more comfortable we can travel around the world..

  19. Pedro Dasilva on October 16, 2015 at 4:43 am said:

    Great article!
    Thank you.

  20. I enjoyed this post while reading your article, I like basics overview of these languages.
    Thanks for sharing us.

  21. I am very grateful for this article.
    for more than a year now I have been roaming about the web trying to learn different web programming language.

    I want to ask if its really a nice idea to go deeply into both PHP & PYTHON.

    also I have a plan to build an online forum and an android/window app of the forum. which programming languages should I learn to accomplish this task.

  22. I heartily believe in this motto, “live curiously”.

  23. Great Explanation…teamTreeHouse is great……

  24. TyskMeister on July 14, 2015 at 5:35 am said:

    Hi, i have done the java track and the android track and finished it. After that i have really concentrated on building my own apps and changing the projects from the treehouse tracks.

    I am a very fast learner and I had a little C++ experience from school before I choose to learn android development (because I want it to be my future job (thanks to you teamtreehouse!!! THANKS) ) so I am starting to feel “pretty secure” with the syntax and android studio.

    I know that I always should use Parse.com or other back-end APIs for my apps, but I really want to learn how to build my own back-end server for my apps. Just so I can understand the whole concept better and I mean it really can’t hurt to know how to build your own back-end even if I never would use it “in real life”.

    I thought I would start with building a back-end for the “Ribbit Messenger app” from the android track. I have searched alot but I can’t find a clear answer to how I even should begin. All I find are “reasons NOT to build your own back-end…blablabla”.

    So which track would help me more to start building my back-end?
    The PHP track or the Ruby on Rails track?
    What other tracks or courses can help me with this?

    Maybe some other links or tutorials for this?

    Really would appreciate some help with this! 🙂 thanks!

    • Wade Christensen on July 16, 2015 at 5:10 pm said:

      To be honest, I don’t know much about Android, but I chatted with one of our teachers, and he recommended Python. I know I enjoy Python quite a bit as well, and we have a Python Databases course that will probably help. I also recommend hopping in the forum and asking the question there. You might get some responses from folks with more Android background than I.

  25. Mister Moody on July 13, 2015 at 11:11 pm said:

    I would appreciate it if you could elaborate on the differences in Python and Ruby programming languages. Thank you.

    • Wade Christensen on July 16, 2015 at 5:12 pm said:

      Unfortunately, I haven’t spent much time with Ruby. I see it used primarily for Web apps, whereas Python seems to be everywhere (automation, data science, Web apps, etc.). I recommend jumping in our forum and seeking some more info there. I’m sure people with more Ruby experience can give you some good information on the forum.

  26. I used java as my programming language for 7 years and I never tried Ruby before simply because most of the programmer doesn’t use it. Among all, I love php,css and java because i never had hard time to code.

  27. Can you tell if I have to create videos like Treehouse does or video featuring me and explaining the concept

    What software combination do you use. Is there any paid or open source that I can use. Do I need a camera, mic or Camtasia will do

    I have often seen coders telling PHP is dead and moving towards Python. Is that true.

    Also most MOOC teach Python in computer programming and not C. I dont understand why

  28. andrew mccormick on July 4, 2015 at 8:16 am said:

    Then there’s always this helpful graphic to guide you… http://infographicjournal.com/which-programming-language-should-i-learn-first/

  29. Great post! I’ve been developing for the web for over 17 years now. I still ask myself this same question. I’ve heavily worked with most of the languages you’ve listed and several that we not. The things I’ve learned through all of them, as you said near the end of the post, is that persistence and sticking with it is key. Whichever you choose learn the ins and outs. Once you’ve got that you’ll be able to solve problems with your language of choice and grow from there. I’ve lead a team that has taken a very large web based app through 3 technical refreshes rewriting the application with 3 different languages all meeting the same criteria. The key is not always what the language is, but how can you use it and that comes from the persistence of sticking with it.

  30. Natalija on July 3, 2015 at 7:26 am said:

    Great information and support to continue pursuing coding and reaching for what I truly want to do! Thank you!

  31. This kind of article is exactly why I love Treehouse!

  32. Thanks for the insights Wade. I also struggled with all the different views online on which language to learn. I started with JavaScript and now I’m fully committed to learning Python. I’m currently going through the Python track on Treehouse but keep getting tempted by Ruby and Rails. My end goal is building web apps.

    • Wade Christensen on July 1, 2015 at 12:39 pm said:

      I enjoy Python quite a bit. I’ve never done anything with Ruby though. If you want to stick with Python and move into Web apps, check out the Flask stuff we have out and the upcoming Django course as well.

      • Soon as I’m done with the Python track, I will be going through the Flask one. Although if the Django course comes out before then, I’ll probably go with learning it (first) rather.

    • Django is very rails like

  33. Great post! Very helpful, thank you!

Leave a Reply

Learn to code with Treehouse

Start your 14 day free trial today and get access to hundreds of video courses in web development, design and business!

Learn more