In his new book, Program or Be Programmed, the media theorist Douglas Rushkoff argues we should. Otherwise the machines will exploit us.
[youtube]http://www.youtube.com/watch?v=kgicuytCkoY
Rushkoff argues that people need to learn computer programming because, unless they do, they won't be able to recognize when they're being exploited by technology.
I haven't read Rushkoff's book, but I will say that this video, while certainly provocative, doesn't establish his case with much rigor. He's certainly right that there are ways we risk being manipulated by technology. An e-mail virus or phishing scam can fool someone who isn't hip to how they work. But you don't need to be able to write a phishing scam to be pretty good at avoiding them. And, to address Rushkoff's example, you don't need to understand the nuts and bolts of programming to understand that Facebook isn't a strictly charitable enterprise, and is looking to turn its data and activity into money. Furthermore, understanding Java or C++ inside and out wouldn't really help you understand how Facebook uses Hadoop to manage its databases or what kind of business considerations the company faces.
That said, I think he's trying too hard. Knowing some programming makes you more marketable as an employee, even if you're not an engineer, and it relates to all sorts of interesting fields, including math, philosophy, logic (and thereby law), and artificial intelligence. Those are reasons enough to learn it.
Now I'll pick up a copy of the actual book, where I assume he explains his ideas in more detail.