Rod Hilton's rants about software development, technology, and sometimes Star Wars

Going Back to School (Again)

Within the broad spectrum of human feeling, there lies an emotion very much unlike its biochemical brethren: the sense of regret. What separates regret from other emotions is not its potency, but its resilience. Joy, misery, love, and even grief can dull or dissipate given enough time, but regret endures, gnawing at the back of one’s mind, reminding each of us of what could have been, but is not. Regret never wanes and it never dissolves; regret festers.

Like so many others, I have accumulated a number of regrets over my life. Though I’ve learned to live with many of these, one regret in particular has lingered in my mind for the past six years: I regret the limitations I placed on myself as an undergraduate at the University of Rochester.

Since I was a child, I’ve known that what I wanted to do with my life was write computer programs. From the moment of my first experience writing code on the glowing box attached to a 286 in my father’s study, I’ve been driven by a vivid, clear goal of writing software professionally. Since the age of 6, whenever someone asked me what I wanted to be when I grew up, I gave the same answer. When I told my high school guidance counselor, he told me that I needed to go to school and major in Computer Science, so that’s what I did.

Clearly, I was a popular guy in college.

What I found as early as my first year at school was that my selected major included a variety of subjects that I was not expecting. I was exposed to material that seemed wholly unrelated to writing programs professionally. Algorithmic complexity? Turing machines? Chomsky Normal Form? It all seemed too theoretical, too far removed from the actual process of programming. I needed to prepare myself for my career, and I felt I had no time for theory. I decided to spend the next four years avoiding the theoretical material as much as possible. Instead, I focused on my systems classes, which I found both engrossing and practical. I even recall how proud I was for passing a particular theory class without more than a cursory glance at the textbook.

Once I graduated, it wasn’t long before I got a job writing software at a data mining company in Colorado, achieving my goal. I thought I was living my dream, but after a conversation with co-workers about NP-Completeness in which I was accused of “geeking out,” I realized I had a much stronger interest in theoretical material than I had originally thought. I went home and found the very textbook I had once felt so proud to leave virtually untouched. I started really reading it and, to my amazement, I found it absolutely fascinating. I began to realize how interesting I found the subjects I had tried so hard to eschew in school.

In hindsight, I have always had a passion for theory, but I never let myself explore it because I worried it would derail me from my career path. In retrospect, I missed four years of opportunity as I avoided a subject that, deep down, I found absolutely enthralling. I realize now that some of my fondest memories from working as a Teaching Assistant were the days I led workshops on graph algorithms, run-time analysis, and sorting. I am constantly reading papers on algorithms and complexity, perusing the Theoretical Computer Science section on StackExchange, and experimenting with genetic algorithms libraries. One day, I discovered a list of “the most interesting papers in Theoretical Computer Science” and I found myself reading them until four in the morning. There’s an entire world of fascinating research within Computer Science, but I’m a spectator in this world, not a contributor. Because of this, every paper I read is tainted with my regret.

But regret, for all its negativity, does have a particularly positive property. Under certain conditions, the magnitude of the regret can be transformed into something just as powerful: motivation. When one hears within the same nagging sense of regret an echo of “it’s not too late,” regret can become one of the most powerful of positive human emotions. Regret, re-purposed, is a far more powerful motivator than any mere goal, because it pushes us rather than pulls us.

This regret has now completed its transformation into motivation. I am going back to school to pursue a PhD in Computer Science with a specialization in theory and algorithms. I am not doing this because I think it will help me in my career, in fact I may not even be willing to list the PhD on my professional resume, as a number of hiring managers I have talked to have told me that Computer Science PhD’s resumes go straight into the trash. No, I am not going back to grad school to accomplish any particular goal, but because I find theory fascinating and I want to enrich the field through my own research. I want to explore my interests in computational complexity, evolutionary computation, data structures, cryptography, graph theory, probabilistic algorithms, and automata theory, and coalesce these interests with my passion for software engineering. The fact that I don’t know exactly where this exploration will take me doesn’t deter me in the slightest, it invigorates me.

I do not intend to become an academic. I still love professional software engineering, and I won’t be taking any TA or RA positions. I plan to work a full-time job as a professional programmer while pursuing my PhD. It is absolutely possible that I will not enjoy these subjects as I think I will, so at the end of every semester I will be asking myself if I still want to do be doing this. If the answer is ever “no,” I’ll drop-out guilt-free, but my regret has been living inside me for too long for me to not at the very least give a PhD program an honest shot.

I will be starting at the University of Colorado in Denver this Fall.

comments powered by Disqus