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:
- 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.
- 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?