Castles of Abstraction

Ramblings From A Man In A Fancy Hut

A few months ago I had a moment of existential crisis.

We were remodeling our basement bathroom and wanted the toilet moved. The contractors came, jackhammered the cement, and laid new pipes. I got home from work and wanted to see the progress, so I poked my head in and saw... dirt.

There was dirt under my house.

I closed the door slowly and backed away.

My house is just a fancy hut.

Don't get me wrong—I am so privileged to have a nice, safe home. But when I say it's a fancy hut, I mean it's not magic: it's some cement in the ground with some brick, cinderblock, and wood on top.

Sometimes we get extra fancy. We shove stuff in the walls for extra insulation. We pipe water in and out. We hide wires in the walls so we don't have to see them (so unsightly). Indoor plumbing, which I accept daily as basic fact of life, was not commonplace even in the U.S. as recent as 80 years ago.

My first reaction at seeing the dirt was surprise—I had never really thought about it much. My second reaction was a wave of shame. Of course there was dirt under my house, what else could there be? I felt like a fool, blinded by a privileged life of playing with computers all day for money.

I forgot there was dirt under my house.


I think everyone is capable of understanding anything about computers, but no one is capable of understanding everything.

Computers are complex. We can't possibly hold all computerdom in our head at once—our brains would 'splode. So, we necessarily establish boundaries and dig foundations for castles of abstraction.

Every day we work hard in our hyper-dimensional castles, and every day the castles expand in new, M.C. Escher-esque ways. Yet we walk their familiar halls with increasing confidence, because we too grow with the castle.

The deeper and more comfortable we are within the walls of abstraction, the easier it is to lose touch with reality.

"The programmer, like the poet, works only slightly removed from pure thought-stuff. [They build] castles in the air, from air, creating by exertion of the imagination..."

— Fred Brooks

Code is a castle of abstraction in which we can live. It's easy to get lost and forget code is not the only thing that builds software.

Many of us frequently live in Kanban boards or other project management tools. Tools and processes are also abstractions we use to build software.

Then there are even more abstract castles, like culture and teams. They're sort of like abstract distributed meta-castles. They're way harder to understand and build than code, but even more critical than code or tools to create good software.

The Fred Brooks quote goes on:

"...Yet the program construct, unlike the poet's words, is real in the sense that it moves and works, producing visible outputs separately from the construct itself. It prints results, draws pictures, produces sounds, moves arms. The magic of myth and legend has come true in our time. One types the correct incantation on a keyboard, and a display screen comes to life, showing things that never were nor could be."

Any sufficiently advanced technology is indistinguishable from magic... if you don't look behind the curtain. When you open the bathroom door and look: it's just a fancy hut. We forget there is dirt under the castle floor.

Software is a story of humans. Software is built by humans, for humans. The magic of the display coming to life is not a miracle of science; it is a triumph of the human imagination. Code is code. Silicon is silicon. Electricity is electricity.

On and off, ones and zeros, pixels on a display—these have no inherent meaning. It's humans that craft meaning from nothing, hoping that other humans too will find their work meaningful.

Our choices about what tech stack, processes, or project management software to use—all of it—are secondary to the humanity of software development.

The Agile manifesto, a document which spawned countless software development methodologies, starts with this:

We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:

Individuals and interactions over processes and tools

...

Software is built by humans, for humans. Let's never get so lost in the constructs of our mind that we forget.


Buffering…

Here are a couple of links to things that have been sitting in the mental queue this week:

  1. obsidian.md. Last newsletter (if you can call that first post a few days ago a newsletter) I mentioned I’ve been thinking a lot recently about knowledge as a graph, second brains, digital gardens, etc., etc. A colleague just shared this with me today and I am super stoked to be playing with it. I like that all the notes are just markdown files in a flat folder on your disk. And look how sick this 80s neon theme looks.

  2. Second-guessing the modern web. There has been a lot going on about this recently (well, let’s face it: it’s always going on) since Paul Biggar tweeted about functions-as-a-service earlier this week. Complexity is gonna complex, as long as it has to exist. We can move it around, put lipstick on it, but it is what it is. That said, we can make choices and accept constraints that will allow us to abstract away complexity so that we can focus on what really matters: humans. Maybe it’s picking an easier stack so you can focus on your writing instead of the plumbing of your blog. Maybe it’s going with rails or whatever you know so you can focus on the features of your product and iterating quickly.

  3. How to Market Yourself without Being a Celebrity. Even though it’s an integral part of our careers, people struggle with figuring out how to market themselves (your’s truly included). I’ve been thinking a lot about “personal brand” and “personal moats” lately. Shawn Wang wrote this post that I thought had some great insights into how to market yourself, even if you’re not a twitter micro-celeb.

  4. How to Retire Early (The 4% Rule?). Early “retirement” is one of my continuing areas of interest. I am very attracted to principles of Financial Independence and being able to feel safer (especially in times like this). I’ve got a long way to go, but this video challenged the wisdom of the conventional 4% rule that is ubiquitous in the FIRE movement discourse. It has me rethinking a lot.


Thoughts? Like what you read? Don’t like? Too long? Too short? Leave a comment, email me back, or @ me on twitter! Would love to get some interaction.

Thanks for tuning in this week to 𝖈𝖔𝖌𝖎𝖙𝖆𝖙𝖔𝖗! Smell ya later!