So, my retention of basic Computer Science principles is crap.
I can't even explain how I feel about it properly. I am able to understand the principles, and given enough time maybe I could figure out how to do a Quick Sort again, or remind myself what Big O is all about, but the simple truth of it is that today, I can't.
It's not that they're beyond me. In part it's because I went through a period of willful ignorance. In part it's because I haven't had anyone to talk about them with, or any reason to talk about them in any meaningful way. In part it's because certain principles and basics were never explicitly taught to me.
But primarily it's because I've never deeply internalized them.
I studied to pass tests, not to learn, and that way lies ignorance. When I write code I'm rarely considering the problems I'm addressing and what existing knowledge would inform a solid solution.
It's not that I think my code is bad, and it's not that I'm not taking advantage of existing knowledge so much as it is that I'm not doing so knowingly or intentionally. I've been writing particular types of applications for so long that I've seen many common problems and am solving them using my bag of tricks but without a conscious understanding of what other people would call them.
The best method I have of internalizing something is by going through the process of explaining it to other people. Conveniently, I've got this website theoretically related to the craft of software development that I've let lie fallow effectively since getting it online.
1 + 1 = 2, as it were.
Computer Science is a big field with many major sub-disciplines to explore. Wikipedia will be my primary starting place, but I also hope to build a collection of resources such as MIT OpenCourseware and others that I have yet to find.
I figure I'm going to start by dipping my toes into Theory of Computation, but I'm also quite interested in algorithms and, somewhat surprisingly to me, compilers. This is almost certainly the result of a recent archive romp through Steve Yegge's blog.
I don't really have a particular path charted and don't really know what I'm getting myself into, but the way I figure it anything I learn, or if I am being generous refresh my memory about, is good stuff.