Tuesday, November 23, 2010

Let down by the system?

I read this presentation the other day and was struck by how much it sounded like advice I've heard for computer science students.  Go do something real, anything! Go work on an open source project. Start your own. Work through OCW material, something that other people haven't done. And although it has that self-help guru slimy feeling to it, it does a decent job on delivering what it promises.

View more presentations from Charlie Hoehn.

I was treated like Charlie when I was in college. I was told over and over just get through school and you'll have an amazing job waiting for you at the end of it all.

Having my computer science degree in hand I can tell you that's not exactly true. While it is an enormously marketable degree and I've never had trouble finding a job, they weren't exactly stimulating or enriching jobs(in any sense of the word) and they actively drained my passion for technology, but I thought that was what a fresh grad was SUPPOSED to do.

Building on Charlie's thoughts I think the problem is two fold. And it isn't a problem with college per se, but more the attitude about college.

First, the education system and people's thoughts about it are stuck in the past when getting a degree wasn't something you were expected to do. It was something people did to get ahead, somewhat like getting a master's degree or MBA today (this won't be true tomorrow though; considering the rate we're cranking out MBA's and other advanced degrees). It made you stand out in the crowd of other people.  Sure maybe there were 50 applicants for a job in the 80's, but only five of them had degrees. Unfortunately this idea is still lingering and people in college the idea they are entitled to a job upon graduating.

Well, that idea is total crap. It's never been the degree they cared about. They just wanted some way of weeding through all the weak resumes down to a number that was manageable. People aren't good at making choices based on a large numbers of options. Think The Paradox of Choice. They want a handful of decent options to consider.

This leads to the second problem. The idea of doing a job search the way they teach you in high school and college (by finding job postings, sending out 1,000 resumes and praying for an interview) is completely useless, especially for new graduates! Like Charlie talks you're competing with all the people that have been in your field for more than a decade, all the people overseas that will do anything to get to the states, and all your peers. Good luck standing out in that crowd.  The other method they tell you to use is networking talk to everyone and I'm not sure about you, but I've never met anyone outside of sales that's ever actually been successful with that approach until they started developing skills and a reputation for people to talk about. "Oh, Josh? Yeah, I know him... He's that guy I went to college with. I think works for a computer company now or something." or "Hey, you should come work for my company they're awesome we make software that counts beans! (and they give me a hiring bonus for every sucker I bring in)." Most people don't get their dream jobs like that.

If you want to stand out and get your dream job then you can't follow everyone else and just try and do it better than they did. In the past I've tried to follow the culture and read Slashdot or Arstechnica and while entertaining, it hasn't let me forward. I could read twice as much Slashdot or write four times as many merge sort algorithms in the languages of the day, but that wouldn't put me ahead of the game. If you think the heart of the tech industry is facebook then let me tell you, you're way behind behind the time. Yes, facebook's a great company and they do cool shit, but they're no longer "it". And if you start with your goal of aiming to get into facebook then you're just like the 10,000 other CS grads this year that want that nice big cushy salary they offer.

What I've found has helped me most in finding jobs I'd actually want to do is to plug into the community that's on the bleeding edge of your field (not academia, of course) and follow it.   For me, right now, that's Hacker News.  If they recommend a book to each other, then read it and try to figure out why they recommended it. If they think a program is awesome, spend time with it and figure out how they made it like that (ideally read the code if it's open source). Be pick a technology or language that's brand new or no one uses and learn it just for the experience. Once you plug it you'll start feeling the ebb and flow of different topics and what's hot or not and once you learn more and more you'll be able to start picking them out yourself. Once you're on the pulse of the industry you start seeing potential jobs everywhere you look.

I'm not sure I stayed on topic here, but I think I said what I was trying to. Conventional wisdom is wrong and you need to stay at least one step ahead of everyone else if you really want to do great things. Who know, by the time you read this all this information may be out of date, but the ideas are sound no matter when it is. If tomorrow everyone has Ph.D.'s (and that may very well turn out true the way the academic system is churning them out in the US) then just having a Ph.D. won't mean anything to anyone. And all the smart people will have found twelve new ways of standing out.