I LOVE working with new graduates. People fresh out of college often exhibit the natural brilliance that has not yet been diminished by years of sitting in meetings and patching old poorly written code. They are unpolluted by bad practices they have not yet learned. They are full of enthusiasm, energy, and desire to change the world.
The great new graduates are also easier to hire than the great experienced developers.
We know where both populations concentrate - great students go to top computer science schools - Harvard, Stanford, CMU, MIT, and the like. Great engineers work at the top companies - Microsoft, Google, Apple, and the like.
The key difference is that the students get kicked out of their nesting spots with an astonishing regularity. The times and places are well known - so it's easy to harvest them right at the source :-).
Consequently, I've worked with a lot of very smart young people throughout my career, as a peer, a manager, and a mentor. Invariably, they were always interested in how they could grow to be great engineers. My advice always had come down to two points:
(1) Find great people to work with. The project itself is far less important than the team that is working on it. There are no mundane projects, but there are terrible teams, and a bad team (which usually starts with the bad manager) can spoil any project, no matter how good. Consequently, look for the great manager (unless you're working at Google, then the manager does not matter) - someone who you can trust, and someone from whom you can learn a lot.
This advice probably goes against the grain. These days every one of us knows of a friend whose friend has made it doing web gigs for a startup that was acquired by another startup. The problem is that every one of us who has been in this industry for a while also personally knows 10-20 people who went from a startup to a startup, never acquired any useful skills nor made any money beyond basic subsistence level (which can be quite high in the Silicon Valley, actually).
So if you're in this industry to get rich quick by harnessing the power of web advertising, you're in a wrong industry anyway. May I suggest turning your attention to investment banking? It's more money even quicker. But if you really care about the technology - learn it in the right place, learn it by doing, and learn it deeply. I can teach C programmer Java. I don't think the reverse is true.
More here: http://www.stsc.hill.af.mil/CrossTalk/2008/01/0801DewarSchonberg.html, and by the way, we're looking for people who graduated from college knowing C or C++: http://1-800-magic.blogspot.com/2008/07/looking-for-great-devs.html.