My Kung Fu is the Best
I don’t know if it is a phase I’m going through or if I’m just starting to show my age, but I’m growing tired of meta. I spend so much time learning new things about programming that the amount of code I’m actually generating has deteriorated down to just what I’m doing for work.
I didn’t come to programming from Computer Science. I was an Electrical Engineering major who switched over to Physics and then fell into programming as a hobby which turned into a career. When I first started programming I had a very low opinion of it. I see a lot of EE types with this attitude: software is easy, and what they do is the hard stuff. Even back then I could see that the field of programming was a huge mental quagmire and I swore that I would not get caught up in it. Software is just there to make the hardware do stuff. My attitude was that the “how” doesn’t matter so much as long as it works.
Naturally that’s not what happened. I got swept up in the industry trends. I became addicted to learning what was new and cool. I was an object zealot and fanboy. Then STL. Scripting languages. ORM. Patterns. TDD. Refactoring. The past few years it’s been functional and logic programming. And that’s all great. I’ve learned a lot and had a lot of fun. But sometimes I wonder if I had just kept my head down and coded more instead of trending more, where I would be. I’m not talking about ignorance here, just pragmatism. There is a balance between the two and I wonder how far off the mark I am, or if I’m off the mark at all.
What I’m growing increasingly intolerant of is zealotry and opinionism. Both of which are almost inseparable from computer programmers. The worst is when I feel it from within. When someone shit-talks the tools I use to do my job, I get a little tight in the chest. And why? Why the hell should I? If I’m getting my work done the best way I know how and the people who use my software are happy, then what is the problem? The truth is, there isn’t a problem.
Michelangelo is said to have seen sculpting not as chiseling out an image from stone, but as releasing the sculpture that was already in the stone. That is such a powerful idea because it means that there are an unlimited number of sculptures in that stone. No two sculptors would set the same sculpture free. Programming is like that. Software is so very abstract, and the limitations on what we do are relatively few compared to other disciplines. Anything that works and makes sense to the programmer is probably not wrong in a fundamental sense. Certainly issues of specific application, maintenance and communication can be discussed, but what I’m getting at is that my methodology or toolset is not dumb just because it isn’t the one you use.
“The Tao that can be told is not the eternal Tao.”
That’s a nice way of saying that you do not have all of the answers.