外站转载--为什么经验丰富的程序员面试不及格

我的一个朋友最近加入了一家 FAANG 公司担任工程经理,发现自己处于招聘工程候选人的位置。

我们赶上了。

“嗯,”当他们询问我是否加入团队时,我笑了起来,“我不确定我是否能通过面试,但我当然很想再次与你合作!我会考虑的。

“X 和 Y 都说了同样的事情,”他们告诉我,指的是我们一起合作过的其他工程师。“他们都说他们没有资格。”

我点点头表示理解,但我的脑海中也有一部分在畏缩。我朋友提到的其他工程师都是可靠的高级工程师 — 出色的沟通者、协作者,并且擅长解决技术问题。我们都知道这一点,因为我们都一起工作了将近两年。

但是他们能否通过我朋友最近加入的公司的面试限制呢?结果可能是抛硬币。“嗯,”我的朋友答应道,“我的建议是先做一点练习。也可以在其他公司进行一些面试;不要冷着凉。

这就是经验丰富的程序员寻找新工作的现实。

为什么有经验的程序员在面试中失败?以下是我的思考。


1. 有经验的程序员甚至从未申请过公司。
有兴趣在特定公司工作 — 但从未申请 — 可能是经验丰富的程序员没有找到新工作的最常见原因。

编码挑战可能很困难,而且每家公司的面试流程略有不同。

您需要花时间做准备,其中包括:

更新您的简历
练习数据结构和算法以应对编码挑战
系统设计轮次练习
研究公司以展示产品兴趣
在任何带回家的作业上花费数小时(并非所有公司都提供此功能;有些公司允许您在带回家和现场编码轮之间进行选择)
想出简洁的故事(想想:STAR 方法!),你可以讲述一些行为问题,这些问题探讨了你作为队友希望做什么,以及你是否体现了使你“文化契合”的公司价值观,使你与你将要加入的组织“文化契合”。
通常,准备工作本身会让人感到不知所措。一个有经验的程序员可能会想,我还没准备好,几乎没有时间解决任何 Leetcode 问题。

人们有家庭,工作之外的生活,在几周内每晚花两个小时学习一门刚毕业的计算机科学专业学生心目中最新鲜的课程(数据结构和算法)并不令人信服。

除了没有时间准备之外,对失败的恐惧是经验丰富的程序员不申请的另一个原因。

“我不是一个足够好的软件工程师,无法进入 Google,”有人可能会说,尽管在其他方面完全有能力。

或者被同行小组进行多轮评判的前景本身就令人生畏。“我没有时间准备,我不想显得像个傻瓜,”可能是这样想的。

经验丰富的程序员在他们现在的公司取得了成功,获得了晋升等,并在同行中获得了一定程度的尊重。如果他们在同类公司的第一轮编码中失败,因为面试他们的工程师选择了一个棘手的问题,并且不喜欢他们试图解决该问题的方式,该怎么办?

这种情况经常发生,即使是由前经理或工程同事推荐给公司的经验丰富的程序员也是如此,他们可以保证他们的技能。

但这就是过程。一旦候选人在早期阶段(招聘人员聊天、招聘经理聊天或第一次编码挑战)失败,他们就不会进入现场,现场通常是一场长达 4-6 小时的“最终”马拉松,需要通过更多的编码、系统设计和行为挑战。

这种害怕被评判的恐惧,以及 - 由于运气好遇到糟糕的面试官、不熟悉的问题或缺乏准备 - 面试失败 - 通常会导致有经验的程序员根本不申请公司。

2. 访谈是主观的
不幸的是,人们是有偏见的。我对许多公司为面试官提供的最低(和不同)准备水平感到震惊。

通常,面试官可能会看到候选人的简历,并根据那张纸上的内容形成潜意识的偏见。

接下来,即使面试官可以从标准的面试问题中进行选择,他们选择的问题的难度也可能很大,而候选人是否通过特定轮次很可能取决于运气。

最后,面试官对候选人的评分严格程度会有所不同。他们会留下暗示吗?他们在那个小时是否感到特别暴躁,并试图对候选人进行比平时更严厉的评分?是否存在沟通问题 — 双方一方的口音会妨碍他们,并且他们难以理解对方?他们有没有注意到候选人由于紧张而犯了一个初级编码错误——并把它标记为对他们不利?

