It's a really interesting thing to ponder. Chess teaches you strategy, planning, calculation, visualization, and gives you the foundation to understand 101 metaphors used throughout life. It's good stuff.
On the other hand, I think everybody should have at least a rudimentary understanding of programming logic. If you don't teach programming per se, you can at least use something like LEGO Mindstorms to teach concepts like conditional branching and program flow. Everybody interacts with so much software in its myriad forms on a daily basis that it's nice to imagine a world where the users have at least a minimal clue what developers go through to make software happen.
On the other other hand, I've had a lot better success teaching kids chess than teaching kids programming. Most kids couldn't care less how computers do their thing, and they find the subject boring.
If I could pick only one, I'd go with chess. Chess is chess is chess, but "programming" is a giant can of worms. I don't know where I'd start if I were trying to teach someone programming in this day and age. There are so many different languages and toolkits on so many different platforms it's a pretty daunting task just figuring out where to draw square one.
Does anybody have any views on the educational value of chess? Would you recommend teaching children chess or programming or both? If you are championing chess can you clarify what the proven educational value is?