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!
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
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?
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.
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.
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 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 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 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.
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.
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.
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.
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.
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.
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.
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/
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.
I’m glad it was helpful. Keep up the learning, even when it’s tough 🙂
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.
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.
I want to build a blocker website program which language do you recommend
Its amazing how a single article can really enlighten you so much. I feel less confused now! Great!
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.
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
Hi Lukman! Happy to offer any additional guidance you need. Do you know what you’re most interested in teaching your students?
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.
Thank you so much….finally found something truly helpful after so much googling. Now i know the right language for me to start learning 🙂
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 ?
Keep up the great work, Bridgette! 🙂
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?
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.
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/
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.
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!
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.
Thank you so much for your kindness Wade. I really appreciate it! I will post the question and see how that goes. Thank you again!
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..
I enjoyed this post while reading your article, I like basics overview of these languages.
Thanks for sharing us.
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.
I heartily believe in this motto, “live curiously”.
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!
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.
I would appreciate it if you could elaborate on the differences in Python and Ruby programming languages. Thank you.
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.
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.
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
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.
Great information and support to continue pursuing coding and reaching for what I truly want to do! Thank you!
This kind of article is exactly why I love Treehouse!
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
Great post! Very helpful, thank you!
Thanks, I’m glad it was helpful.