I'm terrible at big tech company interviews--kind of a generalist, read Cicero rather than Knuth in college, tend to start out problems kind of muddled, etc. After a while I concluded the only way to get into large SV companies was to sell a company to them. It's easier to go through due diligence than the corporate interview process in a lot of places.
(That's how I got my current job.)
I do however think it's a game that conflicts with certain personality types, including myself early in my career.
I'm always curious what you (or anyone else!) think could be done better.
1.) They select using criteria that are easy to test, such as writing quicksort on the fly. That's a small part of engineering --you also want people who can recognize big-picture patterns and communicate them clearly. This is a lot harder to evaluate so many interviewers simply don't.
2.) They select for people who are already in similar positions. For instance, white-boarding kubernetes application design is pretty easy if you are already doing it. As an interviewer it does not really tell me much about your ability to think originally or whether you can adapt.
Getting around these biases is hard. One way I test people now is to ask them to show me their favorite design or code and explain exactly how it works. That starts them off on comfortable ground. Then I start to tweak the boundary conditions to see if they can adjust creatively. It removes the stress factor and is a lot more illuminating than coding up something totally new from scratch, especially if you only have 45 minutes to extract as much information as possible about somebody's thought processes.
Very interested in other thoughts on this topic. It's a hard problem.
IMO any team with an SLA should be avoiding these people like the plague, because they will tolerate bullshit manual processes that take all day. They have no motivation to make foolproof automated processes with good visibility and repeatability. The smartest of them will fight attempts to change the status quo because the status quo makes them look good and everybody else look like idiots.
Three of my favorite bosses were from the Fire All Heroes school of management. Two actually gave a speech to that effect in front of the entire engineering dept. They helped me get out of the hero racket.
It’s great to be needed. But it sucks being the bottleneck.
Even within Google, Facebook, Amazon, and Microsoft, you're usually being interviewed by a fresh-out-of-school 20-something who has no idea how to do much of anything, let alone evaluate candidates fairly. And yes, they "train" these kids -- but you basically can't train someone to do something that relies heavily on intuition. That requires experience, but 20-somethings don't have experience. So instead, they're "trained" to do the one thing you can do repeatably: ask coding puzzle questions from a book, and reject anyone who doesn't regurgitate answers with 100% fidelity. It's the McDonald's food of interviewing: not the best (or even good), but consistent across a large organization. Sort of.
So while big companies need people who can work on a team, exercise good judgment, communicate clearly, write clean code and not be racist/sexist/evil jerks, they get...people who can memorize questions from a big book of programming questions. I can easily come up with tests that get to each of those properties...but they rely on interviewers having good judgment, and most do not.
My internal dialog when asked things like a linked list or a hash table is "Oh god, does this mean they like code like this? I bet some 'clever person' at this company wrote their own hash table/event queue/template engine* and forces everybody else to use it."
* Unfortunately my current employer is just like this but I didn't pick up on that in the interview process.
One of the most painful interviews I have ever seen was a guy who had a resume listing a number of interesting projects. He could talk energetically and in detail about them. Then we asked him to write some code to solve a simple problem. He said he didn't know our primary language, but was very familiar with Python. I know Python, I was good with that.
He didn't know Python. I tried to help him, but he didn't get much farther. I eventually called the interview, with a complete 180 of my hiring opinion. Nice guy, but he couldn't be what we needed.
Good interview processes reflect complementary broad and deep concerns. It's kind of analogous to the way a strong team is better than the sum its parts.
This could be the first coding interview style that actually makes sense to me
As I mentioned elsewhere I think you can ask questions that look like work but aren’t (go too far the other way and you’re into IP problems)
You don’t want an organization that relies on one or two or three people to swoop in and save the company every time there’s an emergency. A production issue should look like disaster preparedness. Document, train, drill, prevent.
More concretely, make the important parts as obvious as you can, as similar to production as you can, so anyone can set up a system and try to repro the problem. Config, build, and deploy should be push button (very robust scripts with every cheap sanity and safety check you can manage). No flakiness is okay. Nor obscurity. Everybody should understand how it works.
Document everywhere diagnostic data comes from and goes to. Don’t let your most senior people solve production issues; assign them to people one step down (and throw in some promising mid-level team members for
diversity and longevity). Five why’s every outage and be sure your resolutions always involve making the problem easier to detect next time, not just prevent.
There’s less than 1% chance Facebook messenger would be able to live to the philosophy of “no ads, no gimmicks, secure messaging”
That’s why startups can disrupt. It really does reward bottom up innovation.
Facebook is a growth at any cost kind of company. They really wouldn’t have listened to him even if he joined Facebook in the first place.
The messenger on Android sends all your text messages and phone logs to Facebook. Mark approved that in the name of growth.
There’s absolute no way Whatsapp would have been invented at Facebook. Facebook only bought it because it could have been a serious threat to their dominance.
So there's no way they would have listened to Acton and let him build Messenger the way he wanted.
Add to that the fact that Acton's ideas didn't yet have any market validation. Once WhatsApp was a proven success, FB was willing to pay for it, but even so they are now destroying what made it good - https://www.theverge.com/2018/4/30/17304792/whatsapp-jan-kou...
Brian Acton himself left 3 after later, months before all his options vested. In his case it was about Whatsapp monetization, but it's in the same vein (lost of control of the company).
That there is a stunning amount of randomness in hiring is, I think, by design.
I'll hire someone who knows how to find out what they are missing over someone who knows a lot of details but can't grow. But that is hard to justify and involves risk: what if I misread someone's capacity to learn and I just hired somone without the skills nor the ability to learn? Joke's on me!
So larger orgs will naturally go for process-driven hiring practices, so they can cover their behinds (and part of that is due to the requirement of applying the same standard to everyone—can't fault them for that).
But this is how small orgs can win, by taking chances on candidates that are very driven to grow, and can create impressive teams that will outlive the company: good teams always find a way to recombine at least partially in other companies.
So the corollary for candidates is: you have to reverse-engineer the hiring process of the large company you're trying to join. Or you can go for smaller companies* that do something you want to get deep into. Total comp is less but look at it in terms of you getting paid to learn. Then make yourself available so that large orgs come trying to hire you. When that happens, it will be on your terms.
* Note: small companies don't have to be startups. While startups can be fantastic places for growth, they can also be sh*t shows since the entire company is trying to figure itself out, so be sure you properly interview their founders to get a feel for their integrity/sleaze.
Being told, "You obviously don't have experience" by a company when it's literally untrue really grinds my gears.
It just grinds my gears when a company adds that little bit of insult at the end of it, by somehow making it your fault in the end for supposedly lying to them.
Or they're not a good fit because the recruiter who found them isn't recruiting for a team where they'd be a good fit.
So it's not just they they weren't selected, they weren't selected for that role.
That is the candidate's decision to make, not the company's.
“I was given an awesome job by Google” is passive. “Google gave me an awesome job” is active. They mean the same thing. The only difference is whether the sentence puts the emphasis on the entity getting or giving the job.
The end result is the same but there is a distinct reason for the decision.
Once you've seen the inside of the hiring process, you'll never take this stuff personally again. It's utter garbage. At best, the process manages to select for a few traits that are probably useful, while de-selecting for others they didn't realize were crucial for ultimate success.
If you doubt this, ask yourself how one of the tightest hiring sieves in the world managed to produce Google+.
I arrived on time and was told to wait outside the CEO's office. Through the wall, I could hear him talking to someone over the phone about football and what flavor chicken wings he wanted to have ordered and delivered to him. I sat there for 25 minutes hearing his muffled dudebro voice ramble on as if his schedule was clear for the day.
Finally, he let me in. At least he remembered my name. I told him why I wanted to work for Acme Corporation and the skills I planned on bringing to the table. He told me almost nothing and had me out of there in less than 10 minutes.
Not even an hour after I left did I receive an email from the same HR person who told me "Welcome Aboard!" that they wouldn't be moving me forward in the hiring process. It was one of the most devastating moments in my life because that initial email and the phone call I got after was a sign that my shitty life was finally going to turn around.
It did help teach me a good lesson that I would learn multiple times(with much softer landings) later on, which is that most people involved in hiring don't know what the hell they're doing and that just because a company makes a lot of money doesn't mean that forms of insanity aren't baked into their processes. You've just got to let rejections roll off you.
I wonder if/how companies try to measure their false negative rate. Despite how straightforward it is to fire someone in the U.S., they keep saying "it's better to reject a good candidate than hire a bad one." Is that really true? I wonder how many big companies have thought about testing that assumption, maybe changing their selectivity and measuring the effect. Have they really measured how much it costs to hire/fire a bad performer and shown it to be greater than the productivity they'd get out of a good performer they are inclined to reject? Does their strategy of holding out for months, looking for that unicorn candidate instead of hiring someone who's "just fine" today really work? How do they know? Have they measured it?
Are they even serious about their existing selectivity? Is it baked into their annual performance process too? How many of them apply their selectivity bar to their existing employees? One common thing I've seen at companies is many of their "old guard" long time folks would never pass today's interview hazing. The most difficult thing most people ever do at a company is pass the interview.
Plus it just isn’t plausible that the finest developers in the world were flocking to work on a web based project management tool so how was he an authority anyway...
It depends on the role. Sales tends to be pretty performance-oriented without a lot of leeway if you miss your numbers.
But, for better or worse, the attitude for most roles at most companies is that, once they hire someone, they mostly don't want to fire them if they're doing an even halfway competent job so long as the company as a whole isn't doing layoffs.
This doesn't sound anything like the "bad hire" everyone claims to be paranoid about.
I have all but stopped applying, am doing freelance work to keep my skills sharp and pay the bills, and plan to start my own company in the future.
My motto: If you can't join 'em, beat 'em.
Edit: most companies I applied to are not of FAANG caliber. Also, I don't feel entitled to be hired; in most cases they didn't even deign to write a rejection email.
How do you land the first job? You have to stand out. It is possible (and even likely) that your CV is not great. The first thing I would do is to make sure to attend as many meetups as you can for areas relevant to your experience. Try to find a few experienced people and see if you can get some feedback on your CV. Reassure them that you aren't looking for an interview per se, you would like some independent feedback so that you can make your CV look better.
When you get an over the phone interview, your attitude should be that the in person interview is nearly 100% guaranteed. There should only be 2 reasons for not getting the in person interview: the job is wrong for you (which you should be able to detect) or you have flubbed the phone interview. Without being too much of a pain, get to know some senior people in meetups and chat with them about technology. Try to get some honest feedback on what they think about your potential as a programmer based on those conversations. Over the phone interviews are a bit like that -- you should have the feeling of just kind of geeking out about your chosen field and chatting with like minded people. Practising conversations like that will help you a lot. Getting feedback is really important as well.
Now, here's where it gets hard. When I'm in a big city and go to a meetup, I often find myself chatting with someone who is clearly not very strong as a programmer. Usually they are looking for work and usually I'm not interested in bringing them on board for an interview where I work. However, it's hard to give good feedback because you don't know the person and can't tell how they will react. It's important to pick up on that vibe, because of the next step.
If you find that people aren't going out of their way to rush you to an interview, probably it's because you don't present yourself as being a solid enough candidate. So this means you need to figure out what your biggest weakness is and work on that.
The biggest red flags I've found with really junior people (and sometimes even senior people) are:
- they have funny ideas that they obviously haven't tried in realistic situations because they aren't going to work. e.g, "In my foobar server code I discovered that it runs faster if I name all my variables, a, b, c, etc." Maybe not quite so stupid, but often pretty close.
- they have strong opinions on stuff despite having almost no experience "Ruby is the best programming language, OO sucks, Testing is stupid", etc, etc.
- they regurgitate stuff they've heard or read and present it as gospel "Why isn't everybody using microservices? Super-programmer Sam says you are a dufus if you don't and I believe in Super-programmer Sam".
- just generally clueless without realising it "I'm good at Rails. It's the best way to write front end apps".
What I'm looking for in a junior developer is someone who knows a little bit, understands that they know only a little bit, is hungry to learn more, enjoys programming and demonstrates a knack for learning.
Things that really impress me are people who meet me one time and if we get talking about TDD, for instance, will go away and at the next meeting flag me down and say, "I did this. Can I get your feedback on it?"
Doing freelance work is great if you can manage it. However, you should also take the opportunity to build things that will help your life (even if it's just a TODO app, or even if somebody has already written something better). Use the opportunity to practice. Write it one way. Rewrite it a different way. Listen to senior people who tell you "X is amazing, you should use X" and then try it. Go back and say, "I tried X and I'm not sure that I understand how it's better. Can you have a quick look at my code and tell me if I'm doing it in a good way?"
As strange as it sounds, this is exactly what I want in a junior person at work. I want them to be eager, humble, always learning, and engaging. I want them to bug me constantly about how to improve. I want them to listen closely to everything I say and to try to integrate my advice. People like that are gold for me and I will seek them out.
But the biggest thing is that you need to be interacting regularly with people in the industries. Meetups are best. If you can't manage that (due to your location), then devote yourself to working on open source projects, hanging out on IRC, etc, etc. It sucks that you have to work so hard at the beginning of your career, but it will pay dividends!
Anyway, good luck! As long as you are always thinking, "What can I do to become a better programmer", everything will fall into place.
Some more context which clarifies my decision to "pave my own road":
-Before Fullstack Academy, I founded/co-founded two startups (we succeeded in building the products, but failed at marketing). I've also taken some actual CS courses. Bootcamp filled gaps in my knowledge and taught me how to collaborate better, but it wasn't my first time coding or interacting with fellow coders.
-Most of the jobs I applied to are entry-level. If a company is looking for senior talent, they should state that clearly and not waste junior developers' time.
-When I get excited about a company, I put a lot of time and energy into my cover letter/introductory email. In return, most companies didn't even bother with a template rejection.
> What I'm looking for in a junior developer is someone who knows a little bit, understands that they know only a little bit, is hungry to learn more, enjoys programming and demonstrates a knack for learning.
I'd like to believe that describes me... now I just need to figure out how to better communicate that in my job apps.
(Also, this feels like it even started as a twitter thread.)
I wouldn't, but you could...
Sure, an accountant will be able to give you an answer how one individual human or piece of equipment contributed to the result. It will be a different one depending on what you need the number for though (to calculate taxes? to make an investment decision? to allocate production resources?), and it is quite arbitrary.
Sounds good on paper. In practice, what people do on Github is worthless.
I've only one company ever actually looked at what I made on GitHub. Otherwise, they'll never check out what I've done even if a project is listed on a resume. Nobody has the time or amount of shits to give to actually review your own code. Very few people I know who are working as software engineers even have any serious projects or contributions on GitHub.
As much as I love doing side projects, the idea that companies care what I do on GitHub is some of the worst advice I've encountered. Now my profile is full of trash I've forked along the way and it hasn't made a lick of difference as to how many interviews I've gotten.
Basically, I’m looking for good signal, but that can show in a lot of different ways for different people. If OSS or side project or whatever is something you enjoy doing, or if you’re not working full time and struggling to prove that you can bring the goods, these sorts of things can help you.
The latter will either get you a salary increase or you'll be shown the door. Ask me how I know.
The job candidates didn't create this problem.
Most companies disclose what their process is up front and you're free to opt out at any time. Intentionally wasting the time of the recruiters and engineers at companies you don't want to work for just to "practice" just seems really rude
That's funny. You should do stand-up.
The argument cuts both ways. If the company rejects most people they bring for an on-site interview, then they are OK with wasting a lot of people's time. It is the company's responsibility to screen their candidates better.
Among the FAANG companies, 7 different recruiters contacted me this year (including multiple recruiters from the same company - for different divisions). I didn't apply to any of them. I got past their screen and they brought me on site.
We truly are in a fortunate "bubble" where we can sympathize with those who don't get exactly the top-paying job they were looking for and had to "settle" on Twitter, Microsoft, etc.
Other thing worth mentioning is that "culture fit" might make companies turn down excellent developers, who don't happen to have the founders' same personality type.
It gave me a good laugh, it's comforting to find some people who are saltier than me. It made confronting my own saltiness easier.
It is easy to say, "don't take it personally", but when you're starting from a non-traditional background, and therefore the amount of rejections you receive is probably higher than normal, it is really challenging not to let it get into your head and think maybe you're just not cut out for this line of work.
And I've been on the other side of the table many times and rejected good candidates simply because we had what we perceived to be better candidates.
So it is often not even be your fault, just for some arbitrary ranking/preference done by the interviewers that day someone else got the role(s).
But basically: one company rejected me because was against company policy hire people without experience... Except they wanted to be the first company in my country to hire someone for that role and wanted to hire a local. No wonder they even wrote magazine articles complaining of not finding anyone...
Another rejection: person that was supposed to phone interview me didn't shown for work at all, they asked another person to interview me, that person had no idea what was going on, stuff didn't went well at all... Had to answer questions for coding language I didn't knew because the person didn't knew the language the job offer was for...
But I don't give a fuck. A company wants to reject me on stupid grounds? I'll go get a different job at a better company. There's _tens of thousands_ of software employers in the bay area. If one decides they dislike me so much that they're willing to do this, it's probably a bullet dodged anyway
The answer is that you're not entitled to a role, just like a company is not entitled to have you. There's no stigma in saying "You're not exactly what we're looking for right now", even if it's the case that you might be _really great_ somewhere else or even ideal for that exact role in future.
I don't understand people who take a "no thank you" personally, some of the comments are along the lines of: "Ha! sure showed them!" but really it's just like dating, sometimes you get passed up for no other reason than you weren't the person the other was looking for at the right time. Understand rejection, don't treat it like an enemy.
Perhaps that makes sense if you don't make it past the application or initial phone conversation
However, once a company gives you the opportunity to demonstrate your professional skills, either via a technical phone screen / homework / on-site whiteboard-a-palooza, I don't think its accurate to state that they're just not that in to you.
Your personal performance in that session is the reason for you advancing forward or not and when you don't, it is hard not to take that personally.
Probably because they've been personally rejected for a job.
I get what you're saying in the context of one job, perhaps when you already have experience. But when you're just starting out and get rejected repeatedly, of course it's disheartening.
I'm not saying that a steady diet of heartbreak songs makes for the best listening, just that the impulse is widespread, and so arguably understandable.
How many places whiteboard an interview but once you are hired no whiteboards can be found. We are a far ways away from when companies start interviewing with specific questions that relate to the actual role. If that happens you can start taking rejection personally.
Once I made a game of it, I could actually have a tiny bit of fun ("yay! another one down! keep going!)
It still stings, but if you want to be truthful, you need to make a friend of failure if you are doing anything worthwhile.
Maybe success isn't tied to grinding out a bunch of leetcode?
I don't think it hurts his brand any to be open about his rejections.
I wish people gave better signals for the latter, so you might know better whether you should keep applying, pivot careers, or check out.
Many others in the list never made it past the phone screen for twitter.
Beyond the rudeness, it smacks of arrogance. Even if you sense the the person will not be a good match, there are ways of wrapping up a little quicker without being a *bag. And we wonder at the coarseness of our society today.
Rarely do I know why I'm rejected, even if I ask but it feels like it could be anything, like a keyword. Applying for jobs is basically Bumble but, less fun. Instead of pics of you on a horse, you have a CV.
I bet if you combined up-front testing (like hackajob) or a boot camp course with short-term contractual work from various companies, you could create a decent hiring funnel too.
> Anne-Gaelle Colom@agcolom jQuery
> I was refused a reference by my supervisor in France who thought the male student on my team did all the work.
He got rejected by a company ("Not enough experience" was the reason given).
Then, 7 months later, not only did he get accepted to the very same company, it was at 2x the asking price from before.
It really goes to show that the hiring pipeline can get pretty schizophrenic sometimes.
People enjoy complaining, more so in groups.
Addendum: there should be a companion site "Even twitter rejected me!"
JS always felt to me like a language wherein you didn't want to memorize all of it's arcane weirdness anyhow.
The other thing I find odd is why employers care that someone has deep and existential knowledge of JS? Who cares? I would probably object to any of my devs moving into JS weirdness unless it was totally necessary. You want simple, clean and readable solutions to business (or technical) problems, not something fancy pants. Every bit of oddity / less common stuff introduced just increases risk.
> The other thing I find odd is why employers care that someone has deep and existential knowledge of JS?
They are probably just bad interviewers, or the company really doesn't know what it wants. Esoteric knowledge questions are a warning signal that you probably don't want to work there.
As for TS I'm thinking interfaces, generics etc.
Something I’ve always been told about interviewing: getting in the door means you are at least qualified for the job on paper. The company would not waste its time talking to you if there wasn’t at least some chance they are going to hire you. Whether they hire you depends on how well you spin your story and how strong of a rapport you form with the interviewers.
If someone does not like you, they will not hire you. This can make things difficult for introverts and socially-awkward people.
Hiring is very difficult. Your have limited amount of time with the candidate and based on some coding task and a few hours of interview you need to predict whether that particular candidate is going to perform well in the role you're filling. It's hard, and I'm sure I passed on a few good candidates just because at that point of time I wasn't sure enough whether they'd be a good addition to the team or not.
Jobs at most well-known tech companies are really dumpster fire terrible things, bad for basic psychological health.
It’s sad that we consider getting these jobs a serious measure of any kind of success.
Edit: to this day I have no fucking idea what “inverting a binary tree” means, other than the interviewer was too proud to admit they made a mistake.
Trees have two dimensions and “invert” is the one you can’t change.
You will never have to implement this yourself for real.
Asking someone to describe the simplest possible transformations on one of the simplest data structures isn't a stretch, and this is coming from someone without a CS degree.
EDIT: And that's not to say Google doesn't have a screwed up hiring system. I know someone who implemented a dynamic programming problem correctly, with the appropriate big O complexity, but was rejected because the constant time factor was slightly higher than what the interviewer was looking for. That's a BS decision; Max Howell's was not.
'Reverse' is switching the orientation left to right or front to back. Top to bottom is 'inverting' (except in graph theory where inverting means something entirely... weird).
> other than the interviewer was too proud to admit they made a mistake.
as one graph. I must say I'm surprised someone can't write this given enough time and proudly claim "they didn't hire me because I couldn't do this". Seems like CS 101 hw.
Most of us are at least partly in the business of data transformation. Few of us should be implementing trees (you want coworkers who are informed consumers of data structures, not people who think reimplementing solved problems at work is a reasonable or even sane thing to do).
The simplest one I have is this: Hand them a data structure containing a list of lists, have them generate a list of the grandchildren ordered by some property of the grandchild.
Like take a list of cars or computers grouped by make and model and give me all of the models sorted by price, or by popularity. If that's too simple, filter by another criteria and do a little data cleanup.
I've seen people drop elements, get the order wrong, scope variables too broadly and confuse themselves into grabbing data from a previous iteration, or forget to grab it entirely. And this is exactly the sort of thing that puts your team on the spot for having dumb bugs in production. Not inverting binary trees, or fizzbuzz.
But why would I need a data structure where I have the elements by the leaves instead of the roots? Make the nodes doubly linked (parent element) and you get the same effect without all the grandstanding.
For some reason I'm struggling a lot to find a job in Berlin.
Most of the CVs I've sent never get an answer, those who get there ask me for a phone interview which that I never get through. They always answer me with a copy-pasted template from the Internet.
This is some feedback I got from other people after checking my CV
- I'm too creative for "normal jobs" but not creative enough for the creative ones
- My last 2 years I worked as a freelancer and German companies don't like that
- I don't show consistency in tech stack
- I'm in the verge of getting old
A large part of our hiring process involves deciding if you think you can work with this person day to day and if you think they'll fit in the company culture.
Possibly... it's all of the above.
"Hey everyone, these massive corporations rejected me, making me feel bad about myself. But eventually, a massive corporation accepted me, so now I feel good about myself!"
I was rejected by Fashionable BigCo X and Y but then eventually got a job at Fashionable BigCo Z
Which is great, it really is, but not really all that interesting (sorry!). You've only been rejected in a very narrow sense. Everyone has an off day, or off interviews. You were actually accepted by the mainstream, eventually. It's like saying you were only accepted to 2 of the 5 world class universities you applied to. In what sense have you suffered rejection?
I was hoping for more of this variety:
I was rejected by Fashionable BigCo X and Y and Z. That path was obviously not going to work out for me. But I at least knew my own value. So, undeterred, I instead did awesome thing #
There are a couple like that. That's interesting. Someone who holds their confidence and actually outperforms others' expectations, despite lacking conventional sources of validation.
When we see that repeated for many successful people, I hope the takeaway becomes: your interview process is probably not doing what you think it is. In some cases this extends to the entire work culture. E.g. workplaces that situate themselves in a mindset equivalent to "we must hire the best unicorns to possibly succeed". Other, better ones instead try to embody "we will continually improve our hires. we will help make them great. (oh, there are no unicorns.)"
A concrete example: A place I interviewed in my last search uses pair programming extensively in their day-to-day (and have lovely twinned monitor/keyboard hardware setups to support this!) They use that in their tech interviews as well. You and a candidate sit and talk about code. It's a lovely experience, and far more grounded in the work than just about any whiteboard interview.
Pair-programming isn't the takeaway here. It's that this org built an interview model which was virtually identical to their actual working model.
In general, best not to draw inferences from data that wasn't randomly selected.
I was rejected by a startup for being a "big picture thinker" and not a "builder" after flying to big city for a full day of interviewing. Shortly after that I started a business helping local people align their business operations with technology.
I like the variety in hats I wear now and it has open doors for roles that aren't just engineering and more oriented towards my strengths.
I read it completely differently, like "See this has happened to us all at some point; it's not personal."
For me, as an older programmer, it's not about 'self-worth'. It's about sunk cost, it's about our ability to provide for our families, it's about what we are doing with our lives when we have much fewer days ahead of us than behind us.
What do I tell my kids or wife? I can't get hired because I didn't memorize enough JS functions, or the right one, or didn't grab onto the right tech stack?
This isn't about a theoretical emotional idea: it's about survival today, into old age that is coming up on me quick, about providing for families.
Well, guess what? Now I'm older and I'm more expensive. Thankfully I saw it coming, and I have been saving diligently along the way. I'm not rich, but my lifestyle costs are not insane and I can continue to save from now until the gravy train pulls into station.
At that point, god willing and the creek don't rise, I can afford to work part-time, or take a big pay cut, or switch to consulting gigs.
There are a huge number of random things I could have been slotted into right out of school and I'd have done a good job. Today, my skills and compensation are much more specific.
It's easy to say that people should keep skills up-to-date but if you're truly a world-class expert in X, it's hard to transfer that level of skill to Y. That's a different level from junior competency in one language picking up another language.
I know someone at a largely military sub talking about bringing in "geezers" to consult on some very specific classes of problems.
Luckily, I ended up somewhere that I actually like and am making more money than at my previous gig, so it all worked out, but those months spending down savings started to wear on me.
Ugh, I don't even have a family and the amount of time spent on phone screenings, pairing sessions, whiteboarding, and take-home code challenges becomes staggering. What sucks is the more places you apply to, the more the inefficiency of proving that you can program rears its head. I'm not against these things per se, but even spending just a few weeks applying to companies and doing those things gets tiring and demoralizing. I can't even imagine what this will be like in 10+ years when I'm older and have people depending on me.
Everyone can feel bad. Just because someone could get a job somewhere else doesn’t mean rejection doesn’t sting. That’s like saying that a breakup shouldn’t hurt because you can just get another girlfriend.
You kind of described r/relationship_advice
Simply dismissing these peoples' feelings because they are successful is not helpful. I do not like the trend of assuming people cannot have problems and are not worthy of help or compassion because they are privileged in some way.
We all get rejected from dozens of interviews. That's just life. Did anybody ever think it wasn't like this?
Which we know because of what? Sites like this let people know exactly that!
> Did anybody ever think it wasn't like this?
The common narrative is that if you work hard your efforts will be recognized. I don't normally hear "after a lot of people utterly fail to recognize them" unless you're talking about fiction writing.
> it feels like they want medals for getting rejected at companies that haven't even bothered to give me a callback.
I'm not sure why you draw that conclusion. Many of the messages I see are along the lines of "don't give up" and an implied "you can be skilled/capable without them recognizing it". Why do you think this is self-promotional rather than inspirational?
You're right, of course - failing to have ability recognized is very normal. But we tell our young people a very different message, and this site seems to be correcting that a little bit.
I myself have been on interview committees and voted to reject candidates who got hired, and turned out to be good. Why did I want to reject them? Don't really know, just got a bad vibe in the interview more than anything. We didn't do much technical screening at that company. Decisions were mostly based on past experience and references, and whether you seemed reasonably intelligent and sociable in the interview. I think that we hired a real dud maybe once, so it seemed to work.
It often feels to me like people are using that as a justification of the quality of their hiring practice. What's interesting is hiring practices vary greatly across the board but mostly in aggregate seem to produce this "we only ever got a few duds" result.
My hypothesis has now shifted to "most people can do most jobs". Or to restate it "There are only a few duds. Period. And hiring processes produce mostly random results. That's why we see a few duds come through."
Admit the "no brainers" in the upper right. Reject the "no ways" in the lower left. Then take a harder look at those in the middle. But the reality is that you could probably take an arbitrary subset of the middle group and they'd probably do nearly as well/contribute as much/etc. as the final selection you sweated over.
I've also been on the selection committee for various conferences over the years and that also often ends up working the same way to a significant degree.
There’s people who came off really well in the interview who turned out to be terrible hires. And equally there’s been people who seemed woefully inexperienced but I liked their honesty so took a gamble on them and they turned out to be some of my best hires.
Then there is everyone in between.
You have all of these processes in place to help your practical judgement but at the end of the day it’s really just a lot of luck because it’s trivially easy to game interviews and some really good engineers are often really bad at interviewing. So pulling those who interview well but are rubbish from those who don’t interview well but are brilliant is very difficult at times.
Heck in one interview I got nervous and started rambling on about FreeBSD instead of Linux. I was easily qualified enough for that job but that was a terrible interview on my part and I honestly wouldn’t have hired me.
It's almost like we're trying to solve a taylor series of work efficacy (of an individual on a given team) by capturing a very small number of data points in stressful situations (interviews) and doing a hell of a lot of extrapolation.
Based on how this industry carries on about "talent shortages" and "lack of good engineers", yeah.
They had to interview and receive offers from several companies though. I imagine the number of people that can just "send out a few emails" to get that result is very limited.
Yes, that's who this is for.
The best you can do is sort out the people you absolutely cannot use or don't want. The rest? The one's that you reject because of not matching some part of the interview process but largely are a good fit? They're probably fine, they're probably better than you think they are. In fact, statistically speaking it's probably better to have gambled on these people than the people you've hired and then had to fire.
We don't have the industry standards, the experience, the data, or the worker pool to fuss around with these ridiculous interview processes some companies employ. In fact these interview processes actively filter for people who are only willing to go through with the process, not necessarily the best talent.
So my hiring bar is pretty high now. I've had my current team all for 4 years and they are all still doing great.
In my mind this was a great solution: we got to make the hire, he had a chance to prove himself, and we'd not get stuck with a bad match if he had flaws. By letting him know in advance I was ethically clear because he would enter into the situation with his eyes open. He turned it down and my boss was furious with me for saying all that.
Now, some 15 years later, I realize how terrible my view was and how many bullets I blindly dodged. My best managers have all bent over backwards to make a problematic hire work out. Seeing that has always served as a soothing presence on my own occasional anxiety. And in the many interviews I've conducted, people that fall in the "I don't see why NOT to hire them" have outnumbered the "We should totally hire them" about 4:1. Frankly, the interview process is inadequate to give you a good impression of working with someone and their strengths/weaknesses. Heck, I routinely discover new surprises about co-workers after working with them for years.
My past self had been pining for an easy way to fire someone in order to dodge responsibility for the hiring decision. Now I see the hiring decision as not "are they great?" but instead "will I be able to work something out if they aren't great?" because we can't dodge the responsibility nor can we actually reliably be correct in our evaluations.
Unfortunately, my current view doesn't seem to match current hiring practices, where they want everyone to hit the ground running and magically resolve problems that are generally caused by non-technical issues (low staffing, contradictory customer pressures, etc).
What does your interview process look like, if you care to share?
"June 2015 - May 2017: Migrated database to new platform, and re-engineered web presence for diversified global social network, resulting in 450% increase in engagement, and 23% ROI. Site: racistbastards.com"
I’d probably be fine with the guy handling ddos mitigation and keeping the site up for some random offensive racist or kitten-murdering website if it is just a technical challenge. Although there is also the negative PR impact from having hired such a person, since some people, including potential customers, would be less tolerant.
Hard problem. Anonymity or pseudonymous markets is probably the solution here.
And it still isn't. Do you have a different example in mind?
A healthy person, when rejected from a company, realizes that the company did not need their skills at this time. This says nothing about the quality of their skillset, just that it's unneeded. Sort of how, if Linus Torvalds himself showed up to a frontend development interview, he probably wouldn't get the job.
The issue here is that you've made 'get this job and only this job' as your goal. That is an unrealistic goal, because it is unnecessarily tied up with a particular company. My goal when looking for work is to find an opportunity where my skills fit into someone else's need, and then milk the economic differential until such time as my skills are no longer needed, or I have a buyer somewhere else.
I suppose neither one is 'right' in the moral sense. But I think mine leads to greater happiness and satisfaction, so...
If you're personally rejected by a group you wanted to join, you should probably feel bad.
Legitimate cultural fit things usually have to do with how teams divide responsibility, how they collaborate on work, and preferences in styles of communication. If you have a team that tends to assign some individual work and communicates through PRs, that's going to be a cultural shock (and maybe a bad fit) for someone who comes from an environment with regular pairing / pair switching / mobbing and more in-person discussion of specific code decisions.
In general, there's a balance between individual autonomy and team cohesion that I think can come down to cultural preferences, and it's good to find people who can fit well into a specific team's environment. As someone who highly values individual autonomy in things like tool and language choice, code style, etc. I've been put in teams that culturally were much more in favor of cohesion and I was deeply unhappy- and now I try to filter for that in all of my own interviews.
None of that should have to do with candidates liking the same movies or beer as the exiting team, or any other sort of bias inducing "cultural fit" questions, and too often they end up conflated, but we shouldn't throw the baby out with the bathwater when it comes to cultural fit.
That's just doing the job. If company does X, then I do X.
I know folks have strong opinions on it but I've found there are many ways to do various tasks and as long as everyone works together in an expected manner... it's my job to do it that way.
No one i ever dated with which I experienced some “competition” was a good match in the long run anyhow. YMMV I guess.
However, I think there's some value to taken from it when thinking of it in terms of "hey, I got rejected for similar reasons, but that doesn't mean I can't bring value worth hiring me for."