06 09 10

First Principles

In the interests of formalizing my ad-hoc Computer Science education, I starting from the beginning at MIT’s online Computer Science coursework.  The course I am following is a first principles foundation course — Introduction to Computer Programming.  So far, I’ve gotten a couple notable pieces of advice:

  1. There are 3 kinds of problems: syntax, static semantics, and full semantics.  Syntax and static semantic problems can be solved by computers.  Full semantic problems must be solved via STYLE.
  2. Since programmers and users are people, and people are dumb, I must employ defensive programming to ensure that I don’t make a mistake which cascades in some strange manner.

Following such advice results in a snobbish developer who ignores team goals in favor of individual pedantic success.  I can see how my ignorance of this advice has led to a career as a responsive, team focused developer.

I’m wondering which first principles I still carry today from my undergraduate arts education.  Are they making me more valuable, or holding me back?