I turned my interview task for Google into a startup
uxdesign.cc
uxdesign.cc
I’m still not sure why people expect it’s easy to fit this in and it’s the last thing you want to do after a hard day of work.
I’ve just started taking a full day off for programming exercises I do when interviewing. It allows me to give well thought through and tested solutions even if I make some small mistakes or misunderstandings. Crazy I know but necessary usually these days.
Apparently its got something to do with the whole team getting together and publicly code reviewing your assignment. And if they feel like the code doesn't fit even to the exact size per their liking, its a reject.
I have had a similar experience, where a perfectly done assignment with unit and functional tests, documentation and all the bells and whistles, It took me two full sleepless nights to get it done. But apparently they rejected, for me not using a specific design pattern which one reviewer likes.
It's absurd to the point of disbelief.
Trust me the take home assignment is a sham. People inside get their friends and alumni hired with no hassles. They only give you these tests because they need reasons to reject you.
How magnanimous. Who the hell is subjecting themselves to this?
The process was much the same as you described: multiple day test followed by taking two days off to fly out for the interview. Except I didn't get the job and nobody who interviewed me ever looked at the take home test.
The interview process being long or whatever or requiring on-site visits is reasonable, but pre-work is probably eliminating good candidates, or attracting people who don't pay attention to their contracts.
I'd wager your company must have the worst devs, those who have little self respect and zero other prospects.
Do you not understand that you're requesting free labor from an applicant? Did you forget the purpose isn't to have the sickest challenge ever but to evaluate someone's code/ingenuity?
How did this become acceptable practice for hiring people? Do any other industries besides tech do this?
I think the only fair option is an in-person interview without homework assignments. Treats everyone the same and doesn't require inordinate time commitment.
If I want to interview at 6 places that just use onsite interviewing it's easy to figure out how to prepare.
I'm not sure where I stand on this sort of thing to be honest, my only experience of anything similar was a pre-interview task to implement a simple 10 entry LRU cache, and after getting the job I was told the only reason it was there was to weed out time wasters with next to zero skill being sent by the recruitment company.
A 2-4 hour challenge is less time than I've spent in interviews at some companies, and would gladly have done it prior to an in-person interview given the option. That way, the actual interview time could have been spent talking about things of value, rather than having them stare at me while I white-board out problems around graph data structures and recursion and whatever other trite trivia they can come up with.
If you give me a 2 hour challenge with a timer so I can't possibly take more than 2 hours, I'm fine with that - but you won't accomplish the "lower stress" goal.
But if you give me a 2 hour challenge without timing? I know for sure other people will have spent 8 hours making super-polished, gold-plated solutions. Can I afford to fall behind the competition? If not, I should spend 8 hours too.
I helped redesign the code challenge at one of the companies I worked for. We (the people across the different technical disciplines we hired for) put a lot of effort into ensuring that:
* the challenge could be completed in 4 hours * the challenge resembled the sort of work people would do on the job * the goal of the challenge was to inform a follow up interview, not punish people * candidates were explicitly told that they were not being timed, but that we expected the challenge should take them up to 4 hours to give an idea of the upper-bound level of effort expected
The single biggest challenge was balancing "what do we need to know" versus "what would we like to know" versus the amount of time we were asking of our candidates.
We didn't hard-fail anyone unless they were blatantly not a good fit from their submission, and I habitually wrote multiple pages of feedback for them so they at least got something for their time if they didn't get a follow up interview.
Again, the purpose of the challenge was not a screen, so much as it was to help guide the in-person interview and so we had something concrete that we could discuss.
Follow up edit: Designing code challenges is hard. You have to avoid something so objective it can be copy-pasted from stack overflow, but objective enough that it can be graded free from personal bias (as much as possible anyway). On top of that, you can't test for MVC+CQRS+FP+SOLID+every-other-possible-thing under the sun, because you have to be respectful of candidate's times.
The previous code challenge (the one I replaced) would frequently take people 8-20 hours to complete, and it was actually pretty simple. As you rightly pointed out though, candidates often read far more into the requirements than were actually there, and would often over-achieve in an effort to stand out. Not only would those submissions waste their time, it wasted ours as well as they took longer to develop feedback from.
Unless your challenge literally stops at, "make X appear onscreen" with no regard for quality, testing, etc. Giving unchecked/unverified time restraints isn't fair. It doesn't matter you're giving more time than it should take to complete. If the task can be done in 2 hours, but you give "6" and Candidate A does it in 3, but Candidate B does it in 32 (but tells you 6) you're ranking two totally different submissions. Candidate B might have a super polished submission, while Candidate A has a baseline submission.
The poster you replied to was suggesting that tests should be either 1) not based on quality of submission and simply rely on difficulty so that only a few candidates can complete them or 2) based on quality and difficulty, but with a checked and verified time to keep the playing field level. However those options are both at odds with "low stress."
So, if someone submitted something that could have been done better, see might ask what could be done to improve it in the follow up interview. A good answer would include the technical bits, and a better answer would describe the time recommendation and why a more polished version would take longer or be considered over-architecting.
This purpose- to inform a conversation with a concrete, familiar code base- is better than both take-home screen assignments as well as the in-person whiteboard exercises, which encourage route memorization and don't reflect the nature of the job we were hiring for.
Two of the last three companies I interviewed at had at least 4 hours of in-person interviews. One of those (for a regular developer position, around 7 years ago) had multiple whiteboard sessions with different people. The problems were trivial to solve if you had access to google or had memorized basic data structures and related algorithms. Instead of taking half an hour or an hour talking about the code I'd written to solve a problem representative of what the actual job entailed, we spent 4x as much time (during business hours) talking about things freshmen learn in CS programs (I'm assuming here, I didn't get a CS degree).
Even if the total amount of time is the same, or even greater, I still prefer the take-home assignment because I can do it on my own time, rather than taking off of work, and - if done correctly - makes for a much interview.
As a candidate, you learn far more about the people you're going to be working with than in a whiteboard session as well.
Absolutely worth it if it gets you the right job. Hell, most people pay multiples of that through recruiters and referrals.
Maybe 10% of them get back to you with an interview request and that leads to a code challenge. It's highly plausible for a senior Dev to be simultaneously interviewing with multiple companies and have 5-10 pending code challenges. That shit adds up...
But the company sees the value in doing it, and many people dont see the value in doing it for themselves.
This rings so true for me re: the last shop I was at. People got off giving "hard" problems and watching dev suffer and then giving high praise for the ones that could take the heat. That place was really toxic.
What I've seen is that people spend the time they'll spend on it, and that's it. Only 1 or 2 people over the last few years have said they ran out of time, and the quality of their code showed that they weren't a fit for the company anyhow.
I normally choose divide by 10 for exams as I could do divide by 3 for exams from a different professor/class.
I know the material cold, know the test cold, and don't have to worry about hidden traps--so I expect to take less than 1/10th the time of a student.
The whole thing seemed like something copied and pasted together by committee, with a strong smell of "PhD CTO" trying to test for intelligence by quizzing on an esoteric corner of their own grad school experience. After about an hour of trying to figure out conceptually how I could begin to implement the things asked, let alone the 6+ hours I thought it would take in practice, I emailed the recruiter back and said "Thanks but no thanks!"
My other recruiter friends later confirmed that they had burned through almost every firm in town with their ridiculous take home exams that no candidate could pass within the allotted timeframe. I think bailing was a good choice.
To make this more fair, why not let the designer work at the company's office, so the interviewer can actually see how much time it took, and the interviewee doesn't waste more time than necessary?
Less convenient for people who have a different job at the same time though.
You took out the time to go to some office. You just spent an hour talking about your hobbies and attitudes and the company's working culture etc. Then, a programmer asks you to balance a red/black tree. You do.. what? You angrily throw the marker on the ground, cry insult, and run out the building? No, right? So then what?
I see this repeated a lot on HN and I'm not sure I'd have the guts to walk out of an interview. To be honest, I doubt many people do.
How about a phone call or a quick email to ask what is their hiring process, what is the work and how it is usually fulfill?
In the current market you are not a seller, you are the buyer. Why should I consider working for you?
My experience is that hireing descicion is so noisy that there are no reason to invest too much since the rate of sucess is barely increased anyway.
The more picky the employer seems the less reason to apply. It might be a internal candidate allready chosen or they are just hoarding resumés to keep recruiters occipied.
The decision is allready made from the from the first minutes ... but you can ruin it of course.
I don't think memorization of an algorithm is what should make a senior level candidate stand out. Senior people need to be able to lead, mentor, self manage (this is a huge one IMO), and understand the bigger picture. "How do we avoid having to balance this tree at all?"
The role of the senior Engineer isn't to tell you how to balance the tree. You, or anyone you instruct to, can simply ask google that or use a library.
Their role is to ask why we need to balance the tree. You very definitely can't ask google that, and that's why you need to hire a senior Engineer.
"Hi <dev name>! I think we may need to optimize memory consumption of this distinct element counting code a bit; I remember there is some HyperLogLog algorithm which should help here... let's check how it goes... (reading Wikipedia page)[0]"
I'm with your comment's parent: I don't think I'd have the guts to walk out of an interview either, especially for a job I applied to first.
For company who reach me, it is mandatory.
I'm not sure this is the best approach...
Have you no common courtesy? I terminate the process as soon as I find out I'm not a good fit for the company or vice versa, no matter who initiated first. Continuing with an interview when I'm sure I'm going to decline is just wasting everybody's time.
I've heard of companies asking for proof of other offers so saying so and so offered me 2x is a very risky play if untrue.
My point is that it is also risky if it is true, but the other offer is not a job you would take.
I have walked out of interviews as well. Sometimes the interviewer and I discover together that the recruiter we worked with didn't know their job, at all!
More often, though, it sort of was clear from the start of the interview that the company would not be a good fit for me. I would tell them so, and my reasons why I thought so, and leave after thanking them for their time.
If they ask me to do some simple programming task, I ask them if they have looked at my Github repository and what they think they will learn during the simple task they could not from my repository. If they do would have a good answer for that, for example they want to get to know my thought processes while coding, I am happy to oblige. But if they clearly have not looked at my Github repositories, nor have any inclination to customize the interview process, I tell that I do not believe in the validity of the process.
I have also walked away twice during the one-month trial period. Once the company was unable to find a project for me, even though they kept on promising there would be one for me soon. The other time I discovered I was unable to combine working full-time with finishing writing my PhD thesis.
Anyway, I also found that in half of the cases I walked out, the other party did understand and accepted why.
Of course, it is easy to walk away when you know you will find a job soon anyway and even if you would not you will get some support from the government anyway.
If they don't wave you off at the suggestion, you also get to meet everyone and see their work environment.
What I feel is more important is a persons thought process on how they approach a problem and come to a solution.
One hour interview cannot be more than just screening, when split 50-50 to give candidates enough time to ask their questions. It leaves ridiculously small amount of time to the really interesting technical topics. And this discussion is important: CVs are not trustworthy, plenty of people lie or exaggerate the facts — only a live talk can verify the necessary knowledge, experience and skills. It may not be enough, true, but hiring someone after barely speaking to him is unnecessary risk. And hiring someone without necessary practical knowledge and without proving the ability to learn quickly is the same.
Are you sure you meant to say what you wrote? I'm not aware of any place that has figured out how to properly screen candidates in one hour. If you know how to do it, please share, it would help all of us.
Corporations love obsessive-compulsive workers who feel thankful to have the job, are willing to sacrifice personal time towards their business goals and would never dream to unionize or otherwise engage in collective bargaining. They want solitary and competitive workaholics, that's the whole point of 'homeworks'.
I have to wonder if they didn't get the position because they spent more than the advised time for the task.
If that makes them look like assholes, yeah, I can see why someone would feel that way but at least they are clear about their intentions and not insulting anyone's intelligence in the process.
It'd be more useful to know they could execute roughly what I'd expect in 3-5 hours. As in they think quickly, come up with something, get the basics down and are ready to progress or not.
...Of course, if they're doing it at home they could spend 3-5 days on something I'd spend 3-5 hours on and I'd never know...
Maybe the same situation applies in Design somehow? I mean yeah it takes 4 hours to make the product if you happen to have all the graphical elements you will be using already downloaded and organized.
on edit: although I have noticed a disappointment in some places that I have not done a lot of time cleaning up the code after writing it and making everything beautiful and writing a good readme to tell them everything to do and so on and so forth and normally I don't do those things because I spent more than 4 hours because there was stuff that needed fixing and anyway if they wanted all that 4 hours would not be enough.
Coding is like math homework. When your doing the math homework you know when your done, it's very obvious and anyone can check your work and clearly see it's either right or wrong.
Design is like a book report for English class, it's bottomless and can always be improved given more time, albeit with diminishing returns. Design challenges are evil and bullshit, you can poor hundreds of hours into a design challenge and still iterate further.
But people complain that I am not done with the programming assignment if I have not made it DRY enough, or put in tests, or done a readme outlining more advanced than run npm install then do npm run start.
Programming assignments may not be infinitely improvable but they can often be improved, I just don't consider it worth the effort to improve the work before submitting
Agreed, unless they want a good polished solutions, meaning it has been refactored, has decent comments, is well tested, etc.... then it becomes a lot like design where the sky is the limit.
My wife got her first job in the states because of a take home design challenge. Other companies were wary of her because of her foreign degree and no US experience, and she was able to show off in the design challenge they gave her (she spent more time than estimated, but not incredibly much more than that). In this case, it really worked out for her.
If I asked a candidate to spend 4 hours on something and they come back to me with 40 hours of work, it isn't what I asked for. Despite it being potentially amazing, that person ignored the task.
A 4-hour task would probably yield 1-3 mockups. Maybe a launch/splash page, the home leaderboard page, and then a page showing the details of a specific user.
Even these 3 pages would be pushing your 4 hour time limit, but that is really the most I would expect.
So if I was interviewing and comparing candidates and one candidate submits a 40-60 hour project while the other candidates submitted a 4 hour project. I can't really compare the two. I would probably throw out the guy that ignore what I asked them to do by spending 40-60 hours of work on something I only wanted 4 hours of work on.
I had an interview once where we were on the phone, I got the task, and they told me they'd call me back 2 hours later.
Might be easier if the office is far away.
My last company they flew me from another continent to do a 3-days assessment, I worked with the team on a legitimate feature(that would be trashed after as they couldn't use the code because I was unpaid). I liked it, I met the team, I interacted with them, I did the task and got a job offer in the end.
All engineers at the company highly valued the 3 days assessment because we got to select great people to work with, but we were getting too many candidates giving up or false negatives, they eventually cut it down to 1-day despite our protests.
Honestly it's stuff like this, that has me contemplating giving up this career path because there's just no more room for people in their 50s with 25 years of experience in information technology, who aren't willing to sleep at the office, drink your "insert trendy microbrew here" on tap, and suffer through a ludicrous ask like "we want you to work for three days for absolutely nothing to see if you're a good fit".
If you are traveling internationally, then you have to add 1 day of travel on each side of your trip. Plus the 3-day "interview" or challenge or whatever. So that is 5 straight days of interviewing for a job. That is actually asinine.
If you have a current job (most software developers do, especially the good ones) then that is an entire work week that i have to request off at my current job to go to unpaid work with no guarantee of getting a job afterwards.
I can't believe someone has actually done this. It is crazy!
I don’t think Google necessarily requested a full end to end product. A nice logo/app icon for the “branding” portion and some UX concepts can definitely be fleshed out in a single work day, especially with zero tech/biz requirements IMO.
Maybe you’d need to take an extra day just to brainstorm first... but actually pushing pixels, if this designer compressed his output a bit, could have happened in 6 hours.
Also, I do think that some people are able to complete it in a third the time, but I think the more useful evidence is that many candidates complete it and do a perfectly good job, some even with a healthy chunk of time to spare. If it were a totally unrealistic time goal I'd expect we'd quickly notice when no one finished.
The author of this article fucked up when he tried to pass off 5 days of work as an example of what he could accomplish in 5 hours. I am glad he was able to find inspiration from it, but for the success of his startup I hope he also is able to understand other, better ways he could have approached the interview task.
I fixed that problem for my candidates then turned it into a startup:
Ideally that wouldn't be a legal policy for my company to enforce, but that's the reality for me right now.
From a practical perspective, I'm not sure that spending 20 hours+ working on something for free is any more/less likely to make you less productive at work than doing it for pay, but I see where the letter of the law comes in.
Every job I've ever had required me to get advance permission to do paid outside work, so such a rule would eliminate most people who are both ethical and employed.
It’s one of those things that sounds easy but really, really isn’t possible to do in the time allotted. I learned a lot about interviewing people that day.
> I learned a lot about interviewing people that day.
Could you share what you learned?
If someone made it to an onsite and you don’t know whether they can add a button in swift, something failed in your screening process. If you’re testing how someone navigates a codebase, you can just look at it with them, and let them drive the chat.
If you’re testing an engineer for a serious job, do an algorithms test. If you’re testing an engineer for a specific thing, test that specific thing. Both of those should be handled in the screen, not the onsite.
IMHO, the onsite is about seeing how people think. Whether you can jam a button into a repo doesn’t tell me whether you can think or not. I guess it tells me whether you get flustered, but it’s pretty unfair to design things that are impossible just to see if people break.
That candidate turned out to be awesome but I remember the interviewer telling me after they interviewed them “well, they couldn’t add the button, but as they were doing it, I realized I wouldn’t be able to add the button either so my interview was inconclusive”, and I replied “well it sounds like you need to design a better interview question”. The worst part was, the interviewer spent the first 20 minutes of the interview talking with the candidate before giving them 25 minutes to add the button!!
There’s a question we gave candidates really early on which we no longer do because it biases towards math nerds that I absolutely loved. It’s based on a movie called 13 Tzameti. I’m probably screwing it up because it isn’t my question but it’s basically like this:
You’re in a dark room after being abducted by a gang. The lights come on and there’s 12 other people in the room in a circle and everyone has a revolver with 1 bullet in it (6 slots in the chamber). Your instructions are to spin the chamber on the revolver and, when the lights go out, shoot the person to your right in order.
What are the odds you make it to the next round?
It’s a crazy question and, what’s even crazier is that for some reason, as you increase the number of people in the circle, the odds of making it to the next round converge on 1/e. No one has figured that out in the interview. Also no one has figured out why it converges on 1/e so if you have any ideas, let me know.
I like this question because it shows you how free thinking people are. I dislike this question because it biases towards smartasses and probability nerds.
Being a senior engineer is knowing the difference between doing what your told and figuring out what needs to be done to achieve project success. In this case, getting to the next round.
Next question?
Of course, many game theory calculations assume all players know the payoff matrix and equilibrium strategies of the others; making sure the bullet isn't in the next chamber is the rational universal strategy if the game has a fixed number of rounds.
Presumably the actual question has a bunch of provisos making sure you can't intentionally miss, or accidentally miss, or dodge, or shoot early, or fail to pull the trigger, or shoot the gang.....
Your description sounds close to the wikipedia description of the first round of that movie (https://en.wikipedia.org/wiki/13_Tzameti), so hopefully it's not just the wrong probability to analyze, but naively, the setup sounds like it would have slightly above 5/6 probabilty of survival for the first round. But some aspects of the question setup also almost remind me of the classic networking algorithm of slotted Aloha, which does yield an optimal utilization (packet survival) rate of 1/e in each round (for an altered question setup).
So, let's see. Suppose n is very large; then the probability that you live is approximately equal to the probability that your predecessor does; call that q. Then, as above, you live iff your predecessor dies (probability 1-q) or your predecessor lives but fails to kill you (probability q(1-p)). So q = 1-q+q(1-p) = 1-pq and 1 = 1/(1+p).
That's a long way from 1/e, and a quick simulation seems to confirm this answer. It doesn't change a lot if we assume that a random person always fires first, instead of you, or if we assume that you're always last (which I think was the situation in that movie).
If everyone has a revolver with n slots and one bullet, and they all fire at _you_, then you have a 1/e chance of survival for large n, but that sounds too different (and too easily found to be 1/e) to be the right thing.
The probability p(n) that a permutation of n things is a derangement -- which tends to 1/e as n->oo -- satisfies the recurrence relation p(n) = [(n-1)p(n-1)+p(n-2)]/n; is it possible that the correct statement of the problem here leads to that same recurrence?
The question is "what's the probability you die?".
Edit: You can also challenge people to think about the problem where everyone fires at exactly the same time OR random order since people have different reaction times.
Edit 2: "The probability p(n) that a permutation of n things is a derangement -- which tends to 1/e as n->oo -- satisfies the recurrence relation p(n) = [(n-1)p(n-1)+p(n-2)]/n; is it possible that the correct statement of the problem here leads to that same recurrence?" <--- My engineer says that derangements are the correct key to the convergence.
If everyone shoots simultaneously (so in particular everyone does get the chance to shoot) then I die iff the one person shooting at me hits me. Probability equals probability that a given shot hits (so in this case 1/6). No dependence at all on the number of people.
If everyone shoots sequentially, this seems just like what I described above. Probability of death is now p/(1+p) instead of p, at least if you're first to shoot and n is very large. (Unless something's very broken in the heuristic argument I gave. Let's try another. First approximation says a fraction p of people die. But that's not quite right because people who die don't get to shoot, so next approximation says we get p(1-p). Next approximation says we get p(1-p(1-p)). Etc. We can either solve the obvious equation, or else notice that we're getting more and more terms of the binomial expansion of p/(1+p).
I don't see anything here that doesn't look, in a crude approximation, like a fraction p of people dying (p, again, is probability that a given shot hits, which in this case is 1/6).
I must be misunderstanding something in the problem statement here. Perhaps it would be clearer if I'd seen the movie?
Oh, what about this version? You shoot first, things proceed cyclically, and we keep going until just one person is left. What's the chance that it's you? Naively it seems like this should be approximately 1/n no matter what p is; shooting first could confer some advantage but surely it can't be much for large n. So this can't yield anything like 1/e either. Drat.
"The current statement of the problem is that you have n participants, with 6 slots (1 loaded) in their revolver, each firing to the person on the right."
import numpy as np
class Shooter:
def __init__(self):
self.dead = False
self.right = None # The person to the right
def simulate(n):
# Simulates a round with n shooters
# Returns the ratio of survivors
shooters = [Shooter() for i in range(n)]
for i, shooter in enumerate(shooters):
shooter.right = shooters[(i+1) % len(shooters)]
np.random.shuffle(shooters)
HIT_PROBABILITY = 1/6
survivors = n
for shooter in shooters:
if not shooter.dead:
if np.random.random() < HIT_PROBABILITY:
shooter.right.dead = True
survivors = survivors - 1
return survivors/n
Simulations suggest that the survival probabilities do not converge to 6/7 if you add shuffling. This makes sense, since the survival probability for the random shuffling version must be strictly less than if you are guaranteed to go first. >>>sum([simulate(10000) for j in range(1000)])/1000
0.84630759999999981. The button doesn't have to do anything
2. You give them a fast computer with an IDE loaded with the project
3. The developer is familiar with the language, UI framework and IDE
4. You aren't doing anything crazy and uncommon like using a non-standard UI toolkit or using an ad-hoc source code preprocessor
5. The project can be built and run with a single command and can be built and start in less than a minute
I opened the PDF to find not one, but three separate tasks. Completion of all three was expected, with an estimate of about two hours each. One of the tasks was to replicate Apple’s ‘Reminders’ app in its entirety, backend sync functionality included. Another, a task requesting Visual Studio (iOS devs have no need for any experience with this).
I promptly replied declining to continue the interview process. If you’re ever in a similar situation, interviews can sometimes tell you more about the company than they can learn about you. Good chance I dodged a bullet, and could have been working for someone setting highly unrealistic client deadlines, with the expectation that I can build something in any technology proficiently.
For a long time I thought it was perhaps due to poor sync with the Mac, since sometimes I manage reminders from there, but the same thing happens with the wife's phone and she doesn't sync Reminders. She has a single daily reminder at 10pm. Sometimes it shows up 4 times. Sometimes 4 times and 1 disappears for a net of 3 reminders. Sometimes just 1 shows up. Sometimes none of them show up. It's bizarre.
I've stopped thinking about it as "glitchy" and more "the new Apple way".
Perhaps you should try logging off and logging in again.
I totally agree.
He let me reschedule for later that day but seemed hostile and grumpy throughout the whole thing. Didn't get the next round.
And they are all, all, "fixing their Jira workflows". Constantly. What a time-sink of a tool, as commonly used. I'm convinced at this point they'd be better off letting their dev teams use whatever, and just have human-driven processes for collecting all the (mostly meaningless) metrics they always seem to need to report upward, rather than trying to make one tool do everything automatically. Pretty sure Jira and other heavy PM tools are typically the sort of software/process that Graeber calls out in Bullshit Jobs: adding a ton of work out of proportion with any real benefit, to make everything fit in a computer and on a spreadsheet, rather than reducing work.
Means a lot of letters from kids get read only by the secretary till the identify it and destroyed.
The good part is that it was the last step, and 50% of the people from the last step were given an offer, so it wasn't that bad (though I'm afraid that the offer itself was maybe too low compared to my previous works).
We do pay a good rate for the time we instruct people to spend on the coding test. We value our people and prefer starting the relationship generously and in good faith.
So I suppose if you're honest about it, and you give a fair estimate of the time required, then what's the problem?
We're not evaluating them on whether they got the same answer as us. We care about hearing aloud their thought processes.
0: https://slatestarcodex.com/2014/07/30/meditations-on-moloch/
I often give companies a list of open current open source tasks I'm working on. Pick one and I'll complete it for your interview. Every singe company turned me down, except one, who just accepted one of the tools I had on Github and examined that.
The startup sounded interesting, and I might have been prepared to spend the recommended 5 hours on the code test, had I had a chance to actually go into the office and meet the team...!
At least at the end of a Google interview you get to work for Google.
I did an interview and one guy just didn't want to be doing interviews it seemed. Later when I was asking questions it became clear that he was a "senior dev" who just didn't want to talk / work with anyone he deemed less knowledgeable or just not capable or something. I also find out he's the lead for the spot they're hiring... bad feelings started for me.
Later I got some positive feedback that the take home assignment I completed was one of the only fully completed and "thoughtfully done" assignments they received (one of the only times I received useful feedback during a recruiting experience).
Bad vibes aside, I was a noob and beggars can't be choosers so I was surprised when they asked for a second interview and felt I had to go to the interview (need a job!). Second interview and it was the same thing, and when I asked questions he didn't even answer them really / his random technical statements seemed like sort of ultra truisms / not related to the actual problem we were working. It also seemed this dude's team kinda worked on their own island (kinda appealing) and he was the guy running the island evaluating people (very much not appealing). More bad vibes....
It was a big corporate place (good pay, benefits I had heard) so that meant, MORE interviews if we were going to move forward..
But by that time I had a good interview at a small place (less benefits, probabbly less pay, fewer people to learn from / with, long commute, but it seemed friendlier and the lay of the land was way more clear)... I decided that I just had too bad a vibe from the guy who would be my boss so I declined the interview.
I was pretty honest with the HR person that just from the interview this guy really seemed like he didn't want to hire me / didn't really want to work with anyone like me and if they were going to hire someone they might want to work on that. The HR person said "yeah we know".
I still wonder what that job would have been like, would have been really nice to work at that place...but that guy... you just get that sense in an interview sometimes.
I eventually made the dashboard but it took 16 man hours; on the on-site, the interviewers implied they didn’t like it as it was not feature complete. (I called them out about the BI tool; they weren’t happy about it but admitted I was correct that it would be more efficient)
Now that I have had more experience as a data scientist, the real-world response to such a framing is to push back against the PM and write an implementation spec with a defined scope.
I guess as a programmer I'm too logical. You tell me X hours, that's all I'm going to spend. For one of my past interviews I was given a task to make a multiplayer battleship game using whatever I wanted, and was told to spend 2 hours total and they didn't expect me to finish.
I got some rudimentary client/server communication going and that was it. No game logic at all.
Didn't get the job: "However, we would have liked to have seen you get further on the project in the same amount of time."
Oops, 2 hours.
It was such a short timespan that I assumed it was a trick question, and they wanted to see if I could come up with a creative solution that technically met the requirements but was extremely simple. I implemented a board which you could put pins on, and a text-based chat system using websockets. The idea was that it would work like a table-top simulator.
Nope, turns out they wanted a real solution. I wonder how many companies who use these examples actually attempt them before using them to hire people. My guess is they might be more realistic if they did.
You can learn a lot about a company's pain points by the questions they ask during the interview...chances are they're problems they're struggling with at the moment.
Ironically enough I just moved to another iOS job and have been sitting in VS for the better part of the last couple of days. Some shared systems are written in C# so all developers basically have to use it at some points.
I agree it shouldn't be a part of the interview though.
So clearly the process isn't working here.
Also, OP launched on product hunt today. Calling them a "successful company" is generous if not outright false, though I wish them every success.
Stated less dramatically, what happened here is "I turned my design interview prompt into a real piece of software". That doesn't imply that google's interview questions are too hard. A software company asking for a deliverable that approximates software is sane.
I think the time that google demands for their take-homes is a bit much (explicitly, this is 4-6 hours. in practice, it's 20 to 30 if you want to deliver at high caliber). But the questions/prompts themselves are intentionally quite boring, and exist to see how far you can take it.
I found them to be pretty good. These kinds of questions depend somewhat on chemistry between candidate and prompt, so they ask more than one of them, which is great. The takehome I picked was the only one of the 3 offered I could even pretend to care about. Of the two asked onsite, one I felt I delivered on at only the most basic level, and one I think I could have credibly patented / raised a series A for were it a thing I cared to spend 2 years on.
This is a problem with a lot of take home assignments of many types (not just programming). If someone has landed an interview at a company they really want to work for, it's almost not rational for them to just bang out something that's "good enough for government work" some evening rather than taking the time and care to really do it properly.
But this doesn't scale if they're interviewing at a number of companies and/or otherwise just don't have much free time.
And sometimes its easy to memorize such solutions. Translating a real life problem into a computer science one requires some skill.
Why? The big tech companies offer high salaries and get lots of applicants. They can afford to be picky.
And by the way, OP went above and beyond what they asked of him. In fact, there's a chance that this hurt his chances.
>This is a visceral demonstration of how absolutely ridiculous interviews have gotten.
This kind of format isn't standard across the industry.
I do a lot more writing than programming and, for someone for which that's one of their primary jobs, I would absolutely want to see writing samples--and, if they didn't have one they could share, they're going to need to write something custom.
I honestly don't get the max 1 hour interview process. You're probably not that special. I guess I did just have an interview over lunch once but I had known (and worked with in various capacities) the person making the hiring decision for years. Other than that, I've always had multiple interviews, if only so that multiple people could talk to me. As an interviewer, I really like having the perspective of multiple people precisely because it is a very imperfect process and people miss things.
As I said in another comment, (paid) interning and hiring someone as a contractor/consultant for a fixed period are great for situations where it works for everyone. But, if I'm looking for a new full-time position, I'm almost certainly going to pass on a position that doesn't carry with it the presumption of ongoing employment.
[ADDED: And, yes, some companies have an official probationary period but AFAIK that's mostly reserved for when a hire really isn't working out for some reason.]
I was asked to come in for a face to face interview, for which I made clear I was having to take a day off of work, which was cancelled a few working hours before (so I wasn't able to cancel the holiday) without an apology. I was then interviewed again by phone and told that there was 'a bug' in my code and that I should try to find it and resubmit it without any other details. The spec was a puzzle with lots of weird edge cases and horrible inconsistencies.
I decided at that point that I didn't want to work with them.
I am so glad they didn't want to go further as I am sure they are a nightmare to work for.
I don't like all aspects of its design but after getting through its initial quirks the Android Simple-Workout-Log app is dead simple and bare-bones and works quite well without the busy graphics.
EDIT: additional point.
When I pressed them about the relevance, they indicated that they often have heated debates on all manner of topics, so they wanted to see my thought process.
I enjoy solving complex problems, but socio-ethical problems are way outside of my wheelhouse.
I politely indicated that I didn't think the company was a good fit for me.
Why would you sabotage possible good candidates just so you can get your needless debate rocks off?
I would be very happy to have answered that question and would be a plus one in my books if I can have these types of heated talks with my coworkers.
And led to problems with group-think and an inability to think in different ways.
Now granted my hiring sample is less than 100, but that has been my experience so far.
Maybe I'm living under a rock, but I've never heard of that. Would you mind sharing a link?
> Though David Rowe, a veteran architect of the Wharton forecasting model, has played a key role in developing the firm's econometric model, the senior staff, including Miss Eickhoff, Judith Mackey and Lucille Wu, is mostly female. Mr. Greenspan explains the gender bias with the free-market pragmatism that has become his hallmark: "I always valued men and women equally, and I found that because others did not, good women economists were cheaper than men. Hiring women does two things: It gives us better quality work for less money, and it raises the market value of women."
That is, just a few decades ago, the leading economic consulting firms in the world—economists!—were regularly overpaying men because they didn't want to hire equally capable women, such that Greenspan could find an obvious mispricing in the labor market.
Imagine how much more poorly people who are not economists and not owners of their firm must be making hiring decisions on much less blatant biases than gender.
I think there are multiple solutions to a gender wage gap resulting from markets with irrational participants, and reducing the market value of the overpaid gender is a perfectly valid way to accomplish it. I think that's what he's doing.
It is not. But they cannot ask you "did you vote for party X? Because everyone here votes for party X and it would be awkward to have someone with Y sensibilities", that would be discriminating.
If the purpose is to do what you say, then you have to say that. If in an interview you find yourself trying to trick the people interviewing, for any reason whatsoever, you're not clever, you're a dick and your company, by extension, is a bag of dicks.
Heh, I actually wouldn't have minded that too much - but in addition to being a software engineer I'm also a former Army officer.
In any case, I think such a task can be relevant, if you're working in a fast-paced and competitive environment (esp. one with a lot of non-technical staff) you need to be able to hold your own in an argument. You wouldn't want to be the guy who is always right but gets overruled 99% of the time because you're unable to persuade others.
> ...but socio-ethical problems are way outside of my wheelhouse.
Mine too, and probably 99%+ of the world's population. But that doesn't stop most people from having strong opinions on subjects they don't understand.
Then you'll hire a bunch people who like arguing about things they aren't qualified to argue about. I'd much rather have a coworker who admits what they don't know and is willing to learn about it rather than someone who is willing to vigorously argue in support of an arbitrary position.
On the other hand, I don't want to work in a group where the right answer only gets picked if it's backed by someone with an assertive personality.
Ever more reason to go outside ones comfort zone.
The answers ran the gamut from lazy to fantastic to terrifying. A lot of answers where generic "coalition building" variety. The better answers identified key areas to focus on like infrastructure, basic services, etc. The best answers had clear goals and possible government structures supporting accountability.
Bad answers had the exec consolidating power and crushing opposition. The worst answers had the exec killing people to achieve their goals. Not joking, I had several answers that where "I would find my rivals and kill them".
Overall I thought it was a good question as those who performed well on it and where hired built great sustainable orgs and those who did poorly where usually shown the door within a year. Those who did well where able to take a crazy situation, break it down into smaller problems, and then solve for them while those who did poorly where usually relying either escaping the problem via committees or flat out crushing opposition.
The proper answer is: introduce democratic government, clean up the country, introduce proper amenities (healthcare, etc) and spread the wealth for the benefit of the people.
Fact of the matter is: absolute power corrupts, and plenty of people would loot the oil money reserves for their own benefit if they had the chance. Just have a look at what happens in Russia.
Or if they did start with a democratic government, to limit the voting to certain groups, like the US, Canada, and Australia did before universal suffrage.
Are there any successful countries that haven’t “cleaned up” first but introduced universal democracy?
Democracy means shifting it from a small number of people keeping you in power to all of the people. It's not easy.
CGPGray did a great video on this model: https://www.youtube.com/watch?v=rStL7niR7gs (Based on The Dictators Handbook by Bruce Bueno de Mesquita and Alastair Smith.
But what I think OP meant, is that the bad things which happened in Iraq were not the intended outcome of what the US did. Those other, more horrible things were intended consequences, not mistakes.
Not quite sure why. Some tries:
1. A mistake implies a single decision.
2. Slavery worked as intended, right? It was more evil than mistaken.
Either way, you sure derailed my derailing of the topic, so I'll stop here :)
- Would you discount the person for not being able to answer your question right there?
- Would you think that this is a person who doesn't like to make rash decision (or the opposite)?
- Would you be thinking that this person is wasting your time?
- Would you allow it or have 'em answer right then and there?
Asking a politically charged question on statecraft and judging the answer based on your own personal ideas about how to run a state strikes me as a bizarre way to conduct an interview, even for an exec.
>The worst answers had the exec killing people
Play stupid games, win stupid prizes?
The guy posing Arab Spring interview questions sounds just like those 65 year old talent scouts in MoneyBall skipping over a talented 3rd baseman because the kid “doesn’t have good legs.” Humans are immensely stupid and irrational when it comes to judging other humans.
Maybe because they're faster?
Hardly a success story, in my opinion.
But as an employee, I’d sure prefer being treated like a human being...
The thing is all these weird interview strategies work at some level. Its very self-reinforcing. If a company kept hiring duds, they would change their interviewing style.. or simply go out of business after hiring enough dummies.
Seems like exactly what you want so you don't get people who will be playing the opposite sort of political games than you want (whichever sort you may prefer).
I don’t know anything about Libya’s political and social situation. For example, how many people decided I was the leader? Is the military on my side? Is there an opposition with a tendency for violence? Have they attacked before?
There are too many unknowns for me to decide what is and isn’t a good answer. But definitely, the exec’s response would be good to identify culture fit.
Suppose the interviewee had answered, "I would work towards a proper implementation of Sharia law." or "I would start by building Christian churches and state-sponsored public preaching." or "I would start by replacing all mosques with science-and-technology museums."
At that point any candidate who wasn't hired could have a good starting point for a lawsuit based on hiring discrimination by protected class.
I mean in the US you can sue for whatever you want, but the likelihood of it happening or being an issue is quite small in this scenario.
Suppose your new country has a $1bil in its budget, then spending that billion on schools and hospitals and infrastructure for the people means that there is suddenly $1bil that is not being siphoned of by the corrupt old guard that might still hold levers of power.
If you give them nothing, then they will rebel against your rule. If you try to compromise and give them $500m, they will only be loyal until someone comes along and offer them $750m and then loyal only until someone else can give them $900m. So the game is stacked in such a way that the only way to stay in power is to siphon of the $1bil on corrupt cronies and spend nothing on the people.
That is why it makes sense to purge those old enemies, but that may be difficult in itself.
Of course, the fact that I wouldn't do any of this in real life is also why I'm never going to face this hypothetical.
I'm going to guess "Abdicate power as thoroughly and comprehensively as possible to whoever seems most likely to be next in line, so that nobody is ever tempted to come after me or mine, because I am not suited for such a role and I deeply know it" would probably not be considered a viable answer by the questioner....
In your phrasing you asked "what happens". Did any candidates you thought were good give the actual answer: a disaster for Libya, and the person is removed from power?
That is the actual answer.
Of course not. All of your "passing" answers to "what happens" includes building up infrastructure, basic services, etc.
In other words, what you really just asked didn't match your words. You really asked: "Convince me that you are qualified to lead Libya".
Unsurprisingly, the people who realized that this is what the question was, and gave you an objectively false answer, get a passing grade. Those who did not this, or who answered correctly as asked, fail.
Those who were understood what you really wanted, and who also successfully convinced you that they're qualified to lead Libya, "built great sustainable orgs" whereas "whose who did poorly where usually shown the door within a year".
You could have done just as well asking "The company has decided we are building a social network to compete with Facebook. We put you in charge. What happens?"
What actually happens of course is nothing good. It doesn't mean it's not a bad interview question, but a good answer is not the factually correct answer.
Without knowing what kind of company you're working at, here's the way I'd answer the "the company has decided to pivot to building Facebook. You're in charge. What happens?" first based on what I'd actually tell you, then truthfully.
Answer you want to hear:
"Boy, agrippanux, this is a tough one. I hope I'd get some equity because as you know, social networks have a network effect where success means they blow big, and that's what we're going to do. agrippanux, I've long been interested in social networks so even though your company is not really in this space, I think I could really identify some of the areas people feel strongly about, including advertising, privacy, filter bubbles, and also social media addiction. We will end up having to tackle the network effect, so we will start by identifying niches where our company already has a really strong presence. agrippanux, we don't really do much direct technical support to customer's issues, so I would start by having our web page redirect seamlessly to our in-house Facebook competition that I'm building with the team you give me, as a kind of closed beta, so that we can get a steady stream of users asking us questions and getting used to the network. We can then stealthily work on the underlying technology, while testing it with a continuous stream of real user input. As a next step, we would license this answer solution to other companies. Companies will appreciate being able to have the narrative be on their pages, and by building up factual answers and technical support, we would end up building up an expectation of value and reliability - the opposite of "fake news" plaguing social media. Many early adopters are avid supports as well, and the next step will be allowing some members to answer other people's questions as well. The third stage will be introducing some company events such as pizza parties and this type of thing, in the biggest cities. This kind of approach will let companies capture their own audiences, promote those who support their products as online grassroots supporters, and be a clear alternative to the marketing mess on Facebook. Over time we are a viable social network built on the technical foundation that you have, agrippanux, in this very building at this very moment, and based on the good will and brand that your company has spent years building - and leverage that to be a successful full social network. That's why you've put me in charge of replicating a social network using our technologies and employees, and I am confident we can do it." (Then, after a beat, since your jaw just hit the floor at how awesome my answer was.) "Hey so do I get some equity if I help you take down Facebook or what?"
That's a great answer. It's not truthful though. Bam. I just got hired for whatever role you're actually interviewing me for.
Truthful answer:
"Whoever made this change in direction is an idiot. While it is nice for me to get the resources to roll out a social network 'to compete with Facebook', it's probably doomed to failure, and my top priority would be getting out of it alive. I'd probably spend a lot of marketing money getting a few million transient users who aren't actually engaged, and then jump ship to an actual social media company that knows what they're doing and has a mature product with a real value proposition. This company has no chance of creating a viable social network."
See? One of them is the truthful answer that ACTUALLY describes what really happens. Just as you asked. It's similar to exec consolidating power and crushing opposition. And one of them is the fake answer that answers the real question: "Convince me you're qualified to replicate Facebook under our company, using a few hundred thousand dollars." It's similar to the question "Convince me you're qualified to lead Libya."
An insane question. But perhaps a good question.
OP is hiring executives, not yes-men. You want people who give you the factually correct answer, because you want people who will behave ethically. Execs have to worry about regulation and corporate risk and you do not want liars in those positions.
That's why this is a terrible question.
"Execs have to worry about regulation, corporate risk, and managing perceptions both internally and externally. You do not want someone spouting the literal truth without a filter in those positions."
That's why it's a great question. It requires a filter.
You cannot placate a place like Libya without violence. Thinking otherwise is first-world delusion. It's worse - it's the same line of thinking that plunged the country into chaos under the guise of liberating it from a dictator. That's not a defense of Gadafi - it's a reality of things going from bad to worse.
Libya is also a very complicated place, and so it's difficult to answer without quite a lot of knowledge.
The question reeks of that ridiculous 'American can-do neo-colonialism can solve anything' kind of problem, and in that context is basically offensive.
Any answer, given by any candidate could only totally gloss over the most important in a ridiculous and igornat way.
"Bad answers had the exec consolidating power and crushing opposition." ?
This is exactly how pretty much all leaders in the the Middle East establish power. Do you think they are stupid? Or maybe that there is some kind of underlying systematic issue here?
Secondarily, is the ugly reality of the answers: you can't 'build infrastructure' while opponents are thwarting you at every turn. 'Killing your opponents' in such a situation may actually be a rational thing to do. Of course it sounds very outrageous to be talking about this in an interview, moreover, it's doubly shocking coming out of people without that kind of relevant (i.e. military) experience.
This question is just loaded with problems, I suggest you adapt it to some other more neutral context.
>“A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects.”
I'm 5/7 out of 22, +2 if I go back a decade or two
So that's 4 I definitely haven't done, 4 I kinda did, and 13 I definitely did (I count 21 total not 22).
lol tyop , I also count 21
My reasoning: I would like my team members to be able to contribute in all aspects of product development. This includes not only engineering decisions but also work with the product managers in identifying both potential new features as well as short comings or issues with some requirements. It also tells me how narrow or broad a particular person's knowledge base is.
Let me try to put it in other words: it may tell me if a particular frontend engineer would be open to exploring backend development? What if the language stack changes, will they be open to exploring new languages, stacks, frameworks, OS, platforms. Or, will they be limited to what they know. Will they be able to just code what they're told, or will they be able to form and express their opinion about yet unknown things.
One of my favorite interviews was when I was posed the question: "you work for the railroad, we've just spent several months asking our customers how they feel about the service; the majority of them are unhappy, what do you do?".
I spent an enjoyable hour in front of a whiteboard working on ideas with the interviewer.
I’ve also done a one hour codility online coding test more recently. I thought I’d hate it but frankly it’s wasnt over the top hard and kinda fun.
You self-selected out, because you didn't like their culture.
Seems like a great outcome for both parties!
When I start looking for a new opportunity in a year or two, I may consider coding challenges to be a soft red flag in that I don't think they're worth wasting time over. I spent so many hours in the last 6 months doing various code challenges, some of which were borderline unreasonable, none of which landed me a position. I ended up getting hired by one of the top 3 places I wanted to work, and it was mainly because I had already networked with my interviewers. Maybe they looked at my GitHub, but I never asked. Regardless, coding challenges of any kind have consistently been a waste of time for me.
Unless I really really want to work for a particular company, from now on I will immediately end my interview process if they ask me to do the following:
- On-site coding challenges
- Take home coding challenges
- Whiteboarding
- Brain teasers
I don't have time to waste on that shit anymore. If having years of experience and a GitHub don't demonstrate to you that I can write code, then I really can't help you with whatever it is you're looking to achieve. Developers have to shotgun apply to many places in order to play the numbers game of getting hired, and life is too short to work an extra hour or more every night to code something no one will ever use that won't get me hired anyway. People are generally biased towards feelings rather than facts, and any of the above bullet points mostly serve as a Rorschach test for interviewers who have already decided whether they like me or not. Someone just breaking into the industry might want to go through the hazing process of hammering out coding challenges, but I refuse to have my personal time wasted.
To anyone reading this, networking is a biggie. My dad used to tell me that and I never took him seriously because I hated the idea that schmoozing outperforms merit, but it's absolutely true. In reality, networking should be better because, at the end of the day, most people can tell whether you're competent and if they want to work with you based on how you naturally interact with them. Formal interviews barely work because everyone rehearses for them and they only prove that you were able to tackle one problem(which recruiters often alert candidates to anyway).
I'm not interested at working for standard companies. :) But everyone is different. If whiteboarding is someone's thing, the more power to them.
> walking out of an interview after someone's already blocked time for you because you think whiteboarding is silly is even more silly than whiteboarding is
If there was a misunderstanding where they blocked out time in an interview for whiteboarding, I wouldn't be rude and refuse in person.
What I do is ask in the phone screening or the first engineering interview about whether the technical interview would involve whiteboarding or brain teasers. If the answer is yes, I politely end the interview process. That way their time is wasted minimally.
However, I have no qualms about walking out of an interview that involves brain teasers.
> If I were the interviewer I'd be concerned that you can't be even a little bit flexible with things that you personally don't like.
Interviewing is a two-way street. How about you be a little bit flexible and not make me do something that you personally like? No? Yeah, I didn't think so. I'll just work for companies that don't do whiteboarding in interviews, which are a dime a dozen.
Yes, that was a bit crass, but it amazes me how people in the position of interviewing believe that interviewers should care about whether they're concerned over something.
I'm sure that doesn't matter to you as you don't want to work at standard companies anyway, but I have seen plenty of people fail to solve fizz buzz who had the nerve to show up for a Senior Dev role and therefore I will always ask my candidates to write code in front of me. Anyone can copy and paste their way into an active looking github profile, much fewer can talk me through their thought process as they solve a real problem that I have given them to solve.
I am under no obligation to continue wasting your time. Who cares what the interviewer thinks here? You already (at least mentally) rejected them, so why should I care whether they would've said yes or no?
I wouldn't personally walk out for this reason, but things don't change when there are no consequences.
They, and others that do the white-boarding, are 'the best'. They have loads of talent, operational efficiency, ship tons of great products with great innovations.
White-boarding done appropriately is an excellent means to develop an understanding of people's aptitudes in a short period of time.
Here is an example of a Google white boarding interview, it's excellent in many ways:
2) Don't work at any single employer for more than 3 years unless you have very compelling reasons. Stock options or you have excellent opportunities staying put. Changing employers allows you to grow your network and your skill and experience.
3) Attend meetups and networking events.
Interviews are good about getting a general feeling about a person.
Try thinking about it quantitatively. Someone who spends the time to schmooze (read: invest time in developing a human relationship) has essentially posted that time as collateral. They added chips to the figurative pot, and if they were a fraud or recklessly destroyed that relationship, they forfeit that collateral (lose the relationship, lose the honor and respect they earned). So that's why it's convincing to invest in people who are willing to post collateral. Now certainly, there are people who have no shame and will pull cons. So this method isn't infallible. But they can only get so far before they get exposed, especially in our industry.
There's a reason why engineers are looked upon as aliens. "developing a human relationship" is the basic thing all people do, not some annoying side requirement
There's nothing wrong with on-site coding challenges, white boarding, and a good chunk of brain teasers.
Having people code a small problem might be by far the best way to understand how they can do the job.
"If having years of experience and a GitHub don't demonstrate to you that I can write code, "
Your Github code does not demonstrate what people are looking for.
If a company is looking for the kind of candidate that can and wants to work through those problems, then by all means they should do it. I personally don't recommend those kinds of companies because I'm unconvinced that on-side coding challenges and white boarding do much more than to weed out the really unqualified people and humiliate nervous but talented engineers.
Brain teasers don't measure anything other than that the candidate memorized the answers to common brain teasers, or as I've witnesses on more than one occasion, their ability to remember the answer given to them by a third party recruiter.
Maybe brain teasers are for you, and you can go work for companies that think brain teasers measure something. I'll go work for the majority of companies that don't fall for that idea.
> Having people code a small problem might be by far the best way to understand how they can do the job.
That can be, especially for junior engineers. If a company still wants to run aptitude tests on mid-level and senior engineers with years of experience, good references, and personnel projects, then they're being lazy. The fact that I don't want to burn myself out doing unpaid work at this point in my career isn't my problem.
Companies are free to not hire me. LOL
> Your Github code does not demonstrate what people are looking for.
And yet I've been explicitly hired because I had coded something relevant on my GitHub profile and could talk about it in detail in person. It sounds like you believe that a significant number of people with personal projects are really just bullshitters, and that making them write more code is going to tell you whether you want to work with that person.
No personal offense, but what you are suggesting represents exactly the type of company I want to avoid for good reason: Companies that think they can conveniently measure a candidate's aptitude through unproven metrics like brain teasers.
You wouldn't recommend Google, Microsoft, Facebook and a host of the best companies in the world because they do 'white board interviews'?
You're not only working against the data here, you're working against reason: asking people to solve problems that they may encounter on the job is an excellent means of measuring a number of things, even beyond their ability to solve this problem.
There are still quite a lot of 'senior engineers' who actually might be valuable in some specific circumstances, who can't walk through problems or write decent code at all.
This example [1] from Google is really quite good. If you watch carefully you'll see how many elements and opportunities there are for a 'good developer' to shine both technically, and also in terms of communication. And also for 'ok developer' to just do an ok job.
They're not asking bizarre or impossible to solve questions that you'd have to study for either.
"That can be, especially for junior engineers."
No, it's good to weed out 'senior engineers' who think that their experience and 'good relationships' entitle them to a job.
"I don't want to burn myself out doing unpaid work" - an on-site bit of coding is not 'unpaid work' - please don't take this angle that your (or mine, or anyone else's) bit of quick hacky coding is 'work' that could be useful really in any way.
This is different from a '2 hour but really 2 day' take home test which is ridiculous.
"And yet I've been explicitly hired because I had coded something relevant on my GitHub profile"
That's good - and I suggest in many scenarios that may be just fine, but it doesn't abnegate the fact of the matter: that 'white boarding' and 'on site coding' (specifically not big ugly take home projects) are an excellent means to measure core abilities.
"but what you are suggesting represents exactly the type of company I want to avoid for good reason"
Again, the best companies do this for a reason. If you want to avoid a massive tranche of the best companies in the world in various corners and niches then that's a personal decision obviously.
Finally - the most contentious 'brain teaser' - they come in two types: the 'tricky problems with solutions' and the more 'open ended types'.
MS used to ask the former "i.e. a kid, an adult, and a row boat owner are at the side of river and must get across with a watermelon. But the kid can't row, the boat owner won't take the watermelon etc. etc." - these I don't think are very helpful in most cases.
But the consultant type question: "how many tennis balls can you fit on a 747" - these can be enlightening. I was asked once "Quebec separates from Canada, how do you divide the national debt" in a consulting interview. Very good question. Aside from the problem of some people getting nervous, and not being very good 'on the spot' (to which I would encourage giving time to think about it), you can learn quite a lot about people in these scenarios. It's an opportunity for people to think about a problem in different ways, to apply some of their niche knowledge, and importantly to see if they can come up with a very crude, ballpark answer to a fairly ambiguous situation. This might be more apt to consultancy types of situations, but I think there's value in software as well, given the right kinds of questions.
Here's the exact challenge:
UberCab Coder Challenge
1) Write a program that determines the wait time, trip time, rating, and fare for a black car trip in San Francisco, given that the customer's pickup location and destination is randomly placed anywhere in San Francisco proper, and given that there are X number of cars all placed randomly across the city. Use GoogleMaps API for trip duration time. Run simulation 100 times for 1, 5, 10, 20, and 50 cars. Output average wait times and trip times for each # of cars the simulation was run on.
2) Take #1 and do the same pickup and trip time calculation given that there are Y customer requests per hour (extra credit if this is done with a Poisson distribution ;)). Take into account each car's availability (given that they may have been selected to carry a customer and are in transit on pickup or on actual trip, and thus unavailable). Run simulation given the number of cars in #1, but for each simulation in #1, run once for Y=1x, 2x, 5x, the number of requests per hour (X being the number of cars in the city, as defined in #1)
3) Take #2 and then make a GoogleMaps mashup that then shows the various trips that were taken for each simulation. Provide mashup interface showing all trips but also provide ability to only show trips for each driver.
4) Write a "Hello World" app on the iPhone that for a certain driver logging in shows all of his trips taken in the last simulation, the average rating that he got, and the total fares he collected during those trips.
Snark aside, it can iffy to pay someone for a task at your company when they are still under contract in their previous job. In that sense, while your point is sensible, it can be difficult to go that route from the candidate side.
If you want to limit your pool of potential hires to rock stars who don't have jobs (pool size of approx. zero) this is a great approach.
I doubt they had the budget for that or they likely wouldn't have been essentially trying to get someone to making their MVP under the guise of a new hire interview.
Keep in mind the OP mentioned that this was pre-launch, when they were still UberCab and only had aspirations to be a peer-to-peer cab app. Long before they started marketing themselves as a logistics juggernaut or world changing self driving car creators for valuation justification purposes.
For context, for my first job as a developer the take home assignment I got was creating a web app that logged realtime CPU usage and created a graph of that CPU usage that was updated in real time.
And this all had to be done using a specific language, web framework, and database that I had never used before.
That's at worst a 4 hour job to do with a beer over the weekend. You sound incredibly incompetent if you can't tell the difference in difficulty between that and that they asked OP to do.
That assignment is 1/128th the work of point 1) from OP.
In understanding the question.
At any rate, you still haven't replied to my job offer. I need you to do two weeks of free work for me.
You sound like the type of engineer I get hired to replace at three times the rate when the project is on fire because they didn't understand the spec.
Not even a simple, “we’re not interested”. No feedback.
Just. Left. Wondering.
It’s cruel. It’s demeaning.
Tanium was especially cruel. 6 hours of live coding interviews and the only reason I got any response from them was because I had to consistently hound them for a couple of weeks and ask a friend that worked there to internally ping someone.
Definition: Willing to put your thumb on the work side of the scales in a work/life balance for no extra compensation.
See also: Taking advantage of your workforce.
Above and beyond can be nice, but the whole point is that it is exceptional, in every definition of the word. If all individuals went above and beyond all the time to fulfill expectation to do the same, that sounds like a recipe for a PR or legal disaster because rational limiting judgement is not applied, or intentionally suppressed, in a scenario where somebody is in over their head.
They probably were doing interviews to satisfy ongoing visa process for already selected candidate.
And the declining everyone with lame excuse.
But I'm also about work life balance, and honest day's wage for an honest day's work, so I probably defer from that company in a few ways, lol.
The other thing that gets me, is not listing what the expected pay is upfront (and whether or not it's remote) on the job posting. We all work for pay and we all have a pretty good idea of what income it takes to live in your current (and future) circumstances. If your pay is nowhere near that expected range, why should I waste your time and why should you waste my time?
I got hit up on StackOverflow to apply for a company. After looking at their job listing, it said (limited remote with approval), making it sound like you had to negotiate for remote work. This is what I responded with, "I currently work remotely and have no intentions on moving. I have a proven track history of performance and productivity working remotely for over 7 years and it's not something I'm willing to give up or negotiate. So I can save us a lot of time by being upfront with you about that."
I didn't apply and didn't receive a response...
In all fairness, that's pretty common. For a lot of positions, companies are fine with proven employees working from home part of or most of the time. But that's not the same as signing off on 100% remote from Day 1. If that was the case here, I'm not surprised that they took your response as a polite "not interested" and moved on. In my somewhat limited experience, recruiters usually aren't that inclined to chase after people who have pretty much indicated they're not interested.
I always get a reply from those... surprisingly.
I personally don't put up with it, but then there are always lots of commenters in HN who bemoan whiteboard interviews and prefer take-homes. To each their own.
I would rather whiteboard about the design of the app/tool than some random question another engineer pulled out of their ass twenty minutes before the interview and has unreasonably strong opinions about the design and implementation based on whatever source they stole the problem from because they don't actually understand the problem either.
Politely decline and move on with your life.
I've actually had something like that happen to me too, but in a different company. From my experience as someone who's conducted a lot of interviews myself, I think this can happen due to various reasons:
- broken telephone (recruiting org rarely physically talks to eng org). If you call the recruiter after the fact, they may not have the context for the rejection and might make stuff up on the spot to get you off their back, because at that point, you're kind of "wasting their time" (given that their job description is to keep the hiring funnel greased, not maintain long-term relationships)
- technical interviewers don't always have interviewing training and may reject based on bogus reasons (e.g. feelings), then try to "justify the decision" after the fact. A few might not even keep good notes of their interviews
- sometimes candidates do solve a problem, but are legitimately rejected because they did so in a non-ideal way (e.g. performance problem, missing important edge case, struggling too much with basics like syntax, soft skill red flags such as lack of interest/proactiveness, etc). But often times the interviewer doesn't give the negative feedback to the candidate, leaving the candidate with a false sense of accomplishment.
I understand the frustration with interviews but your comment seems to show a lack of understanding in how interviews work.
Interviews are a competition, not a pass/fail exam. Or if we're going with the exam analogy you're being graded on a curve, so you could get a 90% but if everyone else scores 95+% you didn't do well.
What matters isn't whether you solve the question but how well you do compared to everyone else.
Now imagine engineers doing that, in a highly competitive landscape, with no motivation or second thoughts. It is a jungle out there.
It's true that an interviewer might look at previous candidates to calibrate expectations, but they don't necessarily pit candidates for the same team against each other as would be the case in school curved grading. Usually what happens is a candidate just barely solves the technical exercise, but also raises a bunch of yellow/red flags. A common rule of thumb among tech interviewers is "if in doubt, reject". This is - in my experience - so common that a company will typically nab the first candidate that clears the expectation bar. It's actually rare that two or more candidates would be up for consideration at the same time because it's hard to even get a single one of high enough caliber in the first place, since good engineers are in extremely high demand and are almost never actively looking for jobs (recruiters reach out to them instead).
I'm not sure I understand how it does?
I just said that as an interviewer you have no idea how well you did because you can't compare yourself to other interviewers. Or, in other words, even if you somehow knew your "score" (for some made up score) that wouldn't give any indication on its own whether you passed or failed because you'd have to know what scores other people have gotten.
I agree with what you're saying about biases, but that merely affects what or how scores are given, and not whether you can make judgments about your outcomes based on score.
They choose from 2 languages,and an experienced coder is done in 5-15 minutes. A fresh grad maybe 45 minutes.
The tasks have no practical work application, and are just code samples.
If they pass this and a phone screening, there is a live challenge as well -- the take home version we give people 48 hours (their choice of weekday or weekend). In person is time boxed and part of the interview, but is the very last stage and usually simple functions to rule out people that needed help to get to that point or simply had someone else do all the work (which we've already had come through our small 10 person te team)
We've been super successful in mining the late round rejections from companies like Google. Getting to an on-sight is a huge signaling factor, they do the early filtering and we can move fast to an offer
I am not a coder. I am a very experienced manager/director/PM OF development/DevOPs/IT teams.
However, prior I was in architecture.
And starting out as a draftsman, it was extremely common for architectural companies to tes out your drafting skills on AutoCAD with a timed test.
I recall the two I took:
In Redmond Washington in 1994, I was given a test to draw out a site plan for a chevron gas station, whom was their primary client.
I was given 15 minutes. I drew it in 12.
They said that not only was I the most accurate, but the only person ever in the history of their company to finish it. [became a core designer on what was then the 'revolutionary' designs of marriage of gas-stations and fast-food restaurants... [[Soul killing]]
I got hired... but then I became CAD manager - and then just decided I liked "computers" and not arch... so I then moved to SF. So I moved on to hospitals... gosh...
... (became IT manager of a small firm on the peninsula)
So then I worked for a design firm, and they also tested me upon interview... in CAD...
Isometric datacenter cabling plans....
I wasnt really familiar with plane changing in AutoCAD at that point so I did it all manually designed based on switching my orthos for each thing. Finished a complete cable tray design in the allotted 30 min window.....
Got the job - which resulted in me being on the core data-center design team for the Lucas Presidio project.
(and I have many other storis such as this)
---
Challenges are good which are practical to the company's/teams goals and needs -- but bullshit if they want you to design their whole shit for them.
Now get off my lawn....
----
Oh I forgot to mention - now I am director of tech for a cannabis org... GET THE FUCK IN CANNABIS TECH.
If a company gave me something as time-consuming as Uber's, I'd say no thanks. Otherwise, I'd prefer a home assignment over whiteboard coding since it will give the interviewers a much better idea of my skills.
I think pairing the take-home with the in-person interview is a nice compromise. Assuming you didn't turn in complete crap code, they can call you in for the interview and you can talk through your solution and why you made the choices you did.
Another possibility is to make the take-home a part of the in-person interview, and just give the candidate a laptop and internet access and a few hours to work on it, with an interviewer at hand to answer questions. The downside of course is that everyone gets less time just talking to each other. A plus is that this timeboxes the possible assignments so things don't get too crazy, and also weeds out people who can't complete it in that time (which could be bad, too, I guess).
They are great for probing real-world development, (should) take less than an hour or two, and based on what the interviewee says they are skilled in.
You can look at any job and claim it can't be abuse because people can leave the job.
You ignore that leaving the job means loss of income, status, or worse even.
Like, imagine if the TSA strip-searched everyone. Pretty abusive right? You wouldn't say "I don't see how letting people fly is abusive".
That's not "Hello World" app, a "Hello World" app prints "Hello World." The purpose of a "Hello World" app is to demonstrate you've setup the environment correctly, nothing more.
Words and terms have meaning.
My interviewer was sitting in a room full of people when they called me, asked me questions and then proceeded to have conversations with the other people in the room without listening to me and would ask me to repeat my answers. And do it again.
15 minutes of this and I hung up on them. This was about 4 years ago and the equity that I have in the company I joined instead is on an upward trajectory instead of what Uber just did. Phew.
Especially when in a new hire/interview situation, HR is absolutely involved. So the HR department is also full of assholes who won't enforce the policies of the company.
I guess I'm glad it went this way for other reasons. It was for an entirely new team within Uber to build something very specific that nobody had done successfully yet (though there was a paper about it...it's security-related). The manager was an external hire and the entire team was to be as well. This was a big warning sign to me that management didn't care very much about this team or if they accomplished what they set out to.
4 years later they still haven't delivered on that feature yet.
Wasn't "asshole" their company policy?
Earlier in dotcoms, I wanted to work in a then-prominent organization. The technical phone screen went well. When they asked what I'd like to work on, I said something like HCI-ish R&D (in which I also had experience) for their important product, so they scheduled me for another phone screen, with the person who was in charge of that.
I'm reasonably good at hearing tone, and the person on this second phone screen didn't seem to want to talk with me, from the start. They asked me to talk about ideas, then they muted their end. I knew this wasn't going well, but I really wanted to work there, and I was trying to figure out how to salvage it, and I had to start talking immediately, so I started going into some applicable research ideas/approaches. Still muted, no comments, no questions, no backchannel cues whatsoever, so I kept going. When apparently the time block for the interview was up, he un-muted his end, and said something like, "I'd hoped you'd talk about a GUI enhancement to <product>." And that was the end of the interview.
That gave a bad impression of the organization, that they'd have someone who'd behave like that, managing people in a key group. So I didn't pursue things with the original group, which liked me.
It's a little validation, but no consolation, that their market-leading product later got driven into the ground, losing to an innovator who entered the market.
I estimated it to take at least 2 weeks. Sent it to a colleague and he estimated it the same. In reality you had 48 hours to turn it back in. I gave up halfway into the project.
I also don't think it's cool to do what I just said without letting the candidate know that's what is happening. Otherwise they might just get frustrated and decline to work on it.
It looks like a good chance to outline the resource requirements for accomplishing this. No way should this be a work of team-of-one.
State the expected stages and some ideas for possible architecture and frameworks.
Then ask for resources needed to implement this with some rough-optimistic estimates, including the budget.
That should be enough for a serious conversation to begin with interested party.
Sometimes I would like to say, you know, I like to work with good devs, so if you don't mind, I would like to ask you some coding questions. It freaked out some people with that, but it is in the same range as the questions they are asking.
A vision to push anyone who works with/for them to the maximum possible win/lose ratio. Including drivers and riders.
It's possible we were doing this many years ago, but that certainly isn't the case now.
> “I’ve been a software engineer at Uber since 2015”
Perhaps they need to test reading comprehension in their interviews!
One company asked me to do an implementation of the Bay Area MUNI network which fetched live updates of the locations of all buses every 10 seconds; there was more to it but I can't remember it now. This was to be done in React with D3 and no additional libraries were to be used to help with integrating D3 maps in React. The role was junior level, the job listing did not specify D3 as a requirement (which pretty much guarantees a lot of people would start into it without realising maps are one of the more complicated things to do in D3 as a newbie or how poorly D3 played with React), the role was in Europe. If someone can confirm I'm not breaking any rules I'll happily share their name.
The best interview experiences I've had are with groups who just went through my (not very impressive) Github. A small coding challenge can be good as a thing to talk through during the final interview but anything longer than that and I'll tend to pitch sending them something I wanted to make in my own time regardless.
No, there is no rule, unless you signed a contract stating you will never disclose any interview information, and even then, they'd have to find your post, find out who you are, and then take you to court over an extremely shaky premise.
Just name the damn company people! You're giving companies far more credit than they deserve in these situations. I'd argue you owe it to other people who may follow in your steps to know when a company is exploitative, deceptive, or just plain corrosive.
edit: now with less snark
> Goes on to not violate the rule that seems to exist
Anyways, it was ThousandEyes
The interview itself was a whole other tale of awfulness but I'll limit my overview of it here to saying that they didn't bring up the coding challenge once despite being repeatedly asked for feedback before, during and after the interview. Maybe they felt awkward about saying how crap they thought it was? Be pretty weird to bring me in for an interview in that case though...
One thing I came to think about regarding the "4-5 hours" and throwing 5 working days on it, is that, maybe as an interviewer it is quite obvious that you put more than 4-5 hours into it and what they were "really" after were the trade-offs you would have made if you put 4-5 hours into it. Just a thought.
It's one thing to accept that some people are busy and shouldn't be punished, a bout are we supposed to only hire people who have zero excitement for the industry and job?
Sure, feel free to spend extra time on the take-home assignment to signal to the potential employer you are passionate, but that's a different thing.
PROTIP: don’t do that.
https://www.wareable.com/media/images/2017/03/google-fit-app...
WTF Google?
Google's app tends towards the bland, but I don't think OP's designs are a huge improvement.
Also OP's app is targeting the gym nut. Google's is targeting the average person who is looking to just do any type of physical activity.
Never forget that the interview process is two way ...
That said, finding a job in IT if you are good at what you're doing is a dreamland currently, so declining if you think you won't enjoy working for a given company seems only natural.
Given dynamics above I think you're likely better off not working for one of those top few companies if you don't care about prestige and long term job stability.
If you have "too many people" you dont make the quality of your hiring "better" by making the process worse.
Being more selective about who you hire is not related to making a stupid test.
A company like that is probably wondering why they can't find the people they're looking for.
> Noddy being associated with small children's reading has led to "Noddy" being sometimes used as an adjective meaning "petty or trivial" (compare with "Mickey Mouse"), for example, in computer programming: "This simultaneous linear equation subroutine crashes out on the Noddy case when n = 1, but otherwise it works." or "Remember to check all the Noddy cases."
- Being sent to a website to do a take home coding exercise, with a checkbox basically saying "I won't use the internet, stack overflow, or similar". I get that you need to test my knowledge, but shouldn't you care more that I know how to search for my problem and understand a fix instead of flailing around?
- (this one I have noticed in person) Being handed a thing to build, being told I have a limited amount of time. That all they want is a proof of concept, but the tooling they are asking me to use go completely against the idea that it is a "proof of concept" since they make certain assumptions about the end goal. EX: deploy something with terraform but we don't want you to build an AMI or anything like that so just manually go into each system once you create it
There were a lot of compilererrors on the way to a solution for that one.
I remember the handwriting examans on University. But it was never any real full lenght programs.
When I hear this BS, then I know it is clear that they have never coded themselves. I would love to meet a software engineer who truly can sit in a padded room and write code with no internet access to use for help or reference.
Especially those of us that juggle multiple languages (full stack). Sometimes I know I need to run a method but I can't remember the actual method name or how it is formatted in this language. I know it exists, I have used many times before, but I might not remember the exact way it is worded. So I have to look it up. It adds <60 seconds for me to find.
Or I might know a method exists but not sure which parameters it accepts. I might usually use the first 2 params and leave the rest, but this specific use case requires changing something i don't normally need. So guess what, I have to look it up!
Sometimes I might get an error message that I don't recognize, so a quick look at StackOverflow reveals that a configuration item is off, or something was formatted incorrectly. I often can understand my problem with only just reading the first few lines of the selected answer on SO. I might be able to solve a bug in 60 seconds by using Stack Overflow, that might otherwise take hours to do without them.
Especially as software developers keep getting asked to know more and more stuff, we have to rely on documentation and helpful sites in order to do our jobs. It is crazy to expect that you don't use those resources.
Oh and ObjectiveC/Swift developers have it really bad. Some of the method names are entire structured sentences.
I did have a Google phone screen where they asked me to live code something in Objective-C, but they gave me an existing class whose code I had to fill in and they were lenient with remembering common method names.
Essentially this will give them a huge traction boost on the app stores and a bunch of new users. Super impressive.
I have just stumbled upon this article in a UX mailing list and thought it'd be interesting to share it on HN.
But after reading the discussion it prompted, I'm left questioning exactly why it does so.
And like you said, slick marketing on the part of the creator at the very least needs to be acknowledged.
The feedback I got afterwards was "We're passing on you as your code doesn't compile/run on Linux", a requirement that wasn't specified.
I have to ask, was there something that implied that it should specifically run on Windows? If I got a software spec that didn't spell out exactly which platforms needed to be supported, one of the very first things I would do would be to ask for clarification.
Of course I'd be a little surprised if they chose to use a language not listed as part of the job requirements but if it looked reasonable it wouldn't stop proceedings.
.NET core changed the ability to make the Windows assumption. Almost everyone has received the memo by now, but there was a period of time between .NET core 1.0 (June 2016) and the release of .NET core 2.0 (August 2017) where the platform was changing so much and the performance wasn't as good as framework that anyone without a simultaneous interest in Linux rightly ignored it. After the release of .NET core 2.0 the entire community began accepting it as a faster platform that runs comfortably on cheaper servers. A larger and larger portion of new projects have been running .net core. Now, with the planned release for .NET 5 next year .NET Framework is dead. However, if you were interviewing with a .NET team before June 2016 even asking the question "What operating system will this run on?" would have been a sign of incompetence. Of course you'll be building .exe and .dll files. Of course the webserver is going to be IIS. Those were the only things .NET was good at building.
It really depends on how you're asking the question. "What OS will this run on?" is going to be perceived differently from "Are you expecting anything unusual like Mono support?".
The OP didn't actually say that this was a .NET application, but if it was the answer to either question would have been important. If the answer had been that the company expected a standard Windows environment, I don't think it's likely that the second question would be perceived negatively.
But on a serious note, I really don't understand why they couldn't have written you back and asked if you could make it compile on Linux and send it back.
I know this self-selects for people willing to do extra work for no extra compensation.
However, let me play devil's advocate for a minute as a thought experiment. I would actually worry that this issue is also a self fulfilling prophesy. If I'm told to do X in Y hours, but it takes me 10 x Y hours perhaps the employer really does expect it to take only Y hours. Maybe the typical workload at that employer is for someone who really can do X in Y. As long as that is properly compensated, I see no problem with that. If the employer is asking for an extremely high caliber developer, and will also compensate as such then it's no issue. However, an average developer applies and thus has to lie about what they can achieve in that time-frame. Let's say they get the job and then when the workload is dumped on them it obviously takes longer than the 40 hour work week and they cry about "self selecting for people willing to work extra for no compensation." When in actuality, the employer expected, based on a false presentation, that it was within the average developer's abilities.
Of course, I'm being somewhat satirical and without knowing the exact position and compensation being offered (as compared to average) no one can say if this is the case.
I can't help but admire the way this was done :) I hope my launch story is this good.
I wonder whether that's the reason for him not getting the job. Likely, the interviewers wanted to see what this person is capable of doing in a short timeframe, how they'll prioritize and deliver under such constraints. This guy failed to do what they asked for.
The last time I had to do a test it was on site and I was just out of college. Most interviews just talk about the challenges of the team, my past work on similar problems, and how I solved them. I've been on the other side of the table too. It's usually easy to tell if the applicant is a quack or if they are skilled by how they talk about different technology: commiserating about familiar pain points, how they solved common problems. I almost feel at this point that it's unprofessional to hand out tests to people.
The problem with what you're describing is that it's using a proxy (discussion) to vet a particular skill (ability to program).
It's very easy to vet someone's programming skill by having them program, and it doesn't take much longer than a wide ranging discussion, so why not skip the proxy and test what we're actually hiring for?
Should a programming test be several hours (or several days) long? No. But an hour or two, I can't see how that's a terrible imposition.
I’m sure you can somehow include technologies relevant to the position and keep the problems to the same scope.
Or these companies could begin creating actual value instead of just draining it from the world. Why don’t they expand their pipeline that converts intern/junior positions into more senior positions? And make it a big enough so they don’t need to hire as many ready-made 10x engineers from outside.
I 1,000% do not care about someone's ability to solve a random programming puzzle without the internet.
Again, this is a (bad) proxy for the skill I'm actually trying to hire for. If I'm hiring a backend engineer, why would I ask someone to implement QuickSort? Wouldn't it be better to give them a realish application and have them add a feature or fix a bug?
> Why don’t they expand their pipeline that converts intern/junior positions into more senior positions?
My company has a very healthy pipeline of interns and junior developers. In a year or two, they'll be very good. In five to ten years, they'll be amazing. But I also have shit that I need to get done by the end of the month, and I need people with years of experience to complete them.
And regardless of which level I'm hiring at, I want to see them code, and I want it to be in an environment as close to how they will be working as possible. Google, Stack Overflow, an IDE, a build system, unit tests ... I want to see how they will perform as Software Engineers, not Euler-grinders.
Agreed. However there are multiple comments discussing "5 hour assignments" and "take home quizzes", which I find to be insane, frankly. But if it's worth it to you, go for it I guess?
For my internship I first had a good conversation with the lead developer. After it was determined that I was a culture fit and didn't bullshit them, I got a small simple assignment which I had to do on a whiteboard. Later found out it wasn't really meant to figure out whether or not I could write a simple function, but more to see what my thought process was. Like, did I instantly start writing one big function that did stuff - or did I break the problem down into smaller steps.
Anyways, the interview for my second job (for a fairly big consulting firm) was purely focused on culture fit, and questioning about stuff I've previously made.
Third and current job was the same as the second - only on my initiative I came by on another day to check out what the other developers were actually doing and trying to help them out.
I don't think a test is really useful, if I'm not up to par (or they don't meet my expectations) either of us can decide to end the contract in the first month. This focus on tests strikes me as silly, especially in the USA, since you can just be fired for no reason anyways.
edit: I do have an (outdated) github repo with some code, but not much else.
The best advice I've ever heard about interviewing is that you need to mentally reframe it from "I need this job" to "they need me, convince me to work here". A big part of this is building a network and finding jobs through that (which is how everyone has always found careers, mind you); when you're introduced positively through a third party the team trusts, the conversation inevitably biases more toward the team hunting you, not the other way around.
And if you can't do any of that then you should probably be happy that companies do big project coding/design interviews that give you a deep chance to show off your skills. Over half of what teams are looking for in candidates isn't the hard skills; its social aptitude, teamwork, networking, the soft skills. If you don't have a network and had to land this interview via a lowest-common-denominator recruiting page or email, then at least you can dazzle them with a great project, but you're already starting out behind.
The challenge is coming up with a standalone task that demonstrates the skills needed for the job while _actually_ requiring the amount of time you say it should take. Seems like most commenters here are upset that a "2-hour test" really takes 6+ hours. That should never be the case and I wouldn't want to work for that place either.
Another key part of this is should a candidate pass the take-home test portion of the interview, the in-person interview should be fairly quick and mostly a judge of fit/character. It should not be loaded with more tech questions. The reason this works best for everyone is the interviewee doesn't need to waste a vacation day on-site unless they have a really good chance of getting the job.
More like "we've laid out an API contract, implement these 3 endpoints in a language you like along with these few extra small requirements and some unit tests". Usually takes 2-3 hours and I think it's a more fair assessment of my work and at least I get to use my own environment and work on my own time with tools I know rather than with someone sitting over my shoulder and a marker. It also helps drive the discussion during in-person interviews away from the binary tree puzzle type questions and focuses more on design decisions and other considerations I took in to account.
I think the usual situation is that the candidate was on a team where some impressive work was being done by others, understood it enough to talk about it in detail, but didn't actually do any of the challenging work themselves and couldn't work at that level consistently.
I'd like to think most people aren't actively lying or bullshitting, but it's easy enough to implicitly take credit for work done by a team when you're trying to sound impressive.
Whenever I've done these, I usually end up doing them in JavaScript in a hyper-functional style (as is my nature since usually they won't allow me to do them in Scheme or Haskell), which ends up with the reviewer asking me to write it in a more "modular" way (which really means "please write Java in JavaScript").
I have a line in the sand now that I'm done doing take-home projects; I really don't need to donate my after-work time just to have someone who doesn't understand functional programming explain to me how it's not as modular as some Java OOP crap, especially when I could spend that time building a project that will, you know, actually make me money.
EDIT: I realize that this came off as overly-hostile to Java. I'm not a fan of the language, but my point wasn't really the bash it, as much as complaining about people acting like my functional code isn't good because all they know how to write is OOP Java.
Are we sure that it is worth all this effort? Are they so much better than any other company or startup?
Is our own self so much more valuable if a random intervier liked our works an epsilon more than the other candidate?
People inside FAANG are unhappy as well, they leave their company as well.
I believe we should be less impacted by the ads that Google is running to sponsor itself as the best workplace ever.
Moreover, after some level of income the marginal improvement of more money approaches zero...
I never had to provide an actual signature, aside from a verbal agreement with the recruiter to not share interview questions.
This applies to the design prompt specifically, which is an early-stage take-home thing. I don't recall whether google had an NDA for the onsite interview portion itself, but I think their badge signin thing might have one baked in, and other companies of equivalent size had paper NDAs as part of checkin. Presumably they only care about you stealing the cool stuff you hear about, and you wouldn't be in danger for running with their (intentionally generic) interview prompts on your own.
Here's the thing: the NDA you sign when you go onsite covers the company's intellectual property. It might cover the interview questions they ask you, but if they're not paying you for the work you do as part of a take-home interview question, and if you're doing it on your own hardware - it's not theirs, it's yours, and they have absolutely no say in what you do with that work afterwards.
Moreover: if you are subsequently hired by the company, they still don't own the work you did on your own time and hardware. (However: if you continue to work on it while employed by them, they might then own that follow-up work. Check your employment contract carefully, and if you're in a position to insist that employers do not own your off-hours work, insist away.)
Now, if you're currently at another company, and you complete the interview task on their hardware, and especially if you make the mistake of doing that work during company work hours...well, your current employer might then own your interview work. This is a matter usually covered by your employment contract (and another excellent reason to read those carefully).
Company Tried to Patent My Work After a Job Interview
At that level, anyone who gets called to interview for Google is already qualified for the job. It really is a lottery at that point if you get the job.
Shows again that good efforts pay off anyhow.
[1] edit: Also, I think you can tell a lot about how qualified someone is by how they clarify the problem and how they communicate their thinking - not just the code they arrive at.
This seems to be far superior for obvious reasons:
1) It normalizes the submissions, making the review process more accurate/fair 2) It removes any ambiguity or implication around the amount of time that should be spent 3) The amount of time a candidate has/is willing to devote to an unpaid homework assignment is likely not meaningfully correlated to their ultimate success in the role, but the process described by OP likely over-indexes for that.
...Because I had no experience, and school projects didn't count.
I had time that no one is paying for, I had skills (at least i believed), but no interviews because of experience. So coding challenge is the one thing that I can compete fairly with people with experiences, and I even had an edge because I value my time less.
Of course, now I don't. But I was thankful that it is a thing so I can land my first job.
"Wow, great interview task! Oh, I'm no longer interested in pursuing a job with you, but thanks."
1. could a company go after you for violating the NDA
2. could a company, in theory, also make claim to your IP
Would love to hear your opinions.
Is this as common as the author makes it sound? This seems like shady practice. I've heard of marketing firms doing this as a way to get 'free' ideas/work
"I work to live, and any company that doesn't want to hire me because of that answer is a company that I don't want to work for"
I doubt many companies would like that, but if a majority of people refused to participate without that clause, who knows? Clearly several people in this thread felt like they were being asked to do work which would be put into production and this would prevent that (though I personally am REALLY skeptical of those stories).
It seems crazy that people are being asked to do work for even a few hours for "free" much less several days of work. If you are doing that, it seems totally fair to indicate that this work will be made public afterwards and made into a portfolio piece.
"No one acknowledges the fact that in reality, you’re about to dedicate up to 5 working days on this task, with the potential for them to ghost you straight afterwards."
I was ghosted by AirBNB once, and I'm fine with not being good enough, but no feedback and never a response was pretty freaking rude. You ask me to do a task, i put part of myself into do it, and then no response, ever. I'm glad they never responded, i don't want to work for a soulless company such as that.
Make a list of attractive markets to play in, talk to a lot of insiders in those markets, choose three ideas out of at least 30 that you generated, put some serious work into validating their business models, then let yourself fall in love with one and spend 10 years sweating to make it a reality.
Before I have used Fitocracy, I'd say this may be the biggest competitor to this, as it is (at least 5 years ago when I used it) more tailored for strength, where one can log specific exercises and track them over time.
https://itunes.apple.com/us/app/riker/id1196920730?mt=8
https://play.google.com/store/apps/details?id=com.rikerapp.r...
> I was told it was extremely close and that I should reapply in 12 months,
It seems really weird to me to put this burden on the applicant. If someone is above the hiring bar but just got edged out, shouldn't they go into the bucket of people to contact as soon as there's an opening? And for designers at a place the size of Google, wouldn't that be much sooner than 12 months?
If it's obvious you spent DAYS on this, what does that tell me as the interviewer/recruiter? I have no idea if this person can follow instructions and I have no idea what this person can do in 3-5 hours.
Was Google wink-winking, or is there a well-known practice of ignoring a real time limit, or is the writer imagining a wink-wink?
I am currency confounded by how people get users to sign up to products pre-launch.
Just goes to say how much the industry sucks at evaluating candidates in general. This would have been a phenomenal candidate.
Cisco is famous for funding startups by its fromer employees that satisfy their client wants. Google might be trying something similar with Area120?
Being successful at startups is although an entirely different matter, and I guess that's why most people don't take up the opportunity. The paychecks are golden handcuffs, for some.
I think, these pg essays are relevant:
http://paulgraham.com/before.html
> The component of entrepreneurship that really matters is domain expertise. The way to become Larry Page was to become an expert on search. And the way to become an expert on search was to be driven by genuine curiosity, not some ulterior motive.
...
> At its best, starting a startup is merely an ulterior motive for curiosity.
...
http://paulgraham.com/start.html
> ...you don't need a brilliant idea to start a startup around. The way a startup makes money is to offer people better technology than they have now. But what people have now is often so bad that it doesn't take brilliance to do better.
...
> The best odds are in niche markets. Since startups make money by offering people something better than they had before, the best opportunities are where things suck most. And it would be hard to find a place where things suck more than in corporate IT departments. You would not believe the amount of money companies spend on software, and the crap they get in return. This imbalance equals opportunity.
> If you want ideas for startups, one of the most valuable things you could do is find a middle-sized non-technology company and spend a couple weeks just watching what they do with computers. Most good hackers have no more idea of the horrors perpetrated in these places than rich Americans do of what goes on in Brazilian slums.
> Start by writing software for smaller companies, because it's easier to sell to them. It's worth so much to sell stuff to big companies that the people selling them the crap they currently use spend a lot of time and money to do it. And while you can outhack Oracle with one frontal lobe tied behind your back, you can't outsell an Oracle salesman. So if you want to win through better technology, aim at smaller customers.
So do I.
And the other day, 200m into the run, I took a first glance at Strava and noticed it was way off (gps error). Ususally I would reset and start over. But, that one time I just turned it off. 30 minutes later I was back. I don’t know how far I ran (5 point something), I don’t know how fast (also 5 pint something) and obviously have no idea how my performance on sections compares to others.
But it was a great run. A bliss.
So, I’m not saying fitness activity tracking is no good or that google interviews are. I’m just saying, that, yah, every once in a while, in both, ignorance, is, well, you know...
They provided their current UI (barebones dashboard) as well as instructions to launch the backend server locally and requested I upgrade their UI to include a side panel for filtering a data table.
The task itself wasn't difficult, but the realization that these scum bags wanted me to upgrade their current product under the guise of a challenge. I instantly knew this wouldn't be a company I'd want to work for even if they did provide an offer.
The real problem is that they've broken the social contract implicit in the interviewing process, which is that the work you're doing is only to prove yourself and that they won't benefit by it except to be able to gauge your skills. If instead they had been honest up-front that they wanted to hire you short term as a trial period type thing with the possibility of hiring you as a full employee down the line, that would be fair.
Then, if you found they'd deployed it without you having granted them a right to use your copyrighted work, you'd have an interesting basis for a lawsuit.
That's what I usually do with code challenges!