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. So which language(s) should you learn and why plus what are some of the key differences?


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 language is objectively and universally better than any other.
  • It is better to master one language at a time, than try and learn multiple languages at once.
  • Once you’ve mastered one language it becomes MUCH easier to learn a second, third or fourth language (many programmers know half a dozen or more languages).

What to consider

You should consider the following:

  • How easy the 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 programming languages: important so you can understand the ways in which people describe different 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.

Python, Ruby and JavaScript all fall into this bucket. Universities traditionally preferred Java, C and C++ but this has started to change, with many moving to Python and JavaScript as the principal teaching languages.

But let’s pause for a moment to understand why some 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 languages enable a programmer to write programs that are more or less independent of the particular type of computer. Such 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 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 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 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:

int main()
{
    printf("Hello, World! n");
    return 0;
}

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

Similarly, some languages (like C above), and like JavaScript, have complicated, fiddly and easy to forget syntax. This can be frustrating for beginners where it’s often more exciting to be able to get building than get stuck trying to figure out where you’ve got a missing semi-colon, bracket or curly brace. Yes, typos in your code will break your program!

So what’s hot and what’s not?

General Popularity

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:

JavaScript was the most used, but Python continues to rise

For the seventh year in a row, JavaScript is the most commonly used programming language, but Python has risen in the ranks again

https://insights.stackoverflow.com/survey/2019#most-popular-technologies

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

https://insights.stackoverflow.com/survey/2019#most-loved-dreaded-and-wanted

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.

https://insights.stackoverflow.com/survey/2019#most-loved-dreaded-and-wanted

The most wanted language is Python, followed by JavaScript

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.

https://insights.stackoverflow.com/survey/2019#most-loved-dreaded-and-wanted

The Job Market: Python no. 1, followed by Java and then JavaScript

According to Coding Dojo, a highly regarded coding bootcamp backed by MIT, the most sought after languages across tech employers and teams are the below. Again, Python leads the pack, followed closely by Java and by some small distance JavaScript in third place.

https://www.codingdojo.com/blog/unicorn-languages-report

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):

  1. Python
  2. Java
  3. C/C++
  4. JavaScript
  5. Go
  6. R
  7. Swift
  8. PHP
  9. C#
  10. Matlab

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:

  • ContractExpress
  • 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.

Finally, for the gamers: video games are often written in C#, although many web app games may be written in JavaScript given its interactivity and ease of use with web browsers.

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.

Some languages, such as JavaScript have become increasingly used across the full stack (i.e. from front to back end). As we’ve already mentioned, languages evolve. For instance, JavaScript was famously written in 10 days and created for Netscape, an early web browser. Since then it has morphed into a full-stack language. When you encounter interactive or animated elements on websites, e.g. the menus on this website, you are most likely interacting with JavaScript.

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?

We (and many others) mostly recommend learning Python or JavaScript, as they offer the widest utility and career flexibility.

In terms of ease, Python is in our opinion easier to read, write and get started with. JavaScript is – in our opinion – weighed down by the plethora of curly brackets and parenthesis and semi-colons needed to make the syntax work.

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 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:

http://carlcheo.com/startcoding

Do low code and no-code platforms mean coding is dead?

More recently, it’s arguable there is an even higher-level 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:

Low Code No Code
Primary users Professional developers Business users
Primary objective Speed of development Ease of use
Coding needed Low, but present No coding required
Customization Total customization available Pre-built templates can be customized in limited ways
Platform lock-in Free to move between platforms Sometimes locked into the same platform
End-to-end development All platforms provide end-to-end development Some platforms provide only limited capabilities
Purpose Next-gen, rapid application development tool for professional developers Self-service, drag and drop end-user designed application building
App complexity Can create complex apps Can create simple apps
Cost effectiveness Cost-effective for companies with an existing team of developers Cost-effective for companies with a backlogged IT team and high requirements
Examples BettyBlocks
KiSSFLOW
Mendix
OutSystems
Salesforce Lightning
Appian
DWKIT
VirtualLansa
Autto
Neota Logic
Bryter
Fliplet
Autologyx
Microsoft Power Apps

https://dzone.com/articles/how-integration-platform-is-driving-the-4th-indust

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.