我见过面试的主观性令人震惊的情况,比如朋友从不同的公司收到了超过 400K 美元的高级或员工级别的录取通知书,但在第一轮或最后一轮被其他不太不同的公司的过分热心的面试官拒绝。

采访者是不是太热心了?也许。或者,也许他们也问错了问题。这位候选人压力很大,很累。这些主观触发因素的结合导致了 “不”。

为什么我支持有经验的程序员无论如何都申请(但如果他们不这样做,请理解)
不幸的是,换工作可能是获得大幅加薪的最直接方式。从历史上看,在公司工作 5 年(并被晋升)的员工通常比进入同一级别的新员工的工资要低,后者能够根据新的市场价格进行谈判,或者因为他们有其他报价而处于更好的谈判地位。

被拒绝是难以接受的,但我个人经常对我申请的地方表现得如此好(或差)感到惊讶,一旦我鼓起勇气这样做。

我申请的一些公司——认为面试会更容易——一直很艰难。

而一些我认为可以获得录取通知书的公司——认为面试会很困难——我最终收到了录取通知书。

换句话说,这真的就像抛硬币一样!

不过,总的来说,我尝试的面试越多,我的面试效果就越好。

我不建议过度使用,因为整个过程很累。但是,如果您是一位经验丰富的程序员,在一家公司工作了太久,并且出于任何原因考虑换工作,我鼓励您申请。

Why Experienced Programmers Fail Coding Interviews
A friend of mine recently joined a FAANG company as an engineering manager, and found themselves in the position of recruiting for engineering candidates.

We caught up.

“Well,” I laughed when they inquired about the possibility of me joining the team, “I’m not sure I’ll pass the interviews, but of course I’d love to work with you again! I’ll think about it.”

“That’s the same thing X and Y both said,” they told me, referring to other engineers we had worked with together. “They both said they weren’t qualified.”

I nodded in understanding, but a part of my mind was also wincing. Those other engineers my friend referred to were solid senior engineers — great communicators, collaborators, and great at solving technical problems. We both knew this, since we had all worked together for almost two years.

But could they pass the interview bar for the company my friend had recently joined? The outcome could be a coin toss. “Well,” my friend allowed, “my advice would be to do a little practice first. Get some interviews in at other companies, too; don’t go in cold.”

And such is the reality of an experienced programmer looking to find a new job.

Why do experienced programmers fail at interviews? Here are my musings.


1. The experienced programmer never even applies to the company.
Having interest in working at a particular company — but never applying — is probably the most common reason an experienced programmer doesn’t land a new job.

Coding challenges can be difficult, and each company has a slightly different interview process.

You need to spend time preparing — which includes:

updating your resume
practicing data structures and algorithms for the coding challenges
practicing for the system design round
researching the company to demonstrate product interest
spending hours on any take-home assignments (not all companies offer this; some give you a choice between a take-home and a live coding round)
coming up with concise stories (think: STAR method!) that you can recount for the behavioral questions that probe at what you would be like to work with as a teammate, and whether you exemplify the company values that would make you a “cultural fit” for the organization you’d be joining.
Oftentimes, the preparation itself can feel overwhelming. I’m not ready, an experienced programmer might think, after barely having any time to get through any Leetcode problems.

People have family, lives outside of work, and spending two hours an evening for a few weeks studying up on a course (data structures and algorithms) freshest in the minds of newly graduated Computer Science majors is not compelling.

Besides not having time to prepare, the fear of failure is another reason experienced programmers don’t apply.

“I’m not a good enough software engineer to get into Google,” someone might say, despite being fully competent otherwise.

Or the prospect of being judged for multiple rounds by a panel of peers is in itself daunting. “I don’t have time to prepare, and I don’t want to appear like a fool,” might be the thought.

The experienced programmer has been successful at their current company, gotten promoted, etc. and achieved a certain level of respect amongst their peers. What if they fail the first coding round at a comparable company, because the engineer interviewing them picked a tough question and didn’t like the way they attempted to solve it?

