I have a different perspective on the job search thing now that I’ve successfully done it once and seen things from the other side. I manned a booth at my alma mater’s job fair recently and didn’t think most students asked the right questions. Ideally, almost all of a job fair conversation should consist of the student telling me what he’s good at and passionate about in as straightforward a way as possible (there’s no need to be modest or subtle). Reading resumes is mind-numbing work, if I have to use a lot of imagination to see you as a successful candidate, you’re likely to be disappointed. If you do ask questions, and I do the talking, you might as well take the opportunity to try and get as valuable of information as possible.
I’m pretty sure my default question in these situations, as a job seeker, was something generic like, “so do you like working at <XYZ>, and what exactly do you do there?” And I fielded that question a lot last week. Now, I’m happy to give my spiel, but it certainly doesn’t help me remember the question-asker (for better or for worse), and I can’t imagine that it’s particularly valuable information. There’s really no need to beat around the bush – students want jobs and companies want employees.
I think exactly one student asked me “so, what exactly is the best way for me to get an offer from <well-known Silicon Valley software company>?” and that was great. If I could go back, that would be my default job fair question. Straightforward and likely to evoke a useful response.
Anyway, I told her, and I imagine it was the most (and possibly only) useful thing I told anyone all day. Basically, there are two steps:
- get an interview
- do well on the interview
The best way to approach Step 1 is to get someone already in the company to refer you. This will get you much closer to the top of a very large stack of resumes. If you have to take the pedestrian route of applying without an introduction, your resume is very important. For a SWE role, it basically needs to communicate that you really, really love coding and give some sense that you’re good at it. When you say what you’ve done, be specific.
As for the interviews themselves, I recommend three things:
Cracking the Coding Interview. This is a great book. A number of important topics are clearly and concisely reviewed, and specific plans are given for approaching common types of problems. Maybe focus on the sections on object oriented design, on software testing, and on scalability, but pretty much everything in this book is important.
Algorithms and data structures. Review all the algorithms and data structures you might find in a first semester course on algorithms. (If you like video lectures, I recommend this set.) Spend the weekend before your interview coding every single one of them, from scratch, without an IDE, in whatever language you’ll be using during your interviews. Really. Bonus points for unit tests.
Standard libraries. And in particular, collections classes. Know all those offered by your language, how they’re implemented, and their performance characteristics. If Java, Oracle’s documentation is actually quite good.