As I sit 30 pages deep into the maze of English, mathematics, and mathematical English (which is a language in its own right) that is my dissertation, I can’t help but reminisce about the days when I just used to code all day. It didn’t matter what I was writing; every project became a labor of love, though it was eked out in a battle for mastery against a mercilessly correct machine and the equally merciless ambiguities of the human mind. Receiving an interview feedback form from Google brought me back for a time, forced me to remember all of my victories – and defeats – as I tried to impart the thoughts that flitted through my mind at the interview.
I’ve spoken of my childhood already: of the early victory that was Metasquarer, of the elation and superlative mastery that breathed life into Final Aegis, and of the zero-sum victory in the PlanetSourceCode contest that firmly embedded a non-competition principle into my code of ethics.
My primary thoughts today did not trace over those paths so much as my more recent evolution as a programmer: the culmination of my long years of study, the final self-acknowledgment of mastery (I’m always the last one to), and the associated conclusion: it was no longer a challenge worthy of being my primary activity. The evolution of programming from the desktop to the web simply served to reinforce these concepts; “programmers” these days are more likely to use languages such as Javascript and HTML (which I still consider a markup rather than programming language) than C++ and Java. Fun as that is, that’s web development, and its practitioners tend not to understand either the elegance of – or need for – a good computer program. “Why compute squares on a board in O(n) when you can do it in O(n4) by scanning the whole board for each point?” sums this attitude up. “Computers are getting faster, so who will notice?” (well, you might if your program becomes popular and your server goes down in flames as the number of users grows). I even proposed a new paradigm that built classes bottom-up (by their behavior) instead of top-down (by their structure), which was promptly, since most people can’t see the point and prefer to work top-down (a study which I can no longer find concluded that despite top-down programming being encouraged and perceived as being more efficient, the best programmers tended to work bottom-up, which is true of the way I generally code as well, though I’ve become more amenable to top-down approaches as I’ve grown).
In the end, I just decided that I should move on from programming. So I decided to study algorithms in grad. school.
Well, fast forward through all of the application drama (the righteous indignation still hasn’t faded; it probably never will, since my entire life plan was essentially derailed and had to be rebuilt) and I am now at Temple studying biomedical data mining, and the last people I want to work with are the ones who study algorithms. I’ve never met such an unhappy yet demanding group of people in my life. Instead of focusing my efforts on programming, I am now focusing them on… well, everything, but especially research at the moment. I still code enough to keep my skills sharp, but only in support of my other activities. Coding for the sake of coding has been lost.
It’s something I miss from time to time, but it almost seems as if the world itself has moved past the need when I wasn’t looking – or perhaps I’m now content to describe the solution without expending the effort of implementation, since I know no one will bother with it anyway. Whatever the reason, I sometimes feel orphaned from the first thing I was really really good at.
I’m thinking about taking a job that primarily involves programming when I graduate. I started the doctorate with the notion that I was doing it more for the training than the degree, and I meant it, but I badly misjudged the research community and thus I now spend most of my time writing about concepts that anyone who cared could find in a textbook, just so I can present my new idea while meeting some sort of expected page limit (they call it “scope”) on my dissertation. I don’t know if I want to deal with this for the rest of my life. I love coming up with new ideas, but… there’s so much meaningless work that accompanies it! So much bureaucracy, so much conformity, even some hypocrisy… just to maintain a job that isn’t even particularly rewarding to begin with. I love research, but I can’t stand the way research is practiced, while I also love programming and can at least tolerate the way programming is practiced.
The idea of taking an easy job and doing my research independently looks more and more intriguing…