This happens quite often, even to experienced programmers who were referred to the company by a former manager or engineering colleague who could vouch for their skills.

But such is the process. Once a candidate fails an early round (the recruiter chat, the hiring manager chat, or a first coding challenge), they don’t pass onto the on-site, which is typically a “final” 4–6 hour long marathon of even more coding, system design, and behavioral challenges to pass.

This fear of being judged, and — by virtue of luck with a bad interviewer, unfamiliar question, or lack of preparedness — failing an interview — often results in the experienced programmer not applying to the company at all.

2. The interviews are subjective
People are biased, unfortunately. I’ve been shocked at the minimum (and varied) level of preparation many companies give to their interviewers.

Oftentimes, interviewers might see a candidate’s resume, and form a subconscious bias based on the content on that piece of paper.

Next, even if interviewers have the option of choosing from a standard spread of interview questions, the question they pick may very well range in difficulty, and whether or not a candidate passes a particular round may very well depend on luck.

Finally, how strict an interviewer grades a candidate will vary. Will they drop hints? Are they feeling particularly grumpy that hour, and try to grade the candidate more harshly than they would otherwise? Is there a communication problem — wherein an accent from one of the two parties gets in the way, and they have trouble understanding each other? Did they notice that the candidate made a beginner-level coding mistake due to nerves— and mark it against them?

I’ve seen the egregiousness of the subjectivity of interviews in the case of friends who’ve received senior or staff-level offers north of $400K in total compensation from various companies, but gotten rejected in the first or final rounds from overzealous interviewers at other, not-too-different companies.

Were the interviewers overzealous? Perhaps. Or perhaps they also asked the wrong questions. And the candidate was stressed and tired. And a combination of these subjective triggers led to a “no”.

Why I support experienced programmers applying anyway (but understand if they don’t)
Moving jobs is probably the most straightforward to get a signficant salary increase, unfortunately. Historically, an employee who has stayed (and been promoted) at a company over the course of five years might often be paid less than a new employee entering at the same level, who was able to negotiate against the newer market rates or be in a better negotiating position because they had other offers.

Rejection is difficult to swallow, but I’ve personally often been surprised by how well (or poorly) I’ve performed at the places I’ve applied once I gathered up the courage to do so.

Some companies I applied to for practice — thinking the interviews would be easier — have been tough.

And some companies I thought would be a reach to get an offer from — thinking the interviews would be tough — I ended getting offers from.

In other words, it really was like a coin toss!

Generally speaking though, the more interviews I tried out, the better I did get at interviewing.

I wouldn’t recommend overdoing it since the whole process is exhausting. But if you’re an experienced programmer who’s been at a company for too long and thinking of switching jobs for whatever reason, I would encourage you to apply.

评论 


Amy Blankenship

about 2 years ago


This is totally not the reason why experienced programmers fail at coding interviews. There are 3, IMO:
1) Coding interviews unrelated to the job (ex algorithms when the day-to-day job is understanding the DOM and CSS)
2) Coding interviews too specific to the job (ex how would you handle this specific problem you'd probably never see anywhere else)
3) Interviewers either too steeped in orthodoxy to recognize the validity of unorthodox solutions or too unmoored from the idea of best practice to see the validity of a solid solution rooted in best practice.

The Coding Diaries

Author
about 2 years ago


Thank you for raising up those three very good points that I missed! If I hadn't been rushing to get my thoughts out I would totally have attempted to address those ideas in "the interviews are subjective" section.

Milan Bella

about 2 years ago


I was working 4 years as C++ programmer, comapring myself to my peers I considered myself to be in the top range . I didin't pass even screenening interview by Blommber, just some basic questions on algorithms. Instead practising I decided never apply for high profile company. That was my best career decission. If I was successfull I'd end up as slave working on milion lines of specific legacy code fearing to be eleminiated as low performer later when you come to an age when you cannot code 12 hourhs straight. Instead I gone through lots of interesting and challenging projects for smaller low profile comanies, moved to Java and nowadays I am doing JavaScript. To me coding interview is a kind of red flag. To prepare few month for free to get a job is just a nonsence when there's a plethora other insteresting positions on the market. In my current team I have few juniours who were hired just based on the simple phone interview and had 0 previous coding experince. I was giving them support and guidance on difficult technical stuff and basically after few month they started to work independently and finsihed of fullstack all application, my only contribution was to write deployment scripts and single sign on.


