I'm a talented 32 year old with 24 years programming experience, but only 16 years of realistic things to put on my resume :] So, I was in a similar position back in the days of dinosaurs where we had to learn our coding primarily from dead trees...

I'd like to offer you a few pieces of advice that would have saved my ass if I'd listened to the numerous people telling me them at your age :

1) Don't rush, google's not going anywhere, take a long term view of your career and don't get too identified with your job. If you're not a founder, this isn't your magnum opus - you're there to help someone else realize their dream and learn in the process. Every month you stay there is more money, more experience, more credibility. If you are feeling trapped, try to find something you can learn from what you are doing and recognize that you're experiencing something very common. When we first start on a new software project, we are learning at a very high rate and once we get into the daily grind, that thrill goes away. If you push through it, you may find a kind of beautiful zen calm that is just one of the best feelings in the world and you can find it almost anywhere. that being said...

2) There's nothing wrong with looking for a new job while you have a job, provided you make it clear why you are looking and that you will need time to organize your current work if you choose to change. Don't tell your company about it - it feels weird at first, but it's your private business. Staying professional and detached while doing creative work is one of the many secondary skills you will need.

3) It my be different for your generation, but in my experience talented programmers that are passionate about the craft are rare and valuable and are often the mythical high productivity multiple engineer from the mythical man month. The question is, how can you prove your skills to someone else? It's important to note I said skills, not (so much) potential - it's about what you can build. The real answer imho is you can show code, you can show demos and you can get vouched for by other people in the high productivity club. I've found a great sense of community with other early childhood programmers, which is why I took the time out of an overscheduled work day to try and give you an advice.

4) Where's your code? Any open source contributions? TopCoder? I want to see artifacts. A particularly useful artifact is a git repository for a project that would be reasonable to complete in one week. This shows how you solve problems and what you can accomplish in a typical work week. If you're highly productive, this will be impressive. If not, then you can show it to people and learn where you can improve.

5) As far as google specifically, google employees aren't going to give you much insight because they have to sign NDAs and they work there and actually you have to sign an NDA just to interview. Plus, those people that don't make it aren't as likely to volunteer information on the process. They apparently care very much about your fit in their culture and your enthusiasm for the company and interest in their products. Next, it's about your problem solving abilities and particularly data structures and algorithms - checkout a course on coursera or algorithmist. You really need to hit those hard for their kind of work and also learn how to answer questions like this : Given {data structure} execute {algorithm} but do it with {very large data set, very low latency requirements, using a large cluster}.

6) Remember, be just aggressive enough! Once you are all prepped so you know that you will do well in a phone conversation, start sending emails, making calls and talking on linked in. Be polite but persistent, send links to your work and resume and request 30 minutes of an engineer's time for a phone screen because you're passionate, you're talented and you're exactly what they are looking for. If that doesn't work, find some people somewhere that work at google or that used to work there and send them a note offering to take them to lunch for an informational interview and make your goal understanding not just the hiring process, but the company, it's technology and its organization. (this is a common technique where you are just asking to meet with them for their expertise, most people say yes to flattery and free lunch) Google has their engineers spend their first bit of time reading papers, so try and find that paper list and start reading it. Keep on doing this, build and maintain those relationships and pretty soon you will strike up a friendship and then it's time to leverage that to get an on sight interview.

I don't know you at all, but it seems like you are doing very well. You could be concurrently enrolled in college, launching your own project, networking with other engineers and building a web presence or polishing skills that must need some of that at your age. If you are feeling trapped, I'd separate that feeling from the decision about whether to stay at your current job. Professional decisions should be made heartlessly, as much as possible.

If you are unhappy or just really into google, well find a way to make your code demonstrable in any of a million ways : Write some weekend project that uses a google API, win a topcoder contest, contribute to open source, continue your education and get involved in research projects.

anyway, I have spent far too much time on this, so obviously my altruism is leaking into procrastination... I hope somebody finds it helpful and it just doesn't go into the black hole :]