Allen Holub is ranting about using XML as a programming language:
Knowing how to build a compiler is certainly one of the skills on this need-to-know list. Compilers are fundamental to what we do every day as a programmer. Knowing how the compiler works will let you make intelligent decisions about program structure, decisions that have real impact on the quality of our programs. More to the point, most programs have to parse input (either from a human being or from a machine) and make sense of it. To do that, you have to build a small compiler. Corrupting XML for this purpose, simply because you happen to have an XML parser lying around, is inappropriate at best.
Basically, you’re selfishly making your life easier at an enormous cost to everyone else. For every hour you save, you’re subjecting every one of your users to many hours of needless grappling with overly complex, hard-to-learn, hard-to-maintain, impossible-to-read, XML-based garbage. This is no way to make friends and influence people.
There are lots of good examples where XML is the perfect tool, and many, many examples where XML is just an easy way to avoid writing a parser. And there are many XML languages that scream poorly-designed-vocabulary-design-to-simplify-implementations.
Of course, parsing and compiling aren't the only skills a programmer needs to know. At $WORK, we're looking at database validation -- auditing a database to prove that all referenced records are present, and all records are referenced properly. (This is above and beyond the guarantees that referential integrity can enforce.) The process sounds complex, up until you realize that it's just a mark-sweep garbage collector, more or less.
Computer Science degrees may seem like a bunch of BS at the time, but they're actually quite necessary. You never know when you're going to walk into a problem that has a textbook solution.