Beeville Anonymous

Beeville Anonymous
Follow
Beeville Anonymous
441 Followers
about 2 years ago


I agree with Amy. If anyone else ever asks me to reverse a String or write a Quicksort or explain Polymorphism I will slap them. Some of us have lives; a 23 yr. olds senior college project is irrelevant so no, I don't want to rewrite it for you. And don't even ask me to do a 4 hour take-home project - figure it out yourself.

Graeme Ing

about 2 years ago


I wish we all collectively decided not to buy into this bullshit interview process anymore. and force a change. I've been in this industry 40 years, fuck off with your "reverse a string" test. There are decent libraries to do most shit asked on an interview.
I like to think I'm a great people manager with good technical skills. I build skilled and productive, but happy teams. If you're hiring me into a manager or director role, don't you fucking dare ask me to traverse a tree. Yes I can, but if that's what your managers are doing, I don't want to work for you anyway.


Arighna Maity

about 2 years ago


The comment section is more interesting than the article itself, with thoughts from experienced programmers.

Jezz Santos

about 2 years ago (edited)


I think you might be missing one of the biggest biases that experienced programmers face. And fear. Its something like Agism. The less experienced interviewers are comparing themselves to the experienced candidate, to see where they rank against them. 25–35 yrs olds in these FAANG companies are ultra-competitive, and they think that it is ultra-competitive all the way up their careers. They just don’t know any better. They see a more experienced person as a challenge to dominate (not as a colleague to learn from). They lack an understanding of the most important skills of the trade. Nothing new here. It has been that way forever. So they are gonna set ridiculous challenges and be highly judgmental about the performance and outputs.
This is not interviewing, it’s testing by inexperienced testers.
And that’s not what experienced people want to deal with.


The Executioner

about 2 years ago (edited)


Feel like there are some more reasons why experienced programmers fail/drop out of the interview.
1. You're testing them on stupid algorithms/questions irrelevent to the day to day job e.g. print out a fibonacci sequence
2. You ask for a 4 hour take home test. Nooo god damn, cant believe companies are still doing this. Clearly don't value interviewee's time and I've done a couple of these and you never get any feedback. I completely avoid any company asking me to do this.
3. We realise early on that the culture of the company stinks, we've done interviews ourselves and can read the signs when an interviewer is desperate for a new candidate or gives off red flags. In fact 70% of my interviews end on the 1st stage simply because I wouldn't want the person opposite me to be my boss or like the culture he's explained.
4. Interviewing is exhausting. Experienced programmers tend to be older, and have other priorities in their life. They know they can make more money elsewhere but is it worth giving up their current life style?
5. Market conditions are not good atm, most companies are laying people off. It's probably not the best time to be looking for a new job unless you can help it.

Michael Prendergast

about 2 years ago


Aa a SA I've seen technical leads, I rate very highly flunk out of coding interviews, because a tech lead's job is not really to be writing grunt code. The technical lead is the brains in the team, but the interviews are stuck on being a coder. Rather than taking the big picture and making the right decisions.

Max Can't Help It!

about 2 years ago (edited)


Decades ago, Google had great engineers. Today it makes money through near monopoly businesses. It's maps product, for example, hasn't improved in years and has some glaring flaws. Anyway, those who work at Google want to believe Google is special because of them, that Google was built by great test-takers. It wasn't. Today, Googlers spend 30% of their time humiliating applicants, playing games on their computers, and the last 30% doing a little work.
Creative and passionate people no longer end up at Google. They go elsewhere and build the businesses Google can't do and might buy if it fits into their monopoly.
Everyone would love to have Google on their resume. Everyone would love to have the money. But if you can't suffer the opinions of people who pretend they're better than you then you go where results really matter.
Ultimately, no one can identify good developers. You give them 3 months and see what happens. Or you look at what they've done already.
All companies rise and fall. As soon as a company like Google believes their shit doesn't stink it's downhill. The best thing Google does for society is inspire our future doers. It hires followers, not leaders.
PS, don't get me wrong. I use many Google products and in general love the services. But the best young devs I run across no longer end up at these companies. So I can only assume who does ;)

