Lots of opinions out there!
This is not opinion, just my personal experience. YMMV.
I do not have a college degree – I learned programming in a technical school (“Can a phone call change your life?”), nearly forty years ago.
I was laid off in 2005, from a job in a major US corporation. The next nine + years (less than half of which I actually worked) taught me a few things.
Retraining: I am a C++ programmer, with a little experience with C#, all on Windows, plus a little database experience… The jobs I was finding were Java, UNIX/Linux, ASP. My wife believed that all I need to do was take a course (or two!) in one or more of the technologies I lacked. I had to explain to her that the jobs I was seeing wanted experience, not just knowledge.
Interim jobs: I actually tried this. We live just a few blocks from a Kroger, so I applied there. I never heard back, probably because when I listed my previous employers, they looked at my qualifications and thought, “This guy is not going to stop looking for computer work, just because he has this job.” Same thing for Office Max (or was it Office Depot?).
Unicorn Job Postings: Not all job postings are listed to find new employees. If the job description is a little too precise, the odds are that they already have a candidate in mind, but that candidate is an alien, already working for them (somehow), but the company has to show a “good faith effort” to find an American citizen for the position.
I found a job on one of the boards and sent them my resume. They seemed very receptive to me and set up a technical phone interview to determine if I was actually qualified. The phone interview went very well, so well, in fact, they wanted me to fly out to their city (at my own expense(!) but they would reimburse me) for a face-to-face meeting.
When I got there, the softball questions that I had easily handled during the phone interview were gone. They started asking about my experience with technologies that had never been discussed prior to that meeting. After that dismal interview, one of the interviewers, who had been the most technical person in the face-to-face, showed me to a computer that was set up for a test. Each of the things they wanted me to do were things that I had previously stated (during the phone interview) that I had no direct knowledge of. For instance, I had mentioned that I had written some embedded SQL code in a C++ program, but had no experience with actually creating the database I was querying; they wanted me to set up a new database, not write queries against that database.
After I left the interview, I realized that the guy that gave me test, the guy that was most technical in the face-to-face, was from India. Was the job description written to draw me in, so they could reject me and hire an H1B candidate? I don’t know, but I am highly suspicious, since I often see jobs posted that I had previously applied for but didn’t get, and I never saw another posting for this position.
Has my lack of a degree hurt my career? Possibly, early on, but probably not so much later, after I had many years experience. What has really hurt the latter part of my career was not educating myself with respect to technologies I didn’t already have in my skill set, and finding ways to give myself experience in them.
But which way to go? Back in the '90s, I tried to learn as much as I could about OS/2, since I saw that as the eventual successor to MS/DOS and Windows. Ouch! I could have been learning VB.Net, and ASP, and COM, and Linux, etc., etc., etc.
So what should I learn now? The hot things now are mobile and the Internet, especially wherever the two intersect. It’s going to be very lucrative (at least until the next thing comes), and anyone with experience should be able to work steadily. But Droid or iOS? Client-side or server-side? PHP or Ruby on Rails?
(The above are rhetorical questions. At this point in my career, trying to switch over from desktop to browser or smart phone would take longer than I have years left in me to work.)