Yesterday a friend called up and asked what I was doing and, among other things, I said " I am building a compiler for a language with features X, Y and Z". He replied "But why do that?".
Well I like building compilers, interpreters etc but there are good reasons why "mainstream" programmers should learn this stuff.
As Hal Abelson of MIT (co author of SICP ) said
"If you don't understand compilers, you can still write programs - you can even be a competent programmer- but you can't be a master"
Steve Yegge has an interesting, if more verbose, post at http://steve-yegge.blogspot.com/2007/06/rich-programmer-food.html
One minor side effect of knowing this stuff is that you are immune to language fads. The local fanboi crowd is jumping off the somewhat creaky Ruby bandwagon and onto the gleaming Clojure one. Watch out for a lot of half baked blather on the wonders of Lisp by people with not much of a clue. But it will be amusing and help pass the time.