Thursday, March 22, 2012

The visual life of a programmer

I've been doing a big push at work this week, lots of late nights, and I woke up this morning with all these images flashing through my mind.  They were not images of anything in the physical world.  They were my mental models of the software I was working on.

As I observed more carefully, I could see I had a mental shape for all the constructs I was working with, and I saw these energetic flows move between these shapes as the entities interacted with each other.  I had a physical structure in my mind and I was interacting with it, moving things around, optimizing, finding where the issues were.

It was quite amazing to me, that I could hold this entire mental model in my head and work it through its paces.

And then I pictured all of us at work, each of us sitting at our desks, mentally moving our images around as we worked to get our software to work.  Here we were, an entire construction crew, but instead of using trucks and cranes and power diggers we were using our fingers, just our fingers.  Creating entire worlds with our fingers, managed and maintained in a mental world that nobody sees and I can't show it off to anyone.

Engineers of prior generations created beautiful structures that everyone could walk through, experience and admire.  With software, people do get to experience what we create, but only the result, not the structures themselves, the complex, and often beautiful design structures behind the product, which have life and weight and form, but only within the mind.

So when my children wonder what I do, all they see is me in front of a screen using my fingers.  They can not see nor appreciate the rich, beautiful (OK, and sometimes hacky) structures that I am creating.  I've always been sad about this - I can't say "see, see what I'm building, ain't it cool?"  It's a strange feeling, my entire career has been creating things nobody can see but me...


Emilian Bold said...

Beautiful blog post!

I've always thought that the guys from Hesse's The Glass Bead Game were some kind of future programmers.

[edit: typo]

Babblesmith said...

You've perfectly described one of the characteristics of development. It does not satisfy cravings for tangible, tactile progress. There's two construction sites next to the building I work in and a couple times per day I take a moment to look out the window to examine the progress - envying the clear evidence of theirs before going back to my desk and typing more.