Here's what I'd say to that: "I enjoy doing work that adds value. If you have something valuable for me to do for your company, pay me what it is worth. If not, I'll be happy to sit in your air-conditioned office writing free software that has value for me. And then you will be able to see how much I enjoy doing that."
But you probably shouldn't say that out loud. You're not in a very strong negotiating position, after all.
This illustrates another reason why unpaid internship is pernicious: It doesn't teach anyone how well you add value. Because your time is unmetered and unpaid, you have no incentive to spend it wisely. And your employer certainly has no incentive to track it -- at least not out loud. (Imagine the conversation: "Wow, last week you worked 10 hours for free and saved the company $100k. Have a muffin!") What, exactly, is either of you learning? I guess your employer is learning how much value you can be coerced to add, for free, without you noticing or complaining. And you're learning how to look and act like a model employee.
Onward. "You can decide how much you want to work?" Yeah, I guess. I could also "decide" to live in a cardboard box and save on expenses. If I have a family, I could "decide" to never see them because I have to work two jobs instead. If I've got elderly parents I could "decide" not to take care of them.
But, more likely, an unpaid internship requirement will tend to select for young people with no family and a lot of time to spend at work. How convenient. Especially since overtly screening your employees for these traits is against the law.
Do you see why I'm tempted to call this "unethical" yet?
Anyway, none of this is to suggest that you're doing the wrong thing. We have to live with the hands we're dealt. Congratulations for finding a way forward, and good luck with your jobs.
I guess I just don't see this practice as unethical because if I look at the whole spectrum of unethical behaviors, this seems very minor to me. Does that make it excusable? Probably not. But to me this is just about acquiring a skill which I previously did not have. It's not about recognition or compensation.
But even still, I fail to see what my employers are doing wrong. You will be compensated for the skills you bring to the company and what you produce. And if you're middle aged with a family to support you could get a paid job there if you had the skills. If not, you could apply for the unpaid internship.
But nothing bars you from getting hired, so that's why I don't view it as an injustice. At the end of the day, its a choice, and if you didn't like the terms, you are perfectly free to go somewhere else.
I went to graduate school. A Ph.D. program is like being an unpaid intern for six years.
(And, yet, in some ways it's better. There is some pay. And a Ph.D. is a regular old-fashioned apprenticeship program: The bad news is that you're a slave, but the good news is that your adviser has a fairly strong incentive to help you graduate. The commitment goes both ways.
And, of course, if you've got an apartment and a web connection you can teach yourself to be a professional programmer -- especially if you already have a CS degree -- but you can't say the same for semiconductor engineering.)
I've read one of Gladwell's other books, and I think he makes the same mistake you are making. A correlation does not necessarily imply "discrimination" or that the odds can't be overcome. For instance, women have higher GPAs than men, on average. That doesn't mean that using GPA as an indicator of performance discriminates against males. It might mean that males might need to work harder or do something a bit differently in order to get the same GPA.
In the end, my admittedly subjective take is that the biggest factor is individual motivation. We all have our setbacks and obstacles to overcome, but that's just the craps of life. I can verify, however, that it is indeed possible to go from moving out of your house at 16 with no money to graduating Phi Beta Kappa from Stanford (not me, but someone very close to me). Difficult, yes... but it shows that there is almost always a "fighting chance."
But that's a slightly different argument. Unpaid internships don't impose requirements that would keep you from getting paid elsewhere, so regardless of your economic situation, you can decide how much you want to work. My employer doesn't care if you work 30 hours or 2 hours...they just want to see how much you enjoy doing the work.
Any smart and hardworking individual wouldn't be at a disadvantage because they could find a way to make it work.
For the record I'm pretty poor myself. I have two jobs to pay my bills. But I don't see anyone who has significantly more money having more of an advantage than me.