So Will asked me to settle a debate for him on whether debate helps you be a better programmer. Here's my thoughts:
First of all, I want to point out that Will is sort of asking the wrong question. You don't want to be just a "programmer." Programmers are the one's who get paid 10 bucks (or rupees!) an hour to code websites and other boring crap. Assuming you are someone who is smart and likes interesting challenges with complex systems, you want to be a hacker (and I don't mean the bastardized definition of hacker that means "someone who does illegal things with a computer, I'm talking about a real hacker.)
So how does debate help you become a hacker? Well, there's a lot of different ways. First you've got the practical stuff: Debate generally tends to give you skills that make you good at school. Debaters tend to get better grades and do better on standardized tests, so they get into better colleges (and might even get free ride scholarships to those colleges, perhaps just because they debate). College doesn't in itself make you a hacker, but it's a really good place to learn the art.
But that's just scratching the surface. Debate, above all, teaches you 'how to learn.' It teaches you how to process information quickly (ever tried reading someone else's code?) It teaches you to research and find information quickly, and not just the "google it" kind of research. I mean the kind of research skills where you can look at an article and decide whether it's worth reading in about 10 seconds. There might be places to learn that sort of thing outside of debate, but I haven't found any yet.
Debate teaches you to communicate with people. It teaches you how to write. It teaches you how to persuade. And if you think that none of those things matter to be a hacker (especially a hacker with a job!) then you need to talk to some more hackers.
But most importantly, and I seriously cannot stress this enough, Debate and Programming, at their very core, require the exact same skill: the ability to view complex systems at many levels of abstraction simultaneously. You've heard of "seeing the forest for the trees." Well being a hacker means seeing the forest, the trees, the leaves on the trees, the caterpillars on the leaves, and being able to perform the mental gymnastics necessary to understand how all these different levels interact. Succeeding in debate is all about this. Succeeding at programming is all about this. Seriously.