Don’t Get Attached, It’s Just Luck. My Interviewing Advice and Tips
medium.com
medium.com
A recent anecdote from my own experience. I've interviewed with this company. Everything seemed to go well, I had a talk with hiring manager, then with one of the guys from technical team where we discussed real world problems, etc. Everything goes well. As soon as I start thinking this could be the one, they say something along the lines of "let's see if this other guy from our team has some questions". So they bring the other guy who seems a little annoyed being dragged away from what he was doing (we're in an open office with glass walls, so I could see him at his desk). This guy turns out to be the "bad cop". He immediately goes down to more CS/academic level with his questions and eventually asks some question along the lines of "what does compiler do in a situation X when there is Y". Well, I am forced to answer that I have no idea (it's not exactly the kind of problem you normally encounter in real life), so the "bad cop" just nods his head in a forgiving manner and I know immediately it's a bust and that he's gonna veto me out. Sounds familiar?
I find that older, more experienced engineers tend to know not to ask these kinds of deep domain-specific questions (unless the are directly relevant to the position being applied for).
The unfair part about this type of interview process is that the interviewer assumes that what the candidate knows is only a subset of what they know - But they completely ignore the knowledge that lies outside of the intersection (which could also be useful).
It's a sharp contrast to a lot of the stuff that is posted here that depicts job hunting like some kind of spiritual search for your life's passion.
Later in your career, if you have kept connections alive, the job hunt should look like this:
"Hi <member of network>,
I'm looking for a position doing X at Y, and I noticed you know Sara at Y. Do you mind doing intros? I'd really appreciate it."
...
intros/coffee with Sara.
...
resume to the hiring manager, perhaps through some automated system, but with a thumb on the scales
...
interview
...
hire/no hire decision based on mutual fit.
Now, this isn't about nepotism, it's about the power of having worked together. While the internet is great and you can learn a ton about a candidate (sometimes) by their online work, sometimes you can't. And nothing is as high bandwidth as having worked with someone. (Well, maybe a family connection.)
So if you can build your trust networks and get informal introductions to a company from someone who has worked with both parties, you're in a very strong position.
That said, as I stated at the beginning (and the author did as well), this post was fantastic for folks without such a network.
Personally, with the exception of my first job out of school, I've always used the professional connections route. I probably couldn't get a job doing what the OP describes to save my life. Luckily, my reputation is such with prior employers and colleagues that I could call any of them up and they would go out of their way to hire me.
If you kept connections alive and actually have connections that move on to other companies. 95% of the connections I have made in 14 years are either retired or still at the companies they were at when I met them. How does this help me?
I guess I would still go into your network and see if they have met anyone who has moved on. Adter all, it isn't the direct connection that you are looking for (though that is preferable), but the second layer connection.
Otherwise I think you are either in the position of following the author's advice or trying to expand your network by working with people in other ways (side projects, moonlighting, open source, volunteering). I know how unsavoury that choice is.
Since I can't definitively speak to your situation, let me talk about ways to avoid it.
- work in a consulting shop early in your career.
- seek big companies over small as your first or second job
- prefer job dense locations early in your career
- volunteer your time when you have cycles. Work an event, write some code, etc
I realize these are not all available to everyone, they are just guidelines that will expand your network.
But it's different than when you're in / just out of uni (I still remember sending just under 150 applications...), or when you're just recently out of work with a family and a mortgage (and you need something now).
Lowball salary? No benefit? Bad company desperate to hire? There can be many explanations.
Based on this limited info, he gp was probably very affordable. Which is fine, I was very affordable when I first came out of school.
I thought that their questions were mostly good but the interviewer makes you code live in realtime - I found this really stressful and I froze several times.
I remember one of the challenges they posed in one of the interviews was to flatten a JSON multidimensional array that had an arbitrary level of nesting. I implemented the recursive solution without any problem (which is the difficult part right?) but then the interviewer asked me to come up with a non-recursive solution - This is actually easier, but because I was under stress and was still thinking about the problem in recursive terms, I just froze.
I even asked "Do I need to use a fringe list?" (referring to a structure used in several search algorithms) but I don't think the interviewer understood my question and they weren't able to give me any guidance for what they were specifically looking for so I just asked to skip that question because of time pressure.
Then later they asked some really easy questions about HTML and CSS (which I've done thousands of time) but because of the IDE they made me use, I couldn't actually run the code to test (and under stress, I forgot the exact syntax for a few things).
I guess this is an interview process you need to really prepare for.
I suppose the process makes sense for FB; the feeling of 'being watched' which I felt in the interview is probably common while working there day-to-day (considering the open workspace environment) - They need engineers who can perform in such an environment. I'm definitely not one of them.
I've frozen in interviews before under similar circumstances. The only blame I place on myself is not being a better interviewee... it really is a skill unto itself quite apart from the job and apart from programming.
Every person we hire here (Switzerland) gets interviewed but because it is almost impossible to know if someone is going to work out there is a trial period of three months by law. Usually with a termination time of one week. After the trial you will usually need to give at least three month notice. You can get the most brilliant Coder but if he/she doesn't work with your existing team for what ever reason, he/she isn't the right fit for you.
You can only find these things out after they start working for you.
We usually have a two week notice (it depends on the company and the position) and I've never seen someone escorted out. There's often a short inventory of company assets you used, and that's it.
It should also be noted that for the sort of jobs we are talking about here there is a difference between being terminated 'for cause' (e.g. incompetence, theft from your employer, etc) and termination due to downsizing and the job itself being eliminated. In the latter case you will often get a package of benefits and the termination process is somewhat similar to the one you are familiar with.
And yet we still allow our folks to walk unescorted for a few weeks inside the company premises.
After all, how many just-layed-off employees will want to steal or damage company property to top off their recent loss of job with criminal charges and a criminal record?
From the outside it feels like a bit of paranoia on the part of US companies.
I might be missing something, this is just my opinion as an outsider.
As for the paranoia part, it is definitely a bit of paranoia on the part of the company management but paranoia for a reasonable reason: there are numerous examples in the US of someone getting laid off or fired and returning to the office with a gun. From the perspective of management, why take the chance? If there is any hint that the termination will not be pretty you make sure someone escorts the person out and you have shown yourself to be taking due consideration if something unpleasant happens.
Non USian here: regardless of who gave notice, the lame-duck period is normally used for wrapping up whatever work/project the departee was working on and handing it over to a colleague or manager. People generally are more worried about getting bad references than office shootings.
When you switch jobs in the USA, you switch health insurance and other benefits. Doing this for 3 months and then finding another job would be tedious.
Also, if it doesn't work out, what does the candidate do? Go hunt for another job with a negative signal on their resume? If I were a job seeker that would seem high risk.
This is the same reason contract to hire positions don't attract everyone. If you are good enough, the company will commit to you without the trial period, which candidates typically want.
Optionality has value, and both parties can't possess it.
In Switzerland, you'll switch accident coverage and probably the pension fund. Still some work, but not as tedious as what I imagine the situation in the US to be like.
> Go hunt for another job with a negative signal on their resume?
Both parties are free to end employment during the trial period. Maybe the candidate didn't like the work environment? Also, the future employer stands to gain an employee pretty much immediately as opposed to wait for the usual 2-3 months(!) notice period. Finally, unemployment benefits in Switzerland are fairly generous (70% income over 20-ish months), which mitigates the risk to candidates somewhat.
As stated before, it's nicer to the employee on one side, but since everybody wants to hire proper guy to avoid firing&rehiring hassle due to these protections, interviews can end up on the ridiculous side.
you gain something, you lose something else.
BTW, what's a "fringe list"? Googling that term shows me results pertaining to the TV show Fringe (which is great, but I'm sure not what you're getting at).
I agree with him. I'm not applying for a code monkey position. I'm applying for a senior software Engineer or architect. Someone who can use modern tools and create solutions.
I had two coding tests during my last round of interviews. One on a computer onsite where the interviewers left me alone with a computer and IDE and permission to use Google and the other a coding problem I had a week to complete, turn in on github, and the second part of the interview was going to be a code review.
I found both to be acceptable and relevant.
when i interviewed this time around for a new job, the most frustrating part were the take homes. lots of companies expect you to do a sample project that only grants you an audience to a technical phone screen. like, what? didn't i just pass your technical test? if i still have to show my technical prowess doesn't that mean you don't trust my resume, or trust that i honestly completed your assignment?
i also agree these take homes are not 4 hour affairs. they give you no direction so you can't sacrifice ui/ux for functionality because you have no clue how they judge it. i failed a large company's take home even though it was feature complete, but i sacrificed really slick/nice ui for a workable ui that i felt was passable given no direction.
i got a thanks but no thanks reply back.
as with regards to luck; another company i interviewed at, i aced their take home. then i interviewed with ~6 people who all said they liked me (or at least that was the feedback i got). but when i interviewed with the vpe, i failed a question about semaphores, (i knew what they are, but just didn't have the answer to a specific question the vpe asked) and failed the job app.
the job position was to be a front-end developer.
I had a take home for a UI position that I spent ~10-12 hours on. It was some pretty standard UI stuff and they had 5 points of functionality they wanted you to code. Make it responsive, have these sections in a different order on mobile, make X do Y when you click Z, etc etc.
At the interview, two technical peers walked through what I had submitted. Their questions made it really clear they had no idea what problems I was supposed to solve.
- Why didn't you write a complete RESTful backend to serve this data? (the instructions literally said not to)
- Why didn't you use a CSS pre-processor? (the code required ~30 lines of CSS)
- Why doesn't this button work? (it wasn't supposed to)
- Why doesn't this code work on a mobile device? (it worked just fine on mobile devices)
Really just a strange, strange experience.
1. I don't want to work for a company that uses CVs as a major part of its job screen, since they are nearly useless from an informational point of view. Steps that improve the quality of candidates also improve the expected quality of your future colleagues.
2. The take home gives significantly more information than a phone screen. Candidates who are rejected because they find the take home too hard, or who would have passed a phone screen but not the take home are saving time because they don't have to take any time off to come into the office for an onsite.
3. Having a good take-home means we can make the rest of the process more lightweight. We have an extension interview where we pair with you while you extend what you took home, and then you're done. This is much more respectful of your time than multiple days of algorithmic questions.
4. It's easier to make marking take-homes blind - i.e. to guard against various biases compared to phone screens and even in-person interviews.
5. The take-home is simplified, but similar to the sort of thing you will have to do in your actual work, so doing it gives you extra information about the job itself.
6. The take-home is designed to result in something that's fun. Many of our candidates say that they enjoyed doing it. Even some of the ones who fail it. Some even say it's a reason that they choose us over some other company.
It is true that some good candidates simply refuse to do take homes on principle since they have lots of choice. To try to combat this, we make sure we try to explain why it's worth your time.
If I told candidates 'congratulations, you've got a 1 day onsite interview' (where in the morning you're on your own and we send you home at lunchtime if you've not made good progress) instead of a half-day take-home (in which we are very flexible over how much elapsed time you need) and a 1.5 hour onsite extension, do you think candidates would prefer that?
My biggest issue with (un-timed) take home assignment is that often, as a candidate, this ends up with me investing a nontrivial amount of time, only to not hear anything back. If I'm going to spend multiple hours on something, I would kind of like something in return, such as feedback on my work. Very, very few companies will give any feedback since they don't want to be sued and/or have the candidate try to rebut the reasons why they were turned down.
On the feedback point: this is a perfectly reasonable stance. Perhaps I should give better feedback to our candidates.
Part of my concern is that I've seen candidates show me emails from their recruiters that have attached all the detailed feedback I've give to their previous candidates.
The other thing is that at some points in the hiring, you're really competing against the others in the pipeline, so you might have actually performed very well, just not quite as well as one of the others. I have also seen one candidate fail based on multiple independent personal disrecommendations rather than on performing badly in the test.
I have noticed in previous interview processes that a lot of people think they failed for a reason other than the reason they actually did fail.
I do think it'd be more fair for me to give better and more detailed feedback, but there are a lot of pitfalls with the most obvious version of that. Perhaps there's room for a bit of disruption with a good solution to this problem.
I think your issue with candidates showing you emails from their recruiters is actually an issue with recruiters more than your process. Recruiters will do just about anything they can to make the placement.
If you're in a situation where a candidate excels on the test but gets passed over in favor of someone who did even better, then, good for you. :) "We decided to go with another candidate at this time, but here's a little feedback on your coding project," would go a long way with me. If you're really feeling generous, a referral into another company would be a great thing.
Someone who fails because of personal disrecommendations, you can just give them a generic "We reviewed your coding project and here's what we thought of it... but we decided to go in a different direction. Best of luck on your search." (I'm assuming these people fail because they're assholes, not because they're incompetent, right?)
---
[0]: Seriously, guys, if you're reading this... I chose the project interview because I fall apart when being put on the spot, and I told you that. I don't have someone watching over my shoulder at work... and it's a good thing, too, otherwise I'd end up having anxiety attacks.
if your take-home is a "half-day" which means... 12 hours? half a work-day? what? that does not sound appealing to me. unless you are actually building something unique, offering more stock, or more money, or a better work environment i am not sure how you can explain it's worth it to someone to go through your process and essentially wasting an afternoon to a week of their life doing the take-home. _especially_ when most companies will reject you for a lot of silly reasons.
in a perfect world your scenario would be "fine" and all your points your company may actually do. but across the swath of companies there is no guarantee of this.
for example you cite #4 as an point for doing take-homes, except i seriously doubt many companies mask/hide who the person coding it is. they usually just hand it to one of their engineers and go, "evaluate this" and now you're at the mercy of what kind of engineering person he/she is and whether they're currently too busy to give you a fair shake or any other myriad reasons.
you can barely get companies in silicon valley to admit there is bias let alone set up some blindness against it. unless they were able to submit the initial job application anonymously, how do you know your process isn't bias at that point from your HR person? maybe you do account for that, but how many companies realistically do that?
and again without knowing your company or your process, _every_ company with a take home says, "take your time", "we're not in a rush" etc but never actually tell you that they want just <X> and if you do <X> that's enough. people literally have no idea how you're going to judge their take home. maybe the question is unclear, maybe your view of a "good enough" ui to them is a ui that takes longer than the time you've alloted them. maybe you don't like it when they write their javascript without semi-colons but you don't bother to tell either the interviewee or the grader any of that. then there is also the problem that even with "correct" code a lot of engineers who review take-home tests just _love_ to nitpick to disqualify possible candidates. and if you _do_ have a process in place to guard against that, you would literally be the first company i've heard who goes that far in their interviews.
i don't doubt the way you're handling it is getting the results you want and is the best way to hire. but i doubt that's how other companies are handling it. now you expect people looking for jobs to be able to discern between you and the other group? you want me to apply and assume good faith that your process will only take half a day and is "fair"?
edit: i tried editing this to make it not sound very antagonistic, but it is late here in sf so it may come off like that so sorry if it does. i don't disagree that take-homes work for you. i just don't think most companies in the bay area have thought it out very much other than, "use take-home test in interviews"
In terms of what you have to do for the take home to be a success, we explain that fairly clearly these days. I'm now on the 6th version of it because I ask for feedback from the people who do it and try to improve the wording and make it more clear over time. I also provide contact details for people with questions.
It's also a fact though that simply achieving the task is not enough if the code you used to do it is sufficiently poorly factored or overcomplicated to a ridiculous extent. We don't mark people down based on superficial coding style. Fails get marked by more than one person, the marking team is small and regularly talks about the individual tests they are marking, but there'll definitely be situations where working code gets marked as fail.
The person marking the take home does so before they get access to the CV. They do usually know the name, we'd need a more complicated process to redact names from submissions, but it might be worth doing.
I am sure there are ways we can improve our process, and I am aware that there will be lots of companies out there with a process even worse than ours, but I wanted to talk about it, partly as a way of getting feedback with the aim of improving it more, and partly because I hope that others can learn from what we've done.
I have been pretty happy about the team we've built with this process compared to teams that I've been involved with building in the past, so there are definitely good parts to it. The two big concerns I have with it are 1. are we being equitable with peoples time and 2. can we reduce the number of skilled candidates who refuse to do it on principle.
They shouldn't be used for a candidate with a relevant opensource profile. In that case, you can already assert that they have the technical skills. You can ask them about their projects to make sure it's their work if you want. Personally I'd go straight to communication skills and cultural fit.
For a candidate without much opensource contributions, take homes help both sides:
- Candidates get the chance to prove that they are smart and fast learners (especially if you want to get into a slightly different area) - Companies don't have to worry about candidates who can't do fizzbuzz - Neither side have to do the horrid live coding (yeah, nobody likes that, even the interviewer)
The awkward thing for me is to deal with candidates who seem to be good at _something else_ (that is not a good approximation of the work at hand). I usually ask them why they want the position. Usually it's just that they "want to get into a slightly different area" and fortunately most agree that a take home is fair.
Trying to get companies to even talk to me about positions that are not like whatever I am currently doing is like pulling teeth. I used to work in real-time embedded systems, signal processing specifically. I shifted to NLP and ML for reasons, but one of them was not "I'm tired of/can't hack embedded and want to try something else". I would love for companies to give me take-homes to prove I can still do embedded. Instead they just ignore me.
You lucked out then, I think. If they were looking for a front end developer and asking questions about semaphores, something is definitely wrong.
it was just one of those situations where the vpe is a very smart person, but has no clue about the front-end, and apparently this was a pet question of the vpe. i don't think i "lucked out" since the people i would have actually had day-to-day interactions with were fine people. but yeah that is definitely a blind-spot for them.
I really love being a software engineer. The job application process is the biggest threat to me keeping that passion.
Larger companies are aware that you might be pursuing other opportunities, and are usually willing to postpone extending a final offer until the time you are ready to accept it or at least have other offers to compare it to.
I hadn't really thought about that before, but yes the time issues could be very challenging to juggle if you aren't in an ideal situation.
I would be wary about recommending most people write cover letter templates. I can tell a templated letter most of the time. I'd recommend just writing a few sentences from the heart. Why you're great for them. Copy+Paste doesn't work, since each company is different and your background will connect in different ways. Keep it short and just ask to learn more.
For cover letters, I think I'm using template more loosely and probably should have provided examples. The template part is for describing myself, however I still write out a paragraph or two specific to that company. I think I noted on researching the place before hand so you can include your favorite things about the place in the letter.
If you a straight single male, you have an important decision. If you value the immense professional opportunies of the Bay Area more than finding a partner, then do move there. If you think that finding a partner is also very important, then consider finding your job someplace with better ratios. If the Bay Area 20-40 dating pool is something like 3 male to 1 female, that means 2/3 of single men will be without partners.
[0]: http://visualizing.nyc/bay-area-zip-codes-singles-map/
[1]: http://blog.sfgate.com/stew/2014/10/02/study-says-silicon-va...
[2]: Ibid.
WTF is the point of giving these work sample tests if they're not sufficient proof that you can do the work? And how can anyone think actually programming things into a computer is superseded by asinine whiteboard sessions that have less in common with the day-to-day of programming?
IMO, after the take home test, the in-person should be a couple hours or half day for personality fit and maybe some loose questions to determine if you actually did the test yourself. Mainly, the in-person interview should determine if you can tolerate sitting next to each other all day.
So I've started giving negative Glassdoor reviews to companies that abuse these tests, either by handing out broken or excessive ones or by wasting a full day of my time with algorithm questions AFTER accepting the test. I suggest everyone do the same.
My test was completely open-ended. Trivial task (script to copy data from .csv to a sqlite, optionally notify on the queue at the end), but make it as production-ready as you can/want. I don't think I could learn as much about people's abilities during an interview, as I could from that task. I mean, the 1 person who made a proper package, a short .rst install & use documentation, and included crazy unicode test cases was immediately on the top of the list.
Do you really think that "crazy unicode test case" person really only spent an hour on your test?
This seems to be the common complaint, but really this is discussing the idea -vs- the implementation. Some examples here of checking specific things that were not in scope, or tasks that take whole day are really disappointing. And I agree there are loads of really crappy tests out there.
But yes, you can create a test that's easily doable in 1h. As for the crazy edge case tests: probably. It's still a reasonable thing to check for, but often people don't. (having a non-ascii name helps here) If you have simple enough and open-ended enough tasks, I don't think extra time helps the candidates in any way. I mean, either you have experience doing something or you don't. Even if you spent, for example, X hours researching "what does production-ready mean?" and related topics, I don't believe you'd produce as good result as someone with actual experience. (yeah, I could see that in the answer)
I'm not sure I follow your logic. They would spend just as many hours, at a more inconvenient time of day without the test. I did the task myself to a level I'd expect at the time to make sure it does not take "many hours". If that simple task would take people many hours, then I hope they didn't apply... (or they would probably fail very soon if hired at all)
Do you really think "the 1 person who made a proper package, a short .rst install & use documentation, and included crazy unicode test cases" spent only an hour?
While I agree that interviewing is a bit of a crap shoot, the above paragraph from the OP is actually a pretty good argument for not doing anything to prepare for it.
If going into interviewing mode means you stop working on your own stuff, or having free time, or generally doing stuff that a) you enjoy and b) make you better at your work (rather than interviews) then you're paying a cost alright, and it's at least comparable to the cost of take-home coding exercises.
If you're just applying anywhere you can it probably means you don't care where you go anyway. If you apply in sufficiently many places eventually you'll find the one place where they like you, you like them, you got what they want and they're willing to hire you.
In fact if you take the time you'd waste in getting good at interviewing and invest it in learning a new language, or framework, or following a MOOC etc, you'll probably end up with much better qualtiy work, because your actual work skills will get better. It might take a bit longer to get there but you'll (probably) stick around for longer and you'll get more out of it.
I've written a self-hosted search utility for HN threads posted by whoishiring which I'll be using in my upcoming job hunt in a month or so. It performs regex-based full-text searches of top-level comments in threads posted by whoishiring. I hope it can help someone in their hunt!
Seems pretty hefty for a junior-frontend-position.
Isn't the employer referring to luck an admission from the employer that interviewing has a lot to do with luck?
Saying "luck" implies several things: - You just weren't the right fit. - I don't wish to imply your skills are lacking. - I hope you succeed, even though I wasn't able to help.
They're rejecting you because you weren't good enough (or because they suck at actually identifying talent).
> Saying "luck" implies several things:
None of which are good things about the process, because a process should be designed to drive the percent influence of luck to as close to zero as practical.
> - You just weren't the right fit.
Bullshit non-reason.
> - I don't wish to imply your skills are lacking.
We also don't want to admit that we may not have any idea what we are looking for or how to evaluate it.
> - I hope you succeed, even though I wasn't able to help.
If I don't need improvement but I succeed elsewhere in a similar job, that just means you screwed up.
1. Contact my list of (currently) 14 local recruiters from different companies with my resume, and tell them what type of job I'm looking for, salary, and location within the metro area.
2. They send me a list of jobs with the descriptions abd salary range - something you can't usually get without a recruiter - and I tell them which one I want to be submitted to.
3. Keep a list of the jobs, status (submitted, phone interview scheduled, in person interview scheduled, waiting for response), recruiter information, etc. so I don't get double submitted.
Historically, since 1999 and three years out of college, it has taken me about a two-four weeks to find a job, usually paying significantly more.
The last round I just went through. I had 13 prospects, 7 phone interviews, 3 in person interviews, trying to schedule the other 4, and will probably have four offers by the end of the week. This is with me being picky on location, salary, and environment.
I'm not trying to say that I'm a special snowflake. I know a lot of people that I work with that could do the same.
The high volume apps and crapshoot stuff - 100% yes.
Stuff like template cover letters? Nuh-uh. I have a structure that I stick to - hey, saw you guys are doing X and I think X is cool and wanna help y'all build it up, blablabla - but it's not a fill-in-the-blanks template.
> Additionally have a good set of STAR questions ready and memorized. [...] Tell me a time when you disagreed with a manager… those types of questions that we all hate, but you MUST know them and be familiar with them.
I can spot a memorized behavioral from a mile away, and it is without fail a terrible move. I mean, yeah, go through the questions, jot down a note about that time Alice did that thing or you had to help Bob out with that other thing in case you blank out when you get the question, but don't come up with an answer and memorize it. The point of these questions is to demonstrate that you're cognizant of team dynamics and the need to manage and navigate them.