Programming is an odd activity. The goal of the exercise is to build something completely abstract that somehow does something useful. To build this abstract network of symbols and interactions, one uses a rigidly-defined set of linguistic constructs.
On many occasions I have declared, with a level of absoluteness proportional to my blood alcohol level, that good programmers are spatial thinkers. That programming is inherently visual. But the thing is, it’s not visual at all, because physical vision is bound to the real world.
Geeks corral the abstract concepts and in their heads build fantastic frameworks that only they can “see”. The deepest part of the programming is often done with boxes and lines on a whiteboard. The implementation is just details.
But those flat whiteboard representations don’t fully capture the life of the system. And we talk about the “problem space”, which is a rough definition of the world this software is supposed to improve, and a host of other spaces that aren’t like the space Captain Kirk flies through, or even the space Martin Short navigates. It is a space entirely in the heads of the people working on the project, and maybe not even all of them see it.
But it is beautiful in its own way. That space is not bound by physical al law; it is bound by the requirements of the project: rules created by some guy in a suit who wants to sell more used cars or by some lady in jeans who wants to identify people at risk of heart attacks. For each problem the programmer builds a world, a new space, unbound by that old, “traditional” space that has finite dimensions and entropy all those other distractions.
Programmers create small, specific universes. Pocket Universes. Most of those universes would be pretty boring to you; as you listen to Jane Geek at your class reunion go on about how she streamlined insurance claims, remember this: even if Jane Geek didn’t create a new universe, she sure as hell improved on someone else’s crappy universe (there are myriad crappy universes now). She is right to feel proud. How many Universes have you improved lately?