I'm looking for a job! Well, really I want to find an awesome next step in my career as a software engineer. It's a tough battle to track down the places I want to work, get application materials ready, get applications in in the right order (NP-Hard without a doubt), be prompt with my emails, and prepare for those interviews. I figure it might be nice to put down some resources and things I wish I had known.
How should you start? Well, make sure you know what you want. I was fortunate enough to work a summer before starting this process and have some research experience the summer before. It used to be that I was headed to graduate school, but a summer working, even at a job I didn't particularly care for, gave me massive feedback on how much I enjoyed practically digging in.
Tip 1: Get real, varied experience before you graduate.
Starting out my senior year, I dug into the details of what I liked and disliked about my various experiences. This led to what my dad calls a Franklin Graph. (Don't ask me where he got it, since I can't find anything about Franklin Graphs.) The idea is to make up a scoring rubric of what you find important in a job. This works to help you rank opportunities, prioritize what you want, and recognize situations that just won't work.
Tip 2: Figure out what you want, and get it in writing.
How did I start applying? Thankfully, my resume is updated regularly, and I have been making massive organizational changes to how I work on over the last few years. It's pretty good now. Try putting it under source control as a first step. Your next thought should be to iterate! A good resume will get you past automated bots, make recruiters thankful for the aesthetics, and get you an interview.
Tip 3: Buff that resume up until Mister Miyagi would be proud.
Hopefully you have a career center to look at it wherever you are, but just make sure somebody else looks at your resume. Also try to get an in anywhere you can. Alumni, family friends, and friends of friends can be a great way to get past the initial screening, have an awesome recommendation, and/or get to know a company really quickly. Pump your resources.
Tip 4: Give yourself every advantage.
Once you get the resume up, you should start applying to places you want to work. Every time you fill out an application, print it out or save it. This keeps you from repeating yourself later. The first applications can be tough since you have to put down so much information, but it gets really fast later on. Most companies want the same information. Use this to your advantage.
Tip 5: Organize and record keep EVERYTHING.
As to who to apply to first, I'm not sure how to describe it, but I think I applied in the wrong order. Many companies have very different paces of recruiting. It's also hard to know when you'll hear back. Just keep in mind, if you have a company you really want to work for that you should put everything you can into getting an offer for that company before other deadlines come up. As a reference, 6 weeks seems to be pretty fast for getting a decision from a company after first contact (only Google and Matasano Security seem to fit in here). A more realistic time frame is probably a few months. In general, don't be terrified of success with companies, but be prepared for the consequences it can bring. You don't want to turn down a pretty good offer, thinking you'll get a better one, only to strike out later.
Tip 6: Even success has consequences.
But that's a bit morbid! Be optimistic, and just remember you have to be respectful with these companies. Always email them back promptly, spellcheck your communications, use kind words (even for rejections), and respect their time.
Tip 7: Every party involved in this process is investing something.
To wrap up this post (longest yet?), I want to put down the resources I have been pointed to, liked, and/or found useful in this process:
Those resources will pretty much cover everything you should already know but need to review.
Lastly, remember to stay calm and have fun. Work problems with friends on white boards, chalk boards, or paper. Stop using a compiler or IDE when you practice. Make your practice like your interview and you'll be ready when the time comes.
Tip 8: Practice like it's real.
These tips and thoughts seem to be doing good work for me. It doesn't seem right to give details, so I'll just leave it at saying I'm doing well. The process of applying is humbling and fun. You get to work cool, albeit short, problems with really smart folks. Best of luck!
Number one goal: Have fun.