One time, I read Zen & The Art of Motorcycle Maintenance, so I pretty much know everything anybody needs to know about philosophy. At least, I know as much as one needs to know to be able to make sweeping generalizations about such things. How do I know I’m philosophically wise enough for this? Because, how have I not made this clear enough yet, I read Zen & The Art of Motorcycle Maintenance.
With that settled, I want to explain why, for me, programming is a subjective experience. Before you try and back sass me, let me redefine some key terms, specifically subjective and objective. I do this mostly because it’s an easy way to win an argument, but also because I have, like, opinions man.
Think back to college. Remember that time when you made the mistake of talking to that particularly annoying Physics major, yes, that one, the one who needed you to understand that the Universe made Sense. He cornered you for twenty minutes, proselytizing you to switch majors (but only if you were smart enough), so that you too could experience the beauty of understanding of how the world works. He’d talk about the math behind attractive forces and friction and black holes and are you doing anything later? He wasn’t wrong mind you, he just hadn’t learned yet that vector calculus wasn’t a viable replacement for charm.
There are rules and equations and math and shit that can be used to explain how tons of things in life work. If all you give me is an atom and a perfect vacuum, I can’t do all too much to surprise you if you know about the basics of physics. The rules are the rules and, given enough dedication, all the rules for how that atom and that vacuum interact can be written out and modeled and understood piecemeal. To me, that’s objective, where you can know all the rules beforehand for a situation and use them to make accurate predictions about what will happen.
Subjective is when you don’t know all the rules beforehand, can’t know all the rules beforehand, when you can only “know it when you see it”. You can try to write down all the rules and use them to make a subjectively good piece of work but then you’ll be called formulaic and fail out of your second MFA program. There are still rules when you are subjective, there’s always an explanation for why something is subjectively bad, but there isn’t an easy way to predict when something will be subjectively good. In some ways, the threshold between subjective and objective is determined by the number of rules involved. For physics, I could simplify down all the rules onto a single sheet of paper and roll from there. For art, it’s not possible to write down enough of the rules ahead of time to figure out what’s possibly going to happen. Subjective things reflect the complexity of life and the universe and how could all that fit on one sheet of paper, I mean, really?
To bring it on home, programing is subjective because we build up all these abstractions and layer them on top of each other, preventing me from understanding everything all at once. There are so many little rules and gotchas in programming that it’s not possible to know enough to predict what a computer will do ahead of time accurately. Everyday, I write programs that break in ways that I could not and would never predict to happen. Even though I could dig in and find an explanation for every thing the program does, in total, the program is an accumulation of rules that I don’t have the brain capacity to understand all at once. I can maybe remember python’s syntax, the basics of networking, the bare bones of the ftp protocol and the task at hand. The idea of trying to remember everything about how a computer works, keeping it fresh in my mind, while also trying to do anything useful is a joke. Computer programming is subjective in that I know when I’ve broken one of the rules but I can’t tell you ahead of time what all of the rules are nor whether I’m about to break one of them.
So, what I’m trying to say is that computer programming is like painting because one time I read a bunch of essays by Paul Graham and he gets this stuff deep man.