None of the places I've worked at had me do a coding challenge. Either they already knew who I was through networking or they asked me to show them a personal project and explain how it worked. Each job was a great opportunity.
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 hated the idea that schmoozing outperforms merit, but it's absolutely true
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.
> time to schmooze (read: invest time in developing a human relationship)
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
Refusing take-homes is a reasonable stance but refusing to whiteboard strikes me as overly critical. It's a pretty standard thing to do in an interview... while whiteboarding may be a little silly, 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 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.
> It's a pretty standard thing to do in an interview...
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.
As a hiring manager I would take a refusal to whiteboard or participate in an in-person coding problem as a sign that the candidate knew they were not qualified to write code and therefore declined so as not to waste anyone's time.
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.
If all I had to do was a problem like fizz buzz, I'd probably go ahead and do it. In my experience, most coding challenges that are in-person or take-home are more involved than that Fizz buzz, taking an hour or more. I can't think of a single coding challenge I did in the last 6 months that didn't involve either building a full application or something with complicated or game-like logic. The closest thing to fizz buzz level of simplicity might have been the custom file/directory system I had to work on, but even that was more involved and nuanced than writing fizz buzz.
Hey, interviewing is a two-way street. I'd love it if the candidates that know they don't want the job halfway through told me so and gave me my time back.
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.
Whether or not 'everyone' wants to work there is not hugely material.
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:
Amen brother. Networking is absolutely the way to go. As employees or grunts and not a part of the ownership/capitalist class, our network is our biggest asset beyond our skills.
Some suggestions:
1) Try to socialize with fellow engineers at work. Coffee, lunch, grab a beer. Host or attend a dinner party occasionally. Put yourself out there.
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.
> There's nothing wrong with on-site coding challenges, white boarding, and a good chunk of brain teasers.
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.
"I personally don't recommend those kinds of companies "
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.
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).