For a while now, I’ve been convinced that it is becoming increasingly important for regular software developers to really know Computer Science. Yes, the internals that you don’t really care about ’cause all you care about is “business value”. Yes, I’m talking about finite automata, algorithms, operating systems, compiler theory, artificial intelligence, functional programming… Without this knowledge and the deep understanding of where to apply it, it is very hard to progress to beyond journeyman. I’ve also realized that what many people claim is master-level of competence, is really not quite the truth. If someone who is supposed to be a master programmer doesn’t understand computer science internals, then he or she is really not all that masterful.
Those who think that these are merely details left to the systems guys are just plain wrong. While you may not write the next RSA, the enlightenment that all this knowledge gives you, when coupled with actually applying this theory to “application development” will take you to the next level.