This post is going to detail my job search in NYC in late 2012. It has an eye towards giving people who might be considering getting into the job market hints on where to get started and what to expect.
A Bit About Me: I've been a developer professionally for 7-8 years. My time was split about evenly between "full stack" development and backend development. The former was mostly in Java (with a bit of C++) and the latter was entirely in Python/HTML/JS/CSS. I'm a very good programmer and I do extremely well in the standard algorithms/data structures technical interviews. If you're earlier in your career or have trouble with interviews some of this may not apply.
After the hurricane, about 8 months into our startup, my co-founder and I decided that we needed to go look for work. It had turned out that getting investment in the area we decided to go in was difficult and our runway was quickly running out. My co-founder's house got hit pretty hard by the hurricane and that was the final blow. He was able to get a job at IAC, and I was very confident I could find good work, but hadn't looked around at all yet.
I began my job search the week of US Thanksgiving by submitting an application to Google through a friend that worked there. Since Google is notoriously slow I figured I'd take a few weeks off and apply elsewhere once I'd reached the onsite with Google.
I put together a short-list of about 30 companies that I was potentially interested in working for. 30 seems like a lot, but coming out of the ShopWiki exit, some contracting, and founding a startup I really had no idea what I was interested in doing. To emphasize the point, I had made a spreadsheet with all of the companies I was interested in and they ranged in size from two people
(pymetrics) to 53,000 (Google). The industries ranged from Finance (Jane Street) to databases (10gen) to virtual assistants (Fancy Hands). Almost all of them were different. They were mostly python jobs, although a few used other languages (Scala, Java, Ruby, and Jane Street uses OCaml).
The only real intuition I had was that I didn't want to do UI work. There was a bit of a tension there though since I'd been doing "full stack" (a term I didn't know until I started my search) development for the last 4-5 years. Since one of my goals was to be well compensated I couldn't rule out places which were looking for my more recent skill-set.
Here are the places that I got my job listings from, in order of how useful they were to me (the not useful ones are not included):
- Personal connections. I knew people at several companies I'd put on my short list, and reaching out to them was really helpful.
- Angel List No job descriptions, but every position includes skill keywords, salary and equity ranges.
- UnionSquare Ventures Job List. USV is a really successful venture capital firm, so companies they invested in seemed more likely to succeed than any random startup.
- The NY Tech Meetup Made In NYC list. It's a bit of a slog to get through it all, but there's lots of great companies. Especially if you aren't looking just for startups or tech companies (e.g. WNYC, the local NPR, is on the list)
One of the mistakes I made was underestimating how much demand there was in the job market. Since I was unemployed and had a lot of free time, I ended up applying to a bunch of positions from my short list. Almost all of them got back to me positively. What followed was a totally insane two weeks of meetings, calls, phone screens, and interviews.
You really have to block out an entire day for a technical interview, and everything happens all at once when the process started, so unless you really have no idea what you'd want to do and have unlimited free time I'd recommend only having 1-2 job applications going at once.
I can't go into the actual contents of any of the interviews I did, but if you're about to do a technical interview with a startup or major tech company I'd recommend the following. Some of this comes from the other side when I was the interviewer.
- Know binary search trees and prefix trees. You aren't likely to have to implement a balanced binary search tree, but having a basic idea of how they work would be useful.
- Know your basic algorithm runtimes. Basically every question is going to involve analysing the time and space complexity of your answer.
- Be prepared to do some math in your head.
- You're going to spend 3-5 hours doing a lot of writing on a whiteboard with a time limit, so you should make sure you've practiced that.
- You definitely should know dynamic programming and recognize when it applies to a problem.
- Talk out everything you're doing. Say what you're assuming or trying to figure out if you're thinking. Interviewers like to hear it and if you've gone way off in the wrong direction they'll often give a hint to right you.
- Lastly, when in doubt, sort your input or put it into some sort of data structure (BST, prefix tree, heap, etc)
After the interviews most places had my contact call me to talk about how I thought things went and to see how I was feeling. After that were the standard reference checks (protip: if you're interviewing someone without an internal reference, always call their references).
When I got the offers I was happy to see that they were fairly comparable in terms of salary and benefits. Startup equity was dependent mostly on the size and stage the companies were in. It meant that I could choose primarily based on how much I liked the companies and the sort of work I would be doing.
Foursquare was where I ended up at. It's totally awesome here, and we're