November 20, 2021

Programming vs Coding, what's the difference?

What is the difference between programming and coding and why is it actually kind of useful to know that?

We're not going to go into official definitions. There are a few important distinctions that can actually be pretty useful to know. And it can keep you out of trouble with using the wrong word let's say because weirdly people can get sort of offended if you call them a coder.

What is programming?

Let’s start with programming which is a set of instructions that define behavior now I could use real-life examples like how we're programmed to get hungry and tired check social media to talk about Pavlov's dogs and stuff like that but i won't.

What I'll say instead is that programming is the manifestation of logic.

Programming equals logic.

This is why in fact many consider programming the close cousin of math. And why math majors are actually equally sought?

After the topmost complex software engineering jobs and in colleges you’ll find a class called discrete math which is often specifically math for programming. Don't let that scare you though you do not need a formal background in this stuff to become a great programmer.

You can figure a lot of it out as you go but these are a few reasons why people call programming applied math ultimately. In the world of logic, you can think of math as the theoretical branch and programming as the practical branch. This logical basis is why even though they look like code. You’ll hear people say that CSS and HTML are not real programming languages. So it's not because they’re Back-end elitists at least not in most cases.

Anyway, programming and not coding skills are what most of the biggest tech companies test for.

It's why they let you take your interview a lot of the time in any language that you want. This is why these interviews are often done on a whiteboard with something called pseudocode where you're just writing out steps in plain english rather than specific coding syntax.

One final example there's a course that focuses purely on programming and not coding and that's Harvard's CS50. A lot of people are surprised when the first week in homework are not even in a real programming language. It's just some kids programming language called Scratch.

Then from there the course quickly moves from language to language. From C to JavaScript to Python. It's not because it's covering as many languages as possible but rather focusing on the logical elements and patterns instead of the specific code samples.

What is Coding?

Now let’s talk about coding which in some ways is broader and in others more specific we could call coding the implementation or details of a logical programming solution.

But as we know that's not necessarily the case because we can also code in something like HTML, or CSS. For this reason it's harder to pin down a specific definition of coding but one thing's for sure to be a good coder you have to learn the syntax of different coding languages in many ways.

The logical problem solving of programming is on a higher level of abstraction than coding.

Which is more focused on technical details like code, quality breaking things into functions and different files, and leveraging code libraries all come into play here.

Interestingly you can swap out different code solutions for the exact same programming outcome. This is part of the reason. The first code we write in any new language is “Hello world” which is completely the same in programming terms but different in every language in coding terms.

JavaScript - console.log(). Python -  print() and the Java one that is super long. Just like everything in Java.

One important thing to keep in mind is if you try to explain coding details to non-developers they will quickly fall asleep. This is where some of the age-old conflicts between technical and non-technical people on a team emerge. Where the developers are pushing to refactor the codebase the project manager is asking what's the benefit to the end-user and met with blank stairs.

To give a course example for coding if you see anything like basic JavaScript, Python101, Advanced Python - these are very focused on pure coding concepts.

In other words, the syntax and patterns of a specific language also be a bit careful calling someone a coder is a bit slanderous in the developer world.

It kind of implies that you're just a cog or a machine and all you're good for is writing code and also that you're easily replaceable by another coder and that person could also be on the other side of the world. So with both these definitions it's fair to say that once you know programming coding is really easy.

It's why experienced developers can learn new languages so fast.

Learning programming also helps you build mental models and I think it's no coincidence that the world is now run by former programmers.

Bill Gates, Jeff Bezos, Elon Musk, Mark Zuckerberg. So if you will hear a lot of people say to focus on programming when you’re starting out don't worry about coding language and people think this gives them permission to go learn five different languages just because they’re not focused on language.

But the truth is the faster you can master a single language the sooner you can get beyond just the coding step and you can only focus on the programming because you’re not constantly learning a new syntax.

The difference between development and programming?

Anyway, just a bonus here at the end let's compare both of these to development. Development is more focused on the solution outcome or business need. Development solutions can involve much much more than programming or coding now.

While we do see coding jobs automated more and more by better tooling code generators and even machine learning, algorithms the principles of programming are here to stay. And we could see the number of jobs requiring pure coding drop. Even if you move beyond the job of being a programmer and want to become the next Elon Musk he can still help you a lot.

Anyway, I hope this article illuminates some of the key differences between programming and development. I hope you learned something in this one.