A couple months ago, I started taking classes at Chabot College. One reason is to get the degree that shows what I’m talking about. But there’s another reason, even more fundamental: filling in the gaps in my own knowledge.
Case in point, I’ve been thinking long and hard about building a JavaScript-based DOM. The problem I’m facing is that to do everything I want – shadow content, undo/redo transactions, etc. – I need a specialized data structure. Specifically, I need a data structure much like a multi-dimensional array or hashtable.
(The first dimension would be a set of object keys – the DOM nodes. Another dimension represents undo history, like a timeline. A third dimension could be the shadow content. I could define other dimensions might exist for building an individual transaction until it is completed, or otherwise creating a “workspace” for experimenting.)
About 24 hours ago, I had an idea, related to my multi-part keys for hashtables implementation. Typically, in designing a data structure class, I think about how to give each piece of data an address first, then I implement ways to store data by that address. The idea is to flip that approach around: to define an API that lets the user place an object with an address, and then add new dimensions to the address space as the user needs them.
If I’m not making any sense, that’s fine. In fact, that’s why I’m writing this blog entry. I’m having lots of trouble articulating last night’s idea formally. I can see it crystal-clear, and I can write JavaScript to implement it, but I don’t have the language to describe it yet in English. I spoke briefly with my Calculus instructor tonight, to figure out what area of mathematics my idea might fall into, and he suggested linear algebra (that my idea relates to vectors in some way). Which I can’t take a class in until I complete Math 1 and Math 2 (both are Calculus classes; I’m enrolled in Math 1). The name of the linear algebra class, at Chabot, is Math 6.
This underlines why I’m going to college after at least six years as a professional software developer. It’s a gap in my knowledge.
Some people, like me, enter this field with a talent built upon years and years of tinkering, of experimenting and of thinking. The software industry can really take a person like that quite a ways. Others enter the industry having taken computer programming courses – and that’s really hit or miss for an inexperienced person. (No offense intended to the software engineers who started through college!)
I wonder if taking up college classes after you’ve been in the industry a while is actually the best approach of all: continuing the education, helping clarify what you’re working on and expanding the imagination with new possibilities.
I wonder how many current software engineers have decided to go back to college after being in the field a while, to push themselves and their capabilities even further.