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, since some people weirdly get offended by being called a "coder."
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, or to check social media. I could 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.
This is why many consider programming to be the close cousin of math. And why math majors are actually equally sought after for the most complex software engineering jobs. 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. 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, 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. It's 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 of homework is not even in a real programming language. It's just a kids' programming language called Scratch.
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.
The logical problem solving of programming is on a higher level of abstraction than coding.
Coding is more focused on technical details like code quality, breaking things into functions and different files, and leveraging code libraries.
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.
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 is met with blank stares.
In other words, the syntax and patterns of a specific language.
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. It also could imply that you're easily replaceable by another coder, who could be on the other side of the world.
So with both of 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. You will hear a lot of people say to focus on programming when you’re starting out and not to worry about coding languages. People think this gives them permission to go learn five different languages.
But the truth is, the faster you can master a single language, the sooner you can get beyond just the coding to focus on the programming, because you’re not constantly learning a new syntax.
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.
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. Even if you move beyond the job of being a programmer and want to become the next Elon Musk, a background in programming can still help you a lot.
Anyway, I hope this article illuminates some of the key differences between programming and coding. I hope you learned something in this one.