How do you get the right skills?

Technology is a somewhat unique field - in my completely biased opinion - in that your raw skills are tangible and testable. That is to say, in an interview, there's typically less emphasis on "fluff" and more emphasis on what you can actually do. So, how do you build these raw skills?

Regardless of what position you're looking for, if you want to know how to get there, you should ask someone in the field. Think about where you want to be in the next few years. Find a person who is right now where you want to be and ask them (ask them what?) If you don't know anyone offhand, well, that's what Google is for. Find someone and email them. People are pretty willing to help - if you only ask!

That brings me to the specifics. I've been a software engineer at Google for the last two years, so people ask me pretty frequently how they can get a job at Google. The number one thing that I think is missing from applicants is real project experience.

If you're in school, you should study hard and all that good stuff. But, that's not enough. You need project experience - companies want to see what you can actually code. By the time you've graduated, aim to get at least three major software development projects under your belt. Here are a few ideas as to how to get those projects:

  • Many schools offer the ability to do an independent study. Think of an application that you want to build, pitch it to a professor, and maybe you can get credit for it by doing as an independent study.
  • Talk to professors that you know - or even ones that you don't - and ask them if you can help them out with research. If you want to be a software engineer, focus specifically on the projects where you'll be writing code in a language like C++ or Java (as opposed to, say, MatLab).
  • Check out the code to an open source project and build it. Take some time to learn the project architecture, then start coding. Start with fixing a few bugs, and then move into real feature work.
  • Enroll in courses which have large projects. Yeah, they're hard, but no pain no gain, right?

If you're not in school right now, you might be able to enroll in courses at a local university. But if not, you can still do projects on your own. Start with something small - like a Google Maps mashup listing your favorite restaurants - and go from there.

You'll learn a lot from coding on your own, but the benefits go beyond that - simply the fact that you did coding on your own rather than for work / school shows the passion and dedication that every company wants to see.