What are the best programming languages to learn?

Posted on July 19, 2016
by Seth Harden

Inevitably when I meet someone who wants to pursue computer programming they ask me “what are the best languages to learn?”

I’m going to attempt to answer that question directly without going off on a nerd analysis tangent.

The first thing you should decide is whether you want to code software such as Microsoft Word, websites such as Facebook.com, or Mobile apps such as angry birds. Granted there is a lot of overlap with each language and, as with anything you doing life, the broader your knowledge the more success you will have.

There are also countless programs out there that allow you to build software, websites, and applications in an easy drag-and-drop in her face but that’s not considered “coding” and it will get zero street cred inside the programmer community. Also, along with code there are certain hardware and firmware systems you should be familiar with.

Let’s start with languages for someone wanting to design software for Windows or even their own operating system.

I personally started by learning Visual Basic as it’s easy to learn and will get you going and excited because you’ll be able to create something fairly quickly. From there I would learn Java (not to be confused with JavaScript), C++ (then tack on C#), and if you want to do an operating system you should learn Assembly language. Python is a relatively new language that a lot of developers are starting to use, if you know Java and C++ you can learn Python quickly. If you can master these 3 languages you will be able to create pretty much any software you can think up. You should also know your way around a Unix shell and be able to execute some Bash scripts.

Next, here are the languages for someone wanting to do website development. Start with HTML (now HTML5) as it’s the basic structural language for website design. Next you will definitely want to learn JavaScript (not to be confused with Java). From there I personally would learn PHP and understand SQL in order to operate a MySQL database. If you want to be able to style your websites beautifully you need to learn CSS and the basics of Bootstrapping a website. With these languages you can build almost any website. If you want some advanced skills I would learn either Angular.js or Backbone.js (both are advanced JavaScript languages used for more dynamic frameworks) a lot of apps use these 2 languages because they allow for dynamic page processes. jQuery and Ajax can also be useful for dynamic site design but You’ll also want to understand how to host files on a server so knowing what a domain name is, IP address, name servers, and the basics of a server OS like Linux or CentOS. Brush up on virtualization software like Parallel’s Plesk or cPanel and the Apache web service framework. You most likely will have to do some root access work so understand SSH terminal commands.

For someone wanting to create an app there are different languages for iOS (iPhone and iPad) or Android (every other smartphone lol). I would personally develop using web languages as you can then deploy on both devices without too much customization. JavaScript and HTML5 work great but you really should develop in either Backbone.js or Angular.js as these are much more dynamic. You should understand the systems related to web development as well – especially MySQL for anything with a database.
For both website and app development you should know your way around a Linux command prompt and understand the basics behind SSL certification and HTTPS for anything e-commerce related.

XML-RPC and CSV are useful for data tables and should be understood. Also if you want to integrate 3rd party applications like a Facebook login you need to know how an API works.

Want to be considered a full stack developer? Here is a list of all the languages from above:
Java, C++, Assembly, Python, HTML, JavaScript, jQuery, Ajax, CSS, PHP, Bootstrap, Angular.js or Backbone.js, BASH Scripting, SSH, MySQL, XML-RPC, CSV.

Linux, Windows, iOS, Android, Apache, Unix Shell, SSL, HTTPS, IP address, domain naming, name server, API, Plesk or cPanel.

For iOS or OSX (Apple) specific development you should know Xcode or Swift.

There you have it! Just a few years of education and you can build the next million dollar app!

What about Ruby on Rails, Perl, Curl, Objective-C, Cocoa and JSON? Ya, if you want to learn those then be my guest.