LearnHow to Choose a Programming Language

   
Avatar

Wade Christensen
writes on July 1, 2015

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 when choosing a programming language, 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.

Or, skip the details and head over to Treehouse’s free learning placement quiz.

Types of Programming Languages 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.

Related Reading: CSS vs. HTML: What’s the Difference?

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.

Related Reading: Should I Learn HTML Before JavaScript?

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 for those trying to choose a programming language. 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 trying to choose a programming language, 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.

Related Reading: Should I Learn HTML Before Python?

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). Deciding how to choose 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.

Related Reading: Front-End vs. Back-End vs. Full-Stack Developers: What’s the Difference?

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

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?

Related Reading: 5 Excellent Ways to Improve Your Coding Skills and Confidence

Is Programming Hard for Beginners?

No matter what programming language you choose first, it will be challenging initially. 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.

Related Reading: How to Become a Web Developer Without a Degree 

Start Your Learning Journey With Treehouse

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, or get started with a 7-day free trial. 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.

GET STARTED NOW

Learning with Treehouse for only 30 minutes a day can teach you the skills needed to land the job that you've been dreaming about.

Get Started

46 Responses to “How to Choose a Programming Language”

  1. Most informative article across the web for tech lovers. I personally feels Machine Learning and Artificial Intelligence are going to be play an important role in 2017.

  2. Sean Walters on December 19, 2017 at 9:54 pm said:

    Well, to my knowledge, if you want to build a GUI, something like C, C++, C#, maybe even Java could come in handy. You may not have the time necessary right now, but for those reading this as of now, start as soon as you can and familiarize yourself with as many languages as possible, even if it’s just fundamentals. The reason why is that so whenever you get an idea or have something you wanna do, you won’t have to go through the trouble of learning something from the beginning, you’ll already have basic knowledge. But in your case, pick a programming language that is easy yet very powerful. Most languages (When it comes to making apps or something on the desktop) are the same but with minor variations on which platforms it can be utilized on. Hopefully that cleared things up a bit.

  3. Yeah, good hindsight. Python and Django are now my go to for what I need everyday. Primarily web development, but also R & D, Scripting and much more. Here are some more reasons why you should code with python https://huntedhive.com/articles/8-reasons-to-create-websites-with-python/

  4. Vaibhav Yaramwar on April 4, 2017 at 8:19 pm said:

    This Artical has changed my mind setup totally in positive way.Thank You Wade….You have given me feeling that while learning new language(currently I am learning java @TreeHouse) getting a weird feeling is common and I must move on and learn new concept.

  5. To choose a programming language we need to choose the most secured one. We have to protect the software or a website from being hacked.

    • This is not part of the language, but part of the implementation you do WITH the language. E.g. you can use frameworks that take care of it for you, or you can write those security related functionalities yourself.

  6. Thank you so much for this post. I know I am a little late getting to it now, but this has been extremely helpful in giving me more confidence moving forward.

    Excited to keep coding and learning.

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

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

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

  9. 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?

  10. 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.

  11. 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

  12. 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.

  13. 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 🙂

  14. 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 ?

  15. 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.

  16. 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/

  17. 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.

  18. 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.

  19. 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..

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

    Great article!
    Thank you.

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

  22. 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.

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

  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. 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.

  29. 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!

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

  31. 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.

  32. Great post! Very helpful, thank you!

Leave a Reply

You must be logged in to post a comment.

man working on his laptop

Are you ready to start learning?

Learning with Treehouse for only 30 minutes a day can teach you the skills needed to land the job that you've been dreaming about.

Start a Free Trial
woman working on her laptop