Deciding which programming languages to learn is one of the most enjoyable things we get to do as software engineers, but it is also incredibly impactful on our career and the types of jobs we will be able to find. The opportunity cost of learning a programming language means it takes time away from learning something else, so we must be efficient where we focus our efforts to ensure we are set up for success now and in the future.
This list ranks languages both on their current growth rate as well as the impact on the industry as a whole. It will introduce languages from different areas of the stack — you will find useful material whether you want to be a frontend engineer, backend engineer, or mobile developer. Let’s take a look at the top programming languages of 2019.
TLDR: TypeScript, Python, Kotlin, Swift, Go, Rust, SQL, GraphQL, Solidity
TypeScript has become the defacto type system for JS, beating out other competitors such as Flow and has far more adoption than Reason. According to Stackoverflow, TypeScript is the #3 most loved programming with a score of 73.1%. This ranks only behind Rust and Python and one spot above Kotlin — all of which are on this list.
Developers love Python. Year after year, this fact holds true. Python has become the primary language for data scientists, with R as its only real competition. In addition, Python is used extensively for building web application APIs and general scripting.
Python has been around for over 30 years and has withstood the test of time. It ranks as the #2 most loved language and #1 as the most wanted language.
Python has proven that it will remain a force as a top language for software engineers. If you invest your time into learning it, there is no doubt that it will pay off.
When Kotlin was introduced, developers rapidly adopted it as a better alternative to writing Android applications compared to Java. Recently, Google has even named it as the preferred method for Android app development.
Kotlin is a cross-platform language that is meant to interoperate entirely with Java and run on the JVM. The language is statically typed but known to be much more concise than Java. In addition to providing better code readability and developer experience, other improvements of Kotlin are null-pointer safety, extension functions, and infix notation.
Kotlin ranks as the #4 most loved language according to StackOverflow and has solidified itself as the better alternative to Java. Whether you want to build apps for Android or just have a better language on the JVM, Kotlin is an excellent choice to ensure you are prepared for the future.
Swift was introduced by Apple as an alternative to Objective-C to write applications for iOS and Mac. Much like Kotlin has replaced Java for Android apps, Swift has rapidly become the preferred coding language for iPhone developers. Swift ranks as the #6 most loved programming language and has solidified itself as an essential tool for mobile developers.
Golang has rapidly taken the position as one of the top languages to build microservices. The language was created a decade ago by Google and offers many of the benefits of C/C++, but Go makes many changes to improve brevity, simplicity, and safety.
Simply stated, Go does practically everything well. The code is easy to understand but also incredibly efficient computationally. A new developer can pick it up rather quickly. It is a statically typed and compiled language that manages concurrency efficiently.
Go is mostly noted for its unique location on the continuum of developer experience while also being incredibly fast. The code writes almost like a scripting language, allowing developers to rapidly build services. However, its type inference also provides visibility into the code that we would expect from more verbose languages, as well as the same safety. Go has been optimized by Google to be incredibly efficient with memory and blazing fast.
Given the many benefits of Go, it is not surprising it has been rapidly adopted. Its speed makes it a great choice for web servers, and it is simple enough to quickly spin up micro-services. It handles networking very well, and Go also does a good job as a language for systems. Some practical implementations of Go are:
- Kubernetes is built with Go
- The primary language for the Ethereum source code and Hyperledger blockchain
- Countless web servers and tools for top tier tech companies (Google, Uber, Twitch, Medium, Postmates, and many more)
Go may be the perfect language to add to your developer toolbox. Its ability to do so many things well means that it will always be in the conversation as a tool to use for any job.
This list would not be complete without including Rust. For the fourth straight year, it was ranked as the #1 most loved programming language in 2019 according to StackOverflow.
Rust is primarily used as a systems programming language but has recognized growth beyond this area. There are more tutorials popping up to use Rust as a web server, and it is one of the languages that can compile into WebAssembly.
Share the love and check out why so many people are turning to Rust.
While it is not quite the same as the other languages on our list (and some may argue that it does not belong here), understanding SQL is very important. Almost every single tech company will have some data storage, and by far the most popular method still is a SQL implementation. Understanding data storage and retrieval can only serve to make you a better software developer. If you are a front end engineer that has never looked into where your data comes from, do yourself a favor and gain an understanding of SQL.
GraphQL is a query language that totally changes the way we think about we build APIs. Representational State Transfer (REST) has been the dominant methodology for API architecture where the URL structure dictates the data which it contains. This requires that the client understand all the available endpoints and shape of the data returned.
GraphQL upends this thought process by using a single endpoint to request data. The data itself must be defined in a schema which is statically typed. By providing a well-defined schema through a single URL, the API is entirely self-documenting. The client can view exactly what data is contained on the server.
In addition, the application becomes entirely data-driven — the client sends a (possibly nested) object of keys for the data that they want. The GraphQL server responds with a JSON object containing the matching key/value pairs from the request. This allows the client to request exactly the data that they need for a given page.
GraphQL is on pace to revolutionize API development, and learning the technology will provide you opportunities for years to come.
Is blockchain hype or a real force to revolutionize technology? While the debate echos with every swing of coin prices, the test of time and adoption by large tech companies indicate it will likely be around for years.
One of the promises of blockchain is that it can usher in the Web 3.0 — an entirely decentralized internet where code is executed by individuals instead of being housed in servers and controlled by corporations. The vision is idealistic, but it is one that truly gives the people the power.
While Solidity has a much higher risk than the other languages on this list, it can also set you up to be on the cutting edge of technology.
Learning anything takes time, and we always want to ensure we use our time effectively. As software engineers, we learn new languages because we love it, but we are also aware that what we learn impacts our future and careers. We would all love to learn everything, but if you focus on the languages on this list, it will ensure you are adding tools to your skill set that will benefit you for years to come.