|
If you're a software engineer in a city where these companies employ folks and you're thinking this doesn't apply to you, I'd encourage you to at least give it a shot. It's not only the absolute best of the best who get these jobs. I recently decided to do a round of interviews after 10+ years as an independent web / iOS dev, having never had a professional software dev job. I'm also a self-taught developer with a business degree from a no-name state school. Despite all that, I've been really surprised and happy with the market reception here in NYC. I got interest from the bigger guys like Amazon, FB, and Twitter, as well as smaller companies like Dropbox, Stripe, Square, Coinbase, etc. Last week, I got a very good senior / staff offer from one of the smaller public companies for around $400k in first year comp. With bonuses, promotions, refreshers, etc, that could easily average $500k - 600k per year over the next few years. And I had no competing offers. Some of the other companies I'm in the loop with will almost certainly offer quite a bit more, although I love this company that made the offer and I'll probably just drop the other interviews and take it. Comp isn't everything. All this to say, if you're interested in making more $$ and these companies are hiring where you live, don't pass it up because you think it's only for hotshot 22-year-olds coming out of Stanford. |
Btw, to give you sense of it, I'd have no trouble finding a loop in a linked list, printing all permutations of a set, or searching a tree recursively. I'd have to puzzle a bit to figure out how to do DFS vs BFS, but I'd get there, I don't have it loaded into memory. I wouldn't be able to implement merge sort on the spot, I'd need to look it up, though I could probably get it frontloaded. All I can say is dayum those interview exams are hard, what I described is a pre-req, nobody will just ask you to permute a set, but if you can't, you'll never solve whiteboard the problem they ask you in 45 minutes.
For take-home projects, one (a rails app) was rejected because I used named routes rather than using the more conventional methods (I know this wouldn't be good to do in a production app... guess I just wasn't thinking about routes, it was a demo app, so I just threw some names routes in there for demo purposes, it was a take-home), along with some "duplicated" code that I thought was justified but never got to explain (I personally think extracting this into another method would be a pre-optimization that would need to be undone when the methods diverged, something I thought would be likely under the admittedly fabricated business requirements). I did have what I though was good testing, the reviewers did complement that along with some aspects of the app in their review.
Sorry, don't mean to give you my sob story, I just... I'm at the point where I wouldn't mind a crack at these jobs but just feel like maybe it's not an effort that's going to pay off (I mean, how much more time do I really want to spend on the kind of problems in cracking the coding interview? I actually feel like I got something out of studying it and preparing, but going back over and over, nah... maybe other people retain this stuff better than I do, and you know, maybe that does actually say something about suitability for these jobs).