I love these types of questions. I was faced with a very similar issue when i started out. Out of high school I went into the Army where I spent several years in Ranger Battalion. Needless to say I never saw a computer of any kind...just lots of things that blew other things up! (that was fun).
When I got out of the military I had no idea what to do with myself so I started at ITT where I was introduced to computers by way of learning how to work Auto CAD. Classes were slow which led me to tinkering with the computer...I loved that more.
I dropped out and got a job with AT&T...then HP...the whole time learning by reading as many tech books as I could afford. Then I quit my job for 6 months so that I could build up several projects of my own so that I would have something to point back too (web sites and the like). Then I got a job with my first company doing web programming...doing what I love.
I think this is where you might be now.
Not having the college degree wasn't going to stop me. I started to consult...hopping from job to job every 6 months or so. I never took a job that I already new how to do 100%. I expected to have some on the job learning with each position. As I moved around I had a chance to learn many great people that were already well established in what they did...I listened to everything they had to offer and added that to my bucket of tools.
I eventually made my way up the job chain far enough that I started to interview with some BIG NAME companies. My lack of college degree was never an issue as I generally new more than the guy interviewing me...and I could talk very well about what I new. Of course there were times when this wasn't the case (if any of my past interviewers are reading this :P).
I hate to say that most of the big companies could no longer afford me. Small to medium size companies pay way better so as to be able to attract the talent! I interviewed at Northrup Gruman once. They wanted me real bad...thought I would be a great stepping stone for them. But when I told them my pay requirements I was literally told "we have PHDs that have worked here for more than 10 years that don't make anywhere near that!". I had to smile. I made more than a PHD!! Cool.
I used to think that that was cool any ways.
Then I went for an interview at Microsoft. A humbling experience. Pay was a big issue for them (everyone I interviewed with brought it up first). But for a name like them I think everyone is somewhat willing to sacrifice. I learned that day how important having the CS degree really was. Granted I really enjoyed working for the smaller companies...they moved faster, had less bureaucracy, shorter release cycles, and more opportunity to play with the new technologies. But what I didn't realize was that all the work I had done up to that point really didn't matter at the level that Microsoft is (and other similar companies).
Their interview process had pretty much nothing to do with any of the experience I had picked up in the previous 10 years. Every question they asked me would have been easy had I attended the most basic CS courses. Data structures and algorithms were the key focus there. On these topics I was largely squashed. Don't get me wrong...I crammed all I could to get ready for such questions...it just wasn't something I had a whole lot of experience with.
And it showed!
Now I have recently (last month) registered to attend Santa Monica College to get started back on my degree. I have finally reached a point where I value the degree. It is never to late to return to school - your 25...or my 33. I have always spent at least an hour or two learning something new each day...now it will be about non computer oriented things. But now it will apply to the degree that some (not all) companies seem to really value.
To answer you questions.
- Yes. Go back to school. No...never ever work at McDonalds. The market is not barren at all. Send me a request and I will send you a list of 80 recruiters across the US that will find you a job programming like you love. Guaranteed.
- In many cases - yes, you can test out of the various programming classes. Also, there are often prerequisites for a class...which at SMC doesn't require you to follow. Which means you can take a class that supersedes (the basics) another class so that you can get to what you love more quickly. You will still have to take english, history, and the other stuff which (at the moment) you may not enjoy that much.
- Pretty much every company I have ever interviewed with will take "the right candidate" over the degreed candidate. This is based on how well you do in your interview, how well your history lines up with their requirements, etc. The Googles and Microsofts of the world are the only ones that I would have benefited from having the degree...but it was not required!
Feel free to contact me if you want the recruiter list. www.andrewsiemer.com