Ideas in programming

I am fond of learning new ideas. It's what drove me to endure hours of prerequisites, tedious standardized tests, and a detestable application process to attend graduate school. Ideas sparked my most meaningful conversations while there; the best ones were like hidden treasures we were all trying to find, but could only catch glimpses of. A good idea is elusive yet discoverable, and this is what draws many to a lifetime of scholarship.

Often I enjoyed my graduate studies; focusing exclusively on learning definitely suits my personality. But as I progressed through the program, I began feeling increasingly powerless. The constraints of the academic profession were becoming clear to me: to really share my ideas, I'd have to jump through many hoops; to really affect a student, I'd need to land a decent placement. I didn't mind working hard, but the more I learned about the profession, the less meritocratic it seemed. And I wasn't willing to wait around and let arbitrary constraints hinder me from doing my best work.

But when I left school and started working, I missed the learning. Oh, it's not like I worked at a brainless job. I was learning all sorts of things, very practical things, about how to find specific datasets, and how to use various pieces of software. But I missed sitting down with a book and wrapping my mind around someone else's thoughts. Few moments in life are as rewarding as those in which, after hours of struggle, one finally grasps a new idea - the moment it clicks. I longed for this journey again, and somewhat surprisingly found it in programming.

Yet, I am a practitioner. I work in applied programming, as it were, and my tasks are of a very different kind than those of my academic tenancy. So how is it that I get to spend so much time learning?

It turns out that to progress as a real-world programmer, one must learn many new ideas, and learn them often. The most interesting, successful and creative programmers I've encountered, in person and online, go beyond their on-the-job training and spend time studying the latest ideas and theories in web programming. I discovered early on that this type of learning was not only possible in the world of web development, but it was actually encouraged and rewarded. The difference with my previous job as a consultant couldn't be sharper. There was little I could do on my own to become a better analyst; I simply had to acquire more years of experience. I couldn't pour myself into the theories behind the principles of my job, and arrive at work more productive. But I do this all the time as a programmer.

I really think this is why I caught the programming bug, and also why it stuck. Computer science is a young field full of ideas, just waiting for people to work through and understand them, to reject and modify them, and ultimately to refine and improve them. It's a fascinating discipline whose craftsmen get to experience both the satisfaction of creating something tangible, as well as the sustained intellectual fulfillment that comes from relentlessly pursuing knowledge.

August 25, 2013

Written by

Sam Selikoff