Our most frequently asked questions are: What coding language should I learn? Where can I learn how to code? How do I learn coding? Why should I learn to code? Here we will see out our advice and answers to these questions. We’ll explain which coding language or languages you should learn and why. We’ll also articulate some of the key differences between the major types of coding languages. Let’s get cracking!
Why is this question tricky?
Two words: opinions and trends. Like anything, coding is highly opinionated. Coding is also trend-driven. Coding languages and frameworks (essentially a code library or skeleton code to provide generic, reusable and common functionality common to almost applications) go in and out of fashion all the time.
If you know any developers – or have watched HBO’s Silicon Valley TV show – you’ll have experienced this first hand. It can even get quite snarky.
Why you should consider carefully, but not overanalyse what to learn
To become proficient, let alone fluent, in any one coding language will take time. It will likely take you 100s of hours of practice before you can build something that resembles a real-world, tangible piece of software.
So make sure you understand what you’re learning and why you might prefer to learn X over Y.
However, it is worth understanding that:
- No one coding language is objectively and universally better than any other.
- It is better to master one coding language at a time, than try and learn multiple coding languages at once.
- Once you’ve mastered one coding language it becomes MUCH easier to learn a second, third or fourth coding language (many programmers know half a dozen or more coding languages).
What to consider
You should consider the following:
- How easy the coding language is to learn: important if your why is simply to try coding and gain a basic understanding.
- Long term prospects and the job market: important if you want to switch careers or futureproof your learning.
- A basic understanding of some of the key distinctions between coding languages: important so you can understand the ways in which people describe different coding languages and what these mean.
Ease of learning
Most programmers and technologists – ourselves included – typically recommend that high-level scripting languages are easiest to learn.
But let’s pause for a moment to understand why some programming languages are harder or easier to learn than others.
High-level vs Low-level languages
A key distinction is between (a) high-level languages, and (b) low-level languages.
High-level programming languages enable a programmer to write programs that are more or less independent of the particular type of computer. Such programming languages are also considered high-level because they are closer to human languages in syntax and further from machine languages. They are however harder for machines to understand, and require translation into machine language via a compiler or interpreter. The number and type of translations required between the programming language and machine language will impact the speed of performance. Examples include Python and Ruby, which are very high level and probably some of the easiest to read and write in terms of syntax.
Low-level programming languages are considered low-level because they are closer to machine language and further from human languages. They are much harder to read and write as a human, but easier for a machine to understand. Because they are closest to how a machine understands instructions, the performance speed is very high. Examples include assembly language and binary (i.e. 0s and 1s used to represent electrical signals being on or off).
But not all high-level languages are equally easy
Within high-level programming languages – where we recommend you focus – there is a noticeable spectrum of abstraction, syntax complexity, ease of use and performance.
For instance, C is lower level vs Python, albeit both are regarded as high-level programming languages (although it’s possible to distinguish Python from C on the basis Python is a scripting language whereas C is not).
To see what we mean, compare how to make the words “Hello, World!” appear on a computer screen in Python:
print "Hello, World!";
versus how to achieve the same outcome via C:
printf("Hello, World! \n");
And to highlight the gulf between the above and low-level languages such as binary, see the same in binary:
01001000 01100101 01101100 01101100 01101111 00101100 00100000 01010111 01101111 01110010 01101100 01100100 00100001
So what’s hot and what’s not?
StackOverflow, a question and answer site for professional and enthusiast programmers, does an annual survey of developers to understand who they are, where they live / work, what they do and how they do it. They produce fantastic data, including which languages are most used, loved, hated and wanted.
Highlights from the 2019 data demonstrate the following:
The most loved language is Rust, followed by Python
For the fourth year in a row, Rust is the most loved programming language among our respondents, followed close behind by Python, the fastest-growing major language today. This means that proportionally, more developers want to continue working with these than other languages
The most dreaded language is VBA (it is truly awful)
VBA and Objective-C rank as the most dreaded languages in 2019. Most dreaded means that a high percentage of developers who are currently using these technologies express no interest in continuing to do so.
Python is the most wanted language for the third year in a row, meaning that developers who do not yet use it say they want to learn it.
Long term prospects
According to hackr.io, an excellent resource for online learning materials for coding, the languages with the best long term prospects are the below (based on hiring trends, community sizes and adoption):
But wait, what about databases?
OK, so there is a whole ecosystem of languages devoted to databases. As noted below, most software applications and websites involve some form of database to store and manage data.
So what should you be learning in terms of database languages? Probably something SQL based given its longstanding and continued prevalence, lasting popularity and many variations.
Most used = MySQL, followed by 3 other SQL variations
Like 2018, MySQL is the most commonly used database. PostgreSQL has taken the second spot in 2019, edging ahead of Microsoft SQL Server.
Most loved = Redis, followed by PostgreSQL and Elasticsearch
For the third year in a row, Redis is the most loved database, meaning that proportionally more developers want to continue working with it than any other database.
Most dreaded = Couchbase
Couchbase and Oracle rank as the most dreaded databases.
Most wanted = MongoDB
For the third year in a row, MongoDB is the most wanted database.
Understanding some basic distinctions between languages
01. Purpose of the language
The most common entry point for “coding@ was traditionally HTML and CSS.
HTML stands for HyperText Markup Language. It’s used to make basic webpages. It’s not technically a programming language at all. However, if you’re completely new to coding, it will look alien and be what you might associate with “coding”. Whenever you see images and text on the web they have been arranged via HTML. HTML does this using what are called “tags”.
For lawyers reading this, HTML is probably closest to the various “legal mark-up languages” used in legal applications such as:
- DocAssemble (although DocAssemble used YAML, which stands for Yet Another Markup Language (as there are lots of them))
- The Accord Project
- Scissero’s Firelex
CSS stands for Cascading Stylesheets and makes the stuff you organised with HTML look good. It essentially does most of the formatting, styling and colouring you see on any webpage.
However, HTML and CSS alone are only useful for very basic websites.
Most websites or apps will be creating, reading, updating or deleting data (know as CRUD operations) to and from somewhere. That somewhere will be a database. Although old, SQL remains the most widely used database language. It is also used heavily in big data applications for data analysis tasks.
If you’re into mobile apps, languages like Swift and Objective-C are used only for iPhone app development. For Android, most app development is done in Java, which is also used heavily in enterprise software.
As you might be starting to realise, languages can have multiple use cases. In fact, most languages – like natural languages – are a constantly evolving body of work, continually applied to new use cases.
02. Backend vs Frontend
Traditionally there was also a divide between front-end and back-end languages. Frontend languages control the user interfaces you interact with on the web, via apps and games whereas backend languages control the routing of information, actions and data to and from the operational parts of the software.
Today, this distinction is less easy to draw.
A helpful breakdown of what frontend and backend languages do and include is set out below:
The frontend vs backend distinction still plays a part in hiring and careers. Developers tend to specialise more or less on either frontend, backend or occasionally are a jack of all trades and are able to code the full stack (i.e. frontend and backend).
A helpful breakdown of what they know, do and are is below:
03. Declarative vs Imperative
Declarative languages have the programmer focus on what is to be computed, e.g. “Table for two, please”.
Imperative languages have the programmer focus on how something is to be computed, e.g. “I see that table located by the bar is empty. My partner and I are going to walk over there and sit down”.
There are many other distinctions along this divide, but for now, if you’re just starting out, have this distinction in mind if you see anyone referring to a language being declarative or imperative.
Another adjunct to this distinction is the difference between functional and object-oriented languages. Although this is a very important distinction, it is too complicated to detail here, but very well explained in this article should you be interested. At some point, we will do our own piece on this topic, but for now, the aforementioned article is excellent.
OK, but that’s a lot to think about… where should I start?
When you’re learning, that can be super distracting and often causes a lot of irritating bugs in your code if you forget them.
But never fear. As we note above, once you learn one coding language it becomes a LOT easier to learn a second, a third and so on. It’s the same as being able to play one instrument or knowing a foreign language, the subsequent instruments and languages are easier to learn than the first.
If you’re still unsure, we recommend this phenomenal decision tree infographic via Carl Cheo:
Do low code and no-code platforms mean coding is dead?
More recently, it’s arguable there is an even higher-level coding language: visual languages.
These are exemplified by the low code and no code app building platforms. These combine (to different degrees) reusable prefabricated, sometimes drag and drop, visual GUI (graphical user interface) building blocks.
This significantly reduces the amount of coding knowledge, or actual coding needed to build a functioning website or app.
The principal differences between these two paradigms are below:
|Speed of development
|Ease of use
|Low, but present
|No coding required
|Total customization available
|Pre-built templates can be customized in limited ways
|Free to move between platforms
|Sometimes locked into the same platform
|All platforms provide end-to-end development
|Some platforms provide only limited capabilities
|Next-gen, rapid application development tool for professional developers
|Self-service, drag and drop end-user designed application building
|Can create complex apps
|Can create simple apps
|Cost-effective for companies with an existing team of developers
|Cost-effective for companies with a backlogged IT team and high requirements
Microsoft Power Apps
As you can see, for most business users casually interested in coding but more excited about building apps and websites, the no-code option is more attractive. The no-code option is easier and quicker to learn.
However, for individuals with coding skills (or intending on learning some), low code platforms can be useful tools to help speed up development efforts. These tools can be used to scaffold basic apps, allowing the developer to focus on functionality, design and reusable modules over repetitive manual detail.
These tools can also be extremely helpful – and probably most helpful in legal organisations – to rapidly prototype, test and iterate minimum viable products for new app or software ideas.
This is often a bottleneck in large organisations where such activities typically fall within traditional IT. That can often mean siloing and sluggish processes or lengthy text-heavy detail-oriented design specs that are hard to understand and validate. If you work in a legal organisation, equipping your middleware team – probably your innovation or operations team – with such tools can expedite idea testing, MVP development and productizing those across the enterprise.
Being able to build a working prototype allows rapid testing and feedback to hone in on the best features and functionality, tightening the feedback loop between user and builder. It allows software to happen faster.
Conclusion & Further Reading
So there you are. Hopefully, you now understand a little more about what to learn (and why) when it comes to programming languages, along with a few key distinctions and considerations. Next up we will unravel where to learn these skills.
If you want some further detail on who developers are, their academic and professional qualifications, geographies, jobs and focuses see this fantastic study by StackOverflow, the leading Q&A website for all things coding and software.