What is coding?

At first glance, writing computer code seems obvious, you are writing code that a computer can understand, but when you build software, what are you actually doing conceptually.

Many have asked the same question I’m sure, so here’s my go at describing it metaphorically, at a high level, with no specific language in mind, for people who don’t code or who are just starting.

First we will start off with a simple metaphor, one that encompasses the basic elements of software engineering.

1) The (Humble) Square

Humble Square The square represents the building block, it is in and of itself a benign and boring concept on the surface, until you start to delve into its properties.
This could represent any number of software building blocks, the byte, a text character, a pixel, a variable and so on.

2) The Symbol

The Symbol This symbol is comprised of squares, it's still a very simple concept but already it's obvious that the square, when structured, can convey meaning, in this case the letter E which represents the phonetic sound EEEEEEEE!
This could represent a single function, an object or struct, or a set of pixels.

3) The Message

The Message The message is comprised of symbols, comprised of squares. It has functionality in the real world as it can be put into context with other messages to convey an infinite number of meanings.
This could represent a whole program, or a function, or just some text.

4) Storage

The Storage As you can see, in this configuration the square can be used to store information, in this case a palette of colour, in the shape of a square.
You might say this is similar to a database or an array or a mathematical set

5) The Embodiment

Embodiment At what point do these building blocks become the high level embodiment of an idea or group of ideas? The more squares you have, the higher the resolution. At what point does it become a real thing? Or is it purely perspective, zoom in or out and it takes on or loses meaning.
What is the art? The concept, the medium, or the translation into the medium?

Stack What do I mean by zoom in or zoom out? Well, in reality programs are arranged as lots of nested frames of memory, commonly known as the stack. When you are coding a large program, it's impossible to keep all of these layers in your mind at once, so code is organized in a way that lets you "zoom" in on a particular layer.