I've been rejected from every job I've ever wanted, and had to settle for places that I ended up hating. I was just rejected this morning by Jane Street Capital, after spending hours on the programming problems they had sent me, trying to make them perfect. I had written and sent Python and Scheme solutions along with my OCaml solutions too. I enjoyed reading this short post, but I'm having trouble using this most recent rejection to my advantage. I can't figure out what I'm doing wrong. As much as I dream of working for myself on my own ideas, it's almost become a life goal to get into an awesome company, just because I've been rejected from them innumerable times.
Any advice? I'm young, 22, about to graduate in May. Should I just try to take risks while I'm young and work for myself, or keep trying until I finally get through an interview process for a place that I like? Part of me wants to keep trying until I finally get accepted somewhere, but another part of me thinks that it won't happen and I should just try to prove myself on my own.
> Any advice? I'm young, 22, about to graduate in May. Should I just try to take risks while I'm young and work for myself, or keep trying until I finally get through an interview process for a place that I like?
Contrary to most people here, I'd caution against "working for yourself". If you work for yourself, only a small portion of what you do will be programming. In addition, you won't learn about programming on a team (as opposed to coding by yourself). That said, if your goal is to run your own company, go for it; if your goal is just to write code in an environment you love, starting a company (itself rewarding and something I want to do at one point in my life) is neither the only, nor the best way of getting there.
Here's my suggestion: interview at a bunch of places, receive offers, "save the best for last" (don't interview for your dream job first). You may not get an offer for the perfect job, but you're also coming straight from college so the bar is considerably higher, in that you don't have a resume.
Technical interviewing is a very imperfect art, it's just (much) better than the conventional approach of hiring warm bodies based on traditional metrics (the name of the school they went to, etc...). There often isn't a great correlation between one's interview score and one's performance on the job, so once you have people who've worked with you and who can vouch for you, along with examples of your work, you're much less likely to be passed over because you didn't do well enough on a single whiteboard coding exercise.
Out of the offers you do receive, pick the one where the people who've interviewed you seemed the smartest and most passionate: interested in same things as you are, willing to mentor you. Disregard everything else.
Once you're working, don't settle. Don't give up on your asoirations, code OCaml in your evenings, keep up with computer science, hack on open source projects. In a year, try the companies you'd want to work at again.
Also, consider what you've learned doing programming problems Jane Street: quite honestly, I am envious of having an excuse like that to solve interesting puzzles in a language I love. That should give you a boost interviewing at other places.
By the way, have you looked at: http://cufp.org/jobs ? There seem to be several OCaml offerings there.
Thanks for all the advice. I think it's a good idea to interview at a bunch of places to build up for a dream job. Although I'm on my third 6 month internship through school, the managers basically lied about what the jobs would entail to get me to accept (i.e. saying it's a software developer position and I'm stuck doing performance testing all the time), so there's not much I'm even proud to put on my resume. I've had to search far and wide for a reason to write some code, and that's what I always list on my resume.
Maybe one big problem with interviewing at a bunch of places is that I'm most proficient with Python and not Java. I learned to use it as my primary language because a very intelligent friend of mine was using it all the time, and he worked at Google. Although, the most technical interviews I've ever had were with Amazon where they let you use whatever language you want to come up with algorithms to answer their questions. It seems there aren't many companies that use Python.
Anyhow, I'll definitely apply around to a bunch of places even if I don't find them entirely appealing. They can't be much worse than what I've already endured through my internships, and I've learned to make the best of my time at my jobs by now anyway. I was thinking of doing the Y Combinator Common App today, so maybe I'll do that.
And you're right, it was loads of fun having an actual reason to solve some problems in OCaml. Actually, I'm not so passionate about the language, I just thought it was really cool that they were looking for sysadmins who also knew about functional programming. But I will check out that link anyway.
Sometimes if you ask nicely, the recruiter can tell you what you were missing. It's great that you're putting in a lot of effort, what you're missing is the feedback.
> Any advice? I'm young, 22, about to graduate in May.
Find a mentor? Find people who walked down any of the paths you're considering, and ask them what it was like. It's easier said than done, but it may prove valuable.
I like the idea of asking the recruiter what was missing, but I mostly am put off by it since I fear he'll tell me they just went with a better candidate...and I'm afraid of hearing what I did wrong, because I think I'd feel even more hopeless after hearing that. I guess I need to take the hint from this post and try harder to not fear rejection.
Any advice? I'm young, 22, about to graduate in May. Should I just try to take risks while I'm young and work for myself, or keep trying until I finally get through an interview process for a place that I like? Part of me wants to keep trying until I finally get accepted somewhere, but another part of me thinks that it won't happen and I should just try to prove myself on my own.