Monday, August 21, 2006

applied metaphysics

There's something I want to set the record straight on. I met a fair number of people this weekend, and in most cases meeting new folks follows a conversation pattern something like this:
  • Person: "So, do you go to school?"
  • Me: "I graduated in May."
  • Person: "Oh, really? What'd you study?"
  • Me: "I got my B.A. in philosophy."
  • Person: "Oooo...so what are doing with that now?"
  • Me: "Actually, I'm a software architect. I wrote tools for insurance agents."
  • Person: "Wow! Talk about diverse interests..."
Now, I still do not quite understand why our society is so enamored with (a) the idea that everyone should immediately get a job in exactly the major they got in college and (b) the thought that any degree in the humanities is like professional suicide, but those are not the points I want to clear up here. The point I want to clear up is that philosophy and computer science are not so dissimilar after all. Some of you may already have heard this from me before, but here it is for the world to read so I can stop having to tell it to everyone (or at least, all 2-3 people who read my blog).

Everyone who knows anything about computer science understands that it is fundamentally based on the basic rules of bivalent logic: true and false, 1 and 0, on and off, "and" and "or", if-then. Logic is based in philosophy; it's still one of the focus disciplines within the greater subject. In that regard, computer science and philosophy are linked, but, again, that's not the connection I am after right now.

What I focus on is a different kind of connection that exists between software engineering on one hand and metaphysics on the other. Since I assume most of my readership comes from the software side of this, we'll start with metaphysics--metaphysics is, briefly, the study of things in general. Questions about what sorts of things exist (i.e., physical things or mental things, collections of general properties or individual particular objects) and how they can relate to each other (e.g., causal relationships) are questions that fall under the purview of metaphysics. In essence, it is the most abstract of all branches of philosophy, because a metaphysical truth must hold for everything--tables, chairs, the number '2', cats, dogs, trees, all points exactly 4 light years from Venus, beer, people, last Wednesday, next October, even God himself (depending on who you side with). That's metaphysics.

Now, then--software engineering. The subject of this one is more intuitively clear; a software engineer is responsible for the design of whatever system he or she is working on, from determining the class structure, process flow, and component interaction (whatever is necessary) to choosing an implementation. It's a broad subject, too, but for now let's just focus on the part that I enjoy the most, which is the design work.

So, we have two subjects--metaphysics, which focuses on the sorts of things and the kinds or interactions which do/can exist in our universe; and software engineering, which focuses on developing the design for the components and activity of some program or another. Hopefully by now you can see the connection I'm trying to evoke; metaphysics is philosophy's way of reverse engineering the design of the actual universe, whereas software engineering is the computer scientist's way of constructing his own little microcosm.

I've heard it said that technology is applied science; in much the same way, I see software engineering as applied metaphysics.

I had a friend berate me once for choosing philosophy as a major; she accused me of wanting to "be God". Well, I'll admit--there is some merit to her accusation. But I have no desire to actually design the universe; I want to understand it, yes, but I most certainly do not want to be in charge. After all, I'm a software architect. I get to play God every day, to sit at the helm of my own little personal universe and direct its ontology. I get to determine which concepts are acceptable and which are not, which causal relationships to allow and which to forbid. I determine the laws of nature and I determine the essential properties of the objects within my personal metaphysical sandbox, and it's hard sometimes. It's hard to design a system even as small as the one I work on, so I can't even imagine trying to wrap my brain around something so complex, so stable, and so vastly intricate as the universe.

So, I'll just stick to my software. I'm not quite qualified for Infinity.

1 comment:

clay said...

that's for a different post. also, i'm not sure how much of that is bound by an NDA...