Got a bachelors degree in CS from a university with a comprehensive co-op program. It was 5 years with three 6-month co-op opportunities. First worked in the law school's IT dept, then as a PHP dev for a local newspaper portal, and finally a defense contractor. Learned I wanted to distance myself from IT, and never to work for a defense contractor (they work everyone to the bone trying to bid as low as possible on contracts. The place I worked at, at least, was just depressing). The co-ops set me up with a nice resume after graduating but in the process got in a load of debt which would be REALLY nice not to have.

First real job was working for a company called Unisys, working on an antiquated mainframe operating system. The people we're really cool and supportive though there weren't too many young people around. They gave me many opportunities to try new things and sent me to some conferences. Problem was they paid horribly, as I found out, especially for all the proprietary unportable technology that I had to learn. I was writing applications via a homegrown text editor, in a homegrown terminal application, using homegrown compilers. All in ALGOL and various proprietary flavors of it. Thankfully they let me work on some ideas I had for applications to modernize things (writing in PHP and C#) but ultimately the low pay and lack of any bright future for the technology started getting to me (I was there for just under 3 years). Not to mention a 1 hour train commute each way (from downtown Philadelphia into the suburbs).

I started answering calls from recruiters and researching companies downtown. A recruiter told me about this place called OneTwoSee which does sport stat visualization/game trackers etc entirely using modern web technologies and node on the backend. The place was just a block away from my apartment. I shot out that I was looking for about $20k more than I was making at Unisys and the recruiter thought it was certainly reasonable. I wasn't a javascript expert at all, but I had been working an HTML5 app for fun to learn. I almost got turned away by the company after they saw a lack of modern web stuff on my resume. I e-mailed them back explaining what I had been up to in my spare time and they decided to give me a shot for an interview after all. Had two interviews, one was an intro and the other was more technical testing core javascript skills. Lo and behold I got the gig and have been working here for a year and a half. Great people (small team), great environment, great technology, great commute, great pay, great incentives (bonuses), great opportunity to grow. Couldn't ask for more.

If I hadn't been adamant about my skills and my personal project in the very beginning I would never have even gotten an interview. So don't be afraid to speak up! Find something you're really passionate about and develop it in your spare time. Don't be afraid to show it off at an interview.

Another tip: When talking to a recruiter, don't feel you need to expose your current salary to them. Just tell them how much you are looking for. I was pressured very much by the recruiter to expose that information. I did not want to set any baseline for them to consider other than what I thought I was worth. The pressure was high, to the point where she threatened I would not get the job unless I told her. Having a talk with my interviewer directly about it I was reassured that this would not be a problem and that they didn't like working with recruiters for reasons like this.

With a little effort, persistence and a lot of passion, you can do anything.