On Writing Software

It’s surprising how much of programming is actually just coming up with metaphors, paradigms, and verbs to shape the code’s meaning and intent.

The same old data structures repeated over and over….but it’s the treatment of the structures is what seems to give those structures life, context, and meaning. Also known as patterns.

Patterns take the collection of abstract variables–which could represent potentially anything–and put them into a world in which the developer has understanding. A world with constraints and logic. It’s the marriage between pure logic and the emotional human mind.

One of the joys of writing code is playing multi-layer see-saw with pure math: min, max, sin, cos.
Then bundling those operations into nodes within structures: graphs, trees, lists.
Then later applying some constraints on the structures to form patterns: factories, events, composites.
Finally adding business logic constraints. (btw, I don’t mean the ‘yucky’ definition of business–that’s boring.)

Now the code has gained life inside a virtual world. The entire process is incredibly fascinating, but I feel the final process–where the code begins to take on life–is the most interesting.

The execution occurs on the CPU, but the concepts live inside the mind of the developer who has written them. It’s as if the code is present in two places at once: inside the brain of the computer and the mind of a human.

This is one of the reasons why I enjoy writing code so much. There’s a concept, entirely abstract that gets translated into discrete binary operations, entirely concrete.

I find this whole procedure very fascinating.