While most of my time is spent focusing on the MicroISV community, I am also the Technical Evangelist for compiler writers here at Microsoft.
Steve Yegge has just written a long blog post about developing languages and I couldn't agree more with one of his observations:
Steve writes, "For my part, I want to encourage people to make their own languages, because doing it makes you a world-class programmer. Seriously. Not just a better programmer, but a best programmer. I've said it before, and I'm sticking with it: having a deep understanding of compilers is what separates the wheat from the chaff. I say that without having the slightest frigging clue what "chaff" is, but let's assume it's some sort of inferior wheat substitute, possibly made from tofu."
Now I'll admit that in today's world of development, I'm all for high powered, automated tooling, for example software factories, but I never fail to be amazed at how many developers make bad decisions because they simply don't understand what's going on under the covers. This doesn't mean you have to do it for a living but understanding how things work can enable you to make better decisions faster and that's a competitive edge in the long run.
I don't have a clue what Steve's NBL is but I know that we still have a long way to go as an industry to make developers more productive and I can't wait to see what's next.