One thing that I've learned about the software industry is this: in order to get experience, you need experience.
From a business perspective, this makes sense. You want the employees working for you to know what they're doing, before they start working for you. Come on, paying people to learn? Blasphemy. They have to spend enough time learning the new software.
Unfortunately it seems like a lot of the time the people in charge of hiring don't know what they're talking about. Even if it's programmers in charge of hiring. Imagine some senior programmer interviewing somebody and they go "psh, this guy doesn't know about advanced function X in the standard library, he sucks." Of course, it takes like 2 minutes to learn about function X, but that detail might be ignored.
It's even worse when you're dealing with business-people. Things like "we require 5 years of Ruby on Rails experience" or "10 years experience maintaining Ubuntu systems."
This was a problem when I first started looking for a job. I did have experience, although nothing professional. Which meant that it didn't count as experience. I was amazed at how often I would say "I just graduated from university" and people would go "oh, sorry we want somebody with more experience." I mentioned on both my cover letter and on my resume that I had just graduated. You'd think they'd notice that kind of detail.
Now I'm looking for something else. I applied for a Rails job the other day, and was told I didn't have enough experience. You'd think after making this site1 I'd have enough experience making pretty much 99% of the sites out there, but apparently not.
It's even worse if I want to move out of any web job. I've got loads of C++ experience from academic and personal projects, yet if I apply to a C++ job they want to see who I've worked for. That's annoying. It seems nobody wants to hire university graduates who have no professional experience. But my question is: how are we supposed to get professional experience if nobody will hire us because we have no professional experience?
Fortunately one way you can judge the value of a job to you is by what the interviewers look at when they talk to you. For me, one great aspect of a job is that you're always learning. If they test you on things that are not easily learned like problem solving ability2, then you know that they are people who know what programming is all about and that you will probably be learning, and getting challenged often. But if they ask about API-specific tricks that only a grizzled veteran would know, chances are they just want you to come in, do your day job ASAP, and get the heck out of there. Learning is to be done on your own time.
Of course, don't think that this is the only way to judge the value of a job, but keep it in mind.
1 Ok, it wasn't just me working on this site, there were a couple others too. I did a lot of the work on the framework (more details) and the front-end logic (as opposed to the front-end display, aka the HTML/CSS bits...*shudder*).
2 Stuff that is good to ask here are language-agnostic things like Fizzbuzz, or maybe a trick question like "how would you make an AI always win at Go?" (I'm just kidding with that one). Basically something that tests their basic coding skills. However, I am surprised at how many people can't write code that swaps the value of a variable.