I've often enjoyed reading the works of Paul Graham and Joel Spolsky, but there's always been something that bothered me about them, especially Paul Graham. Paul Graham writes his arguments like a mathematical proof. Each step in the process seems reasonable, and by the time you reach the end, you don't feel like there's any room to disagree. However, I just don't think life is so black and white.
My buddy Alex Jacobson finally explained it to me. They are good "story tellers". Apparently, this is even part of the culture in New York, where Joel is from. Hence, it's enjoyable to listen to their arguments. However, there's a problem with good story tellers. Their tales are often so enjoyable that it's easy to be lulled into a false sense of security and overlook the exaggerations and mis-truths. Like listening to a good talk-show host, it's easy to forget to be objective.
For instance, it's somewhat frustrating to listen to Paul Graham's constant preaching about Lisp in comparison to any other programming language. Now, I like Lisp. I think it's fantastic. However, I think Paul Graham's arguments in favor of Lisp can occasionally be closed minded. For instance, in
Beating the Averages, he portrays languages as lying along a single continuum of sophistication:
As long as our hypothetical Blub programmer is looking down the power continuum, he knows he's looking down. Languages less powerful than Blub are obviously less powerful, because they're missing some feature he's used to.
That's a seductive argument. It's so seductive, that it's easy to overlook the assumption that a continuum even makes sense. There are tons of features that Lisp doesn't have that are useful for writing applications. In fact, I like to think there's a master set of language features and each programming language simply picks some subset of that master set. Lisp has macros. Cool. However, Haskell has a really neat type system and lazy evaluation. Where does Haskell lie on the continuum in comparison to Lisp? I will remind you that Haskell too has a macro system (template Haskell).
Liskell is a programming language that uses Lisp syntax on top of Haskell in order to enjoy all the benefits of both. Does that mean Liskell is the highest on the power continuum? Maybe, but it's far more likely that there simply is no continuum.
Anyway, I'm not advocating that we stop reading Paul Graham, Joel Spolsky, etc. I'm just advocating that we maintain the use of our own brains. Not everything they say is gospel.
Happy Hacking!