I used to be a fresh graduate, with no real job experience and who only thought he knows something. In my country many graduates are in this position. Fortunately for me, programming is one of, if not the only one industry, where unemployment is no threat. Unless you’re over 40, that is.
A lot of my friends are working for nothing or next-to-nothing, only to have anything to show off in their resumes. They are not programmers though. But I've also been there. And IMHO that is okay only if it’s compulsory traineeship, that you have to do to finish your degree. Or I would accept being paid less to be able to learn some new technology, since in starting months I wouldn't be much help. But there needs to be a boundary. One needs to support himself.
I agree with lot of points here. Working for free is like a slap in a face. And usually, if someone gets something for free, doesn't appreciate that. But there are situations, where you can be so desperate that you will agree to anything just to get a job.