Alumnus Reflects on Intro to Comp Sci

I received an interesting email from Phil Miesle, a Gustie Physics major from class of 1995 who took the introductory computer science course back in spring of 1993. In the meantime he’s found himself in the software industry, working for Oracle as a “Principle Performance Architect,” and took some time to reflect upon the computer science course at Gustavus now that he has some more perspective on it. With his permission, I reproduce here what he had to say:

I recently had occasion to review my Computer Science I lab notes and was astounded by a revelation: I actually learned a lot more in this class than I realized at the time…and a lot more than was in the syllabus.

I graduated in 1995 with a major in Physics (and minor in History). My plan was (and still is) to teach physics at a high school level, though I’d now like to add computers to that mix! Never did I think that I’d still be working as a software engineer 11 years after graduation, something I did initially to pay off my student loans…sadly teaching doesn’t pay very well!

When I graduated from Gustavus I took a job with Andersen Consulting (now Accenture) and started my professional life as an Oracle DBA. I’ve since worked exclusively as a software engineer and am working now for Oracle as a Principle Performance Architect. I’m not really a software developer; though I can write code my job has really been about hunting down bad code and working with developers to fix that code. Now, as an architect, my job involves preventing that bad code from being written in the first place.

While I completed a decent amount of math coursework as part of the Physics major, I took but one Computer Science course in the spring of my sophomore year. As I’d been programming computers since I was 10 (BASIC on a Commodore 64…1 MHz CPU with 64 kB of memory), including doing 8088 assembler programming when I was 12 (on an IBM PCjr…4.77 MHz with 512 kB of memory), I went into Comp Sci I with something of a chip on my shoulder.

I’ve no idea how the course is structured now, but at the time general concepts and algorithms were taught using MIT Scheme as the programming language. I remember thinking at the time that using Scheme was a waste of time, since Pascal and C were more commonly used languages…what was the point of using some ‘academic’ language when ‘real’ languages could be used to teach the same concepts. I’m sure the same sort of discord reverberates through the halls of Olin today.

Back to my 13 year-old lab notes.

I can’t write a Scheme program to save my life, but as it turns out that wasn’t really the point of the class. The following four things weren’t on the syllabus and were never stated as a course objective. Yet, upon reviewing my notes, these ideas were at a very minimum first planted into my brain in Comp Sci I:

  1. Reducing problems to their basic elements (e.g. Scheme) and getting rid of all the distractions (e.g. C, Pascal) is very helpful in teaching basic concepts…and is very useful as a troubleshooting technique.
  2. Understanding the “how” (e.g. how to write a the best algorithm) and not understanding the “why” (e.g. what makes one algorithm better than another…not the fact that it is better) is utterly worthless.
  3. We’re not half as brilliant as we think we are; there’s probably always someone with an even more clever approach…if we fail to seek that person out and learn from them (as opposed to parroting them), we’re not even 10% as brilliant as we think we are.
  4. Critique must always be fair, but that does not always mean ‘nice’. A spade is, after all, a spade…accepting bad code as ‘okay’ will only result in code that will have to be fixed later (and at much greater expense).

While I resented it at the time, having that chip knocked off my shoulder was an incredibly important part of my formative experience. In my defence, I at least recognized that I should take the course and was open to learning.

At the conclusion of the course, I didn’t think I had learned all that much. Turns out I was wrong.

The ‘good’ developers that I’ve run across have understood the ‘why’, the bad ones have only understood ‘how’ (and even then might be wrong about ‘how’). While I am decidedly not a software developer, Comp Sci I set me on the path to understanding ‘why’.

Because computer technology is always changing, keeping up with the ‘why’ is like drinking out of a fire hydrant. Learning how to learn ‘why’ is a skill you’ll need later on…even if you don’t end up anywhere near the field of computer science.

So, a big ‘thank you’ for setting me on the right path…and if there are any students out there who are jumping up and down saying “we should be doing this in Java (or PHP or pick the flavour-du-jour)” I say to you: calm down, the language isn’t important. Your favourite language will be out of favour in ten years or less anyhow!

Learn the concepts, learn what makes the damn thing tick. Learn the “why”.

:-Phil Miesle ’95


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *