It’s not news that STEM talents are in great demand and are paid well. Online postings for software jobs across the U.S. grew 31% from 2007 to 2012 – nearly 3x faster than overall job postings. The US Bureau of Labor Statistics estimates software developer jobs to continue to grow at 22% from 2012~2022, with a median pay of $95,510 for software app developers as of May 2014.
If you’re looking to learn how to code, the sheer number of programming languages may be overwhelming – what language should you indeed learn? This article hopes to give you some pointers by comparing the salary, popularity, and prospective future associated with different programming languages.
(for big picture please click photo above)
An Overview of Programming Languages
Before we go into comparing programming languages, let’s first take a look at the languages we’re going to be covering.
Dynamic languages are generally thought of as easier for total beginners to learn because they’re flexible and fun. You can quickly build an app from scratch with less lines of code, and there is no hard rule on how to write things to behave in the way you want them to.
As dynamic languages are usually very high level languages, you’d spend less time trying to get the details right and more time learning programming concepts, which is another reason dynamically typed languages are popular with beginners who are motivated by being able to build things and see results quickly.
Developed to make developers have fun and be productive at the same time, Ruby was made popular by the Ruby on Rails framework, a full-stack web framework optimized for programming happiness. As Ruby reads like English and Rails has tools that make common development tasks easier “out-of-the-box”, many would recommend learning Ruby as your first programming language.
Ruby is mostly used for backend development, and popular sites such as Airbnb, Shopify, Bloomberg, Hulu, Slideshare, and more have been built with Ruby on Rails.
Python is another highly recommended language for beginners, and is the most popular introductory language at Top U.S. Universities. Developers have used Python to build desktop apps and web apps alike, and it has great tools for data mining. In addition, Python is particularly popular with the academic community for scientific computing, data analysis, and bioinformatics.
Google, Dropbox, Pinterest, Instagram, Reddit, BitTorrent, Civilization IV, and more have been built with Python.
PHP is a server-side scripting language and is usually considered beginner-friendly because it’s easier to conceptualize what the PHP code will do, so it’s not difficult to pick up. Most websites have been built with PHP because the language is heavily specialized for the web.
Facebook, Wikipedia, Yahoo!, Tumblr, WordPress, and more have been built with PHP.
Statically Typed Languages
Apps built with statically typed languages are known to be more scalable, stable, and maintainable. Static languages are usually more strict with catching errors through type checking, and it takes more code to build a prototype. Game engines, mobile apps, and enterprise-level backends are usually built with statically typed languages.
As a general-purpose language, Java is used to build Android apps, desktop apps, and games. Java is also commonly used as a server-side language for enterprise-level backend development – 90 percent of Fortune 500 companies use Java.
Furthermore, Hadoop is a popular Java-based framework used for storing and processing big data, and is implemented by enterprises such as Yahoo, Facebook, and Amazon Web Services.
C is often used to program system software and is the lingua franca of Operating Systems.
C has influenced almost all programming languages we’ll be examining in this article, especially Objective-C and C++. So, if you know C well, you’d probably have less difficulty picking up other popular languages. Since C takes more complex code to perform simple tasks, beginners may find it tough to keep themselves motivated if they choose it as their first language. However, knowledge of C will definitely help you as a programmer.
Objective-C / Swift (for iOS development)
Objective-C is a layer built on the C language, making it static, but it can also be used for dynamic typing. Apple’s Swift is a static language designed to be compatible with Objective-C, but its static-typing makes it more resilient to errors.
Inspired by Python, Swift aims to be easy for coding newbies to pick up, and has been designed to fix some of the issues of Objective-C.
C++ is a powerful language based on C. It is designed for programming systems software, but has also been used to build games/game engines, desktop apps, mobile apps, and web apps. C++ is powerful and fast, so even Facebook has developed several high performance and high reliability components with it.
Many pieces of software have been built with C++, including Adobe Systems, Amazon, Paypal, Chrome, and more. Much like C, C++ is generally considered harder for beginners to learn on their own, so if you decide to learn C++ as your first language, feel free to look for a mentor via Meetups or find a C++ Codementor.
C# (“C Sharp”) is developed to be used for Microsoft’s .NET framework, which runs primarily on Microsoft Windows.
C# is used for web development, game development, and general Microsoft development. Although Microsoft was not known for being cross-platform compatible in the past, Xamarin has been working on an open-source project called Mono, which aims to port C# to other platforms and bring better development tools to Linux developers. Recently you can also use C# to build native mobile apps for iOS and Android through Xamarin.
SQL (“Sequel”), or Structured Query Language, is a query language used to communicate with databases. Although SQL cannot be used to build apps, it is used to manage the data in apps that use relational database manage systems (RDMS).
So, now you know a bit about programming languages and perhaps a bit about their perceived difficulty. However, not all languages have the same demand or salary. If your goal in learning how to program is job opportunity and you aren’t going to be dissuaded by how hard people say a language is going to be, here are some pointers to help you figure out what language you should learn.
Startups love Ruby on Rails. Many famous websites such as Airbnb, Twitch, Hulu, etc. are built with Rails, which means they’re going to need Ruby developers. In addition, since developers have fun using Rails and it is fairly easy to pick up, Rails will continue to be popular with coding newbies.
That said, the rise of Node.js will definitely have an impact on the popularity of Ruby on Rails—Node.js has already overtaken Rails on Github. While this isn’t any absolute sign that Node.js will overtake Rails, we should note that a few years back Rails also overtook Python’s biggest web framework Django for backend development, and Rails had more stars than Django.
However, since Rails continues to get frequent updates, it will still remain relevant for a while, especially since it has a loyal community with tons of useful tools to help make development easier. Thus, despite a decline in popularity, Ruby will still be sticking around.
The trends for backend development has been shifting away from PHP for some years now, but 80% of websites on the web are still built with PHP—it was a language designed for the web, after all.
Nonetheless, if you google what programming language beginners should learn, you’d find that developers generally don’t recommend learning PHP. In fact, many developers apparently hate it.
The PHP community is trying to shake off its bad reputation with new guidelines on how to code PHP the Right Way and with developing new tools, but in general the future of PHP seems rather stagnant as of 2015 (at least in the US). Hopefully PHP7 will revitalize the community, though it is known to be quite fragmented.
Android has been a big boost in keeping Java the most popular programming language, and most enterprises also love Java for its relative stability and scalability.
With the rise of Spark (which uses the Scala language) and Cassandra (which supports other languages) as frameworks to manage big data, it’s hard to say how long Hadoop will continue to reign as the most popular for big data management, but given how large enterprises behave when it comes to change, Hadoop won’t be going away. The same can be said of the Java programming language in general, as Java has excellent tools for backend development and is much more established for enterprise development.
Thus, Java will continue strong as one of the most relevant programming languages in the next few years.
Since Apple released Swift and Objective-C only works for Apple products, one cannot expect Objective-C to stick around in the future. Swift, on the other hand, will of course be relevant for the years to come as long as you keep using Apple products.
However, this doesn’t mean you shouldn’t learn Objective-C in 2016, since most open-source projects for iOS development are still written in Objective-C. Generally, using something you don’t understand is not a good idea, and it’s not that difficult for you to learn Objective-C if you know Swift or vice versa.
C is quite low-level compared to other programming languages, but since it’s the OS lingua franca it will be sticking around, since many development tools are written in C and Linux is also written in C.
SQL is almost universally understood by database administrators. For a while, SQL seemed to be losing relevance with the rise of NoSQL services such as MongoDB and Redis, with non-SQL using Big Data computing platforms such as Hadoop, Spark, and Cassandra. Many people were howling about how SQL was dying.
Apparently not any more. As a result, even NoSQL had to reposition itself as “Not Only SQL).
With the rise of big data and the difficulty of managing it, SQL is hotter than ever (as you already know from the job trends). Google has also recently updated its BigQuery service so it can now ingest up to 100,000 rows per second per table, and BigQuery uses SQL. Spark also has the Spark SQL Module since version 1.3.
All in all, SQL is relevant again because it’s needed to manage (not store) big data. Thus, not only is SQL everywhere, but it’s safe to say SQL will continue to be relevant for a while now.
Still considered the most powerful in terms of performance and capabilities (even against Rust), C++ will likely continue to be relevant in certain areas such as things that need high performance (e.g. game engines). A major revision of the current standard (C++14) is expected to be released in 2017, so it’s still an evolving language.
In the future, Rust may potentially replace C++ in some areas of systems programming, as Rust aims to be able to produce less-vulnerable software than C++ does. Read more about how Rust compares to other languages here. It is also a good time to learn Rust now if you’re an advanced developer.
Being limited to Microsoft platforms and being closed-sourced did not work in C#’s favor in the past, but Mono mostly fixed those issues (though Mono has performance issues, recent updates have improved them).
Developers who’ve worked with C# seem to love the C# programming language, so it has a strong community. Not to mention, C# is the primary language for Unity 3D, a rather popular game engine that could also work on iOS, Linux, etc. The rise of Unity3D as the de facto indie game engine has solidified C#’s future, and Unity3D can also be used to develop Virtual Reality apps. Since VR is a big thing, C# is sure to have a pretty bright future.
On a side note, C# is also more popular for enterprise development in countries other than the US, such as the UK. Obviously Microsoft will keep C# alive for a while and keep it relevant for the .NET platform, and it has been aggressively open-sourcing its products and making it more accessible so developers can adopt it.
Furthermore, if you want to mine websites for data or if you’re interested in being a data scientist, then Python is a good language to learn. If you want to work for an enterprise, then Java is the way to go. If you’re actually not that interested in building things and you’re more interested in job opportunities, then perhaps SQL is a nice place to start out with (especially if you like math).
Altogether, what programming language you should learn in 2016 will ultimately depend on what you want to do.