Bruno Ripa

Bruno Ripa
Follow
Bruno Ripa
220 Followers
Independent consultant | GDG Cloud London Organizer | GDGAcademy Mentor | Polyglot programmer

about 2 years ago


1. companies have their toy problems to use in interviews, sometimes they are way far from everyday problems (lots of programmers get used to use libraries, and not asking anymore what algorithm is being used to deal with a specific problem), or sometimes too vertical (you are spending nights on your problem and you ask me what could be a possible solution to it in less than 1 hour ?)
2. the interview is inconsistent with the role you are applying for (I have been recently interviewed for a role that could potentially go to CTO position in the near future and I was asked to sort a list in Elixir, while they were excited for my architect skills, which were never tested ..)
3. recruiters are not prepared to make the interview and lack real work experience to understand that what they are leading is just a quiz show, and that they are really not testing for any candidate skill or value in that process.
In 20 years I have personally experienced all of the above.


Code Monkëy

almost 2 years ago


Sr Dev with >15 yoe. I had Meta contact me for an interview. Leading up to it, they give you various prep for it. Including watching a mock interview. It consisted of some basic questions, and standard leetcode/A&DS questions. After the mock interview I asked if they had any different approach for more senior engineers who are long from Comp Sci second year, which is likely the last time any of us have had to think about that. Their response was "Nope, better get studying."
Sorry "bro", I'm not going to waste my time studying material that almost never applies to day to day. If something comes up that does need algorithmic optimization, it's likely going to need time profiling and researching, because the standard library for the language being used will have covered all the common cases that you would likely see in a leetcode scenario.
These "technical" interviews do nothing to reveal what I can bring to a team. No questions about leadership, mentorship, or even software design.

#DJScolam

about 2 years ago (edited)


All the claps, this is absolutely true and I’ve seen it all the time from both sides of the fence. Most recently I saw an MIT grad with three years in FAANG be unable to complete basic programming tasks because while they understood the latest in data structures and algorithms, they couldn’t apply any of the academic and theoretical knowledge to writing clean and elegant code in the day to day.

Alan Kleymeyer

about 2 years ago


Yes tests are subjective but also biased and contrived. It's like asking a novelist to read some original work in front of an audience with emotion. The environment is unlike how developers work so the added stress contributes to the "performance".


Brian Simpson

about 2 years ago


Its a crazy industry. You don't ask an electrician to install some new lights in your house and say to him "just do one as a test to prove to me that you can do the job". They would say "no way" and that's what I do.


Ani Panda

about 2 years ago


The real reason, most often, at least for me is, I can get as good or better job without spending 2 weeks preparing for the interviews at a non FANG company for a much higher base salary. if you take into account stock based comps, may be it's tiny bit lower, but, neither money nor a FANG name on the resume is a motivation to put up with all that BS.


Matt

about 2 years ago


There are many reasons why they fail my interviews, but the most common is is that 80% of people presenting themselves as competent programmers can't code their way out of a paper bag


Bawenang Rukmoko Pardian Putra

about 2 years ago (edited)


I don’t know how it is for anybody else, but I know what’s the problem for me. I am a pretty slow programmer. I am a slow burner so I usually can get to the solution pretty late. Had some coding challenges when I was doing some interviews once and I…...


Attila Vágó

he/him
about 2 years ago


I am a staff engineer at the moment. The last place I would want to work at, is a FAANG company. So many smaller and better companies out there to choose from. Anyone thinking they’re special because they worked at Google or Facebook is deluding themselves.


Daren Scot Wilson

almost 2 years ago


I don't think it's "fear of being judged" but rather a dislike of wasting time on something unproductive. Experienced engineers like seeing problems solved, products being made, customers being happy users. Showing off textbook assignment skills just doesn't motivate us.

Alex Stone

about 2 years ago


When I was a developer I failed couple of coding exercises simply for “the test evaluation team could not understand your algorithm”, basically I outsmarted someone and offended them. One piece of advice from me - write the most straightforward…...


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值