What I've Learned From Failure
On Hacker News, “hidro” asked:
How to keep yourself prepared for potential interviews?
There are a lot of things related to studying up on the company, learning about the problem they hope hiring you will solve, and so forth. I’m not going to address any of that, I’m going to talk about technical interviews, interviews where the stated purpose is to judge your technical aptitude and problem-solving style.
While I don’t aggressively preach “Walk out if they ask you an algorithm problem,” I also don’t preach “Study for algorithm problems.”
Trust that they are sincerely looking for the way you approach a problem and that they are judging the way you respond to something you don’t know off the top of your head, rather than judging whether you know the problem off the top of your head.
(They might actually be doing a bad job of interviewing, but you can’t control that, so don’t worry about it.)
I believe that if today is Sunday, and you have an interview on Monday, there is actually no point in trying to study something today. Whatever you already know, that’s what you know. What you want to do is be the best possible you in the interview. And studying the night before is counterproductive:
So if you aren’t going to study, what are you going to do?
__DEBUGhas been removed from version 6.3 of your commend line tools under OS X 10.10.3.
I think that if you walk into the interview with a sense that the things you know, you actually know, and the things you don’t know, you are comfortable saying, “I don’t know but I’m happy to work my way through the problem as best I can,” you will do as well as can possible be expected.
And further to that, if you accept that no matter what preparation you make, you can’t win them all, you will be more relaxed than if you have an idea that there is a right way to interview. Because if you think there is a right way to ask interviewing questions, and there is a right way to study for interviews, then if you aren’t offered a job, it’s somebody’s fault.
That turns the pressure up, and is depressing. Far better to accept that interviews are hit-and-miss, and if you miss, it’s no big deal, there’s another interview, with another company tomorrow.
So what about more than one day before the interview? Should you study algorithms? Or language constructs? Or anything else that interviewers seem to ask?
I think not. Or at least, not for the sake of an interview. Instead, discipline yourself to seek out books and blog posts and lectures that are technical. There is a vast difference between learning about Merge Sort because you think you may want to use it one day, and learning about Merge Sort because you were browsing Glassdoor and heard that Company X likes to ask about it.
Instead of setting aside an hour a day for practice, I’d say be curious about technical subjects, and when you run into something new—like generators and iterators when you’re reading about infinity—pause for a moment to write out some generators and iterators for yourself.
This is far more engaging than just reading, and as a pleasant bonus, if you do get asked about generators and iterators, you can always say, “I don’t use them a lot, but I read about them in a post on Hacker News about infinity,” and you come across as someone who is eager and curious, rather than someone who is trying to game the system by studying things they don’t actually know how to use.
All of this is JM2C, of course. The truth is, nobody really knows how to win this game every time, sometimes the best you can do is to play with dignity and style.