So I'm taking a little break from what I’m doing (tell you shortly) to write this.  I’m hoping to get some feedback.

I have decided tonight to beef up my compsci background.  I am not a compsci grad.  I am not a grad at all actually, but when I was in school I majored in ancient history.  Minor in political science (yeah…so not a science).  At the time, I had no plans or even desire to go into technology.  This was 1995.  In 1997 I got my first tech job as a temp working help desk at a sizeable law firm in Boston.  We had just moved, and I needed something to provide for the wife and kid while I tried to hook up a marketing job.  A few months later, I was managing the helpdesk and training new hires on systems.  Shortly thereafter, managing the Novell, Windows, and Unix boxen.  Then writing web pages.  Then VBA scripts, then VB programs…then I went full on into programming and 8 years later I’m architecting and building corporate software infrastructures and leading a development team.

So I’m doing okay.  And I’m a decent programmer.  My actual strength lies in planning and envisioning a system, solving the “business problem” and applying the proper tech.  That’s a huge skill that every modern developer in the corporate dev shop needs to survive.  Not all of us are sitting in the dungeon writing compilers or scientific software.  The bulk of us…corporate dev staff…are writing forward-facing, business-critical, data-driven apps.

These apps are always the same.  It doesn’t matter what business you are in.  I have done work in legal, government, biotech, healthcare, retail, it’s all the same.  Data in.  Data out.  Present reports.  Enforce rules.  All the same.

So why the kick on the compsci?  Well, I feel like I’m missing something.  At this point, I’ve basically committed to a software career, at least for the near term.  I don’t feel like I’m the best I can be.  I read a lot of blogs and I’ll be honest, I get a little inferiority complex.  Not a lot, because I know that there are a metric assload of developers out there that just put me to shame.  But I want to be better.  I’m pretty up to speed on most stuff that I need to do my job.  I got the OOP, I’m working on the patterns, I know databases, I’m well-rounded in networks and servers and platforms….but I’m weak in a lot of areas.  Algorithms is a big one.  Theory.  I don’t know exactly why I do what I do the way I do it all the time.  Data structures.  Memory usage and performance.  More, more, more.  I feel like, had I a compsci background, I would be a little more on top of the game in some of these areas.  Plus, my math could use some touching up.  I used to have math, but now I couldn’t even tell you the most basic stuff (I may still remember how to take a derivative…but anything beyond that…(and don’t scoff…I once had to calculus it up for an app I did that required finding the distance of an arc on a sphere…and I struggled implementing it at first…simple trig I’ve forgotten)).

So, I jumped over to MIT OpenCourseWare (which is just cool by the way) and decided to start taking up a couple of classes, namely 6.046J / 18.410J Introduction to Algorithms, Fall 2001 and 6.001 Structure and Interpretation of Computer Programs, Fall 2002 for the time being, and I’ll be moving on to others later.  The approach I’m taking is to use the syllabi and readings as a guide, do the projects, read the lecture notes, and just sort of pace myself until I feel comfortable with the course requirements.  I’ll be blogging the interesting parts of my new endeavour.  Including the fact that the MIT compsci courses seem hell-bent on using Scheme (LISP variant) and so once I end this post, back to learning the basics of that.

So…the question at hand is this:  How has having a compsci background helped you, or not having one hurt you, or do you just not feel it’s important (a camp I was in for quite some time).


Tags: