Live data from Hacker News

Hiring Is Broken – My interview experience in the tech industry

medium.com

421–430 of 693 posts

Re: Hiring Is Broken – My interview experience in the tech industry

#421
post #407

No offense, but not knowing BFS is kind of a red flag, even if its for a front-end position. It's the most basic graph / tree traversal algorithm there is. And you when you work with the DOM on a daily basis and use libraries that traverse for you its a good idea to have a basic understanding of whats going on under the hood. It's like saying you're a good programmer but not understanding basic concepts about memory…

If I took an interview with a random developer at your firm, drawn at random, not including you, and I spontaneously asked them to implement Djikstra's shortest path algorithm from memory, what percentage of them would be able to do that? Djikstra is not only basic and extremely simple, but it's also an algorithm that everyone who takes graph theory --- or really, computer science at all --- learns.

I'm guessing 10%.

Re: Hiring Is Broken – My interview experience in the tech industry

#422
post #393

I'm sorry, but breadth-first-search is a simple and fundamental algorithm and straightforward to write if you understand the concept and have decent coding skills. You're just visiting a level of the tree at a time: stick each level in a list, iterate over it, and append the next level's nodes to the next list. There's no trick to it. Not being able to do write a basic BFS algorithm suggests a) you didn't do any inte…

That's reasonable, but I'd like to share an experience I had interviewing a long time back.

I'd been writing lots of mathematically intensive code for building and solving large scale linear programs for about a year, and I interviewed at a job that was doing lots of math-ish business analysis. Code would certainly be written.

I was incredibly busy, and mainly spent my interview prep on math I thought would be relevant, though I really didn't adequately prep for the interview.

One of my interview questions involved some simple (really, I must be honest there, it was simple) recursive tree traversal. I blew it, and I'm pretty sure this is why they didn't hire me.

Six months later, I had to use quite a bit of tree traversal to model a series of conditions that had to occur in several possible patterns for a manufacturing system. Because there were various combinations of events that would "pass", I used trees to model the system, and I needed to recursively determine, in the event that the system didn't pass, what possible paths (including the least cost path) existed to bring the system into compliance.

I picked up my old reference books, reviewed for a couple days, and started writing code. As I did this, I started to feeling kind of embarrassed about the questions I had failed, since I was now reminded of how basic they actually were. I was chatting with a coworker about it and mentioned the interview, and told him that I could see why they didn't want to hire me.

He's my buddy, so he tends to say nice things, but he said (paraphrasing from memory): "but wait, doesn't that prove the opposite? The moment you needed to do tree traversal, you knew exactly where to go look. You know about these algorithms, you've done them and taken exams on them in the past, you just don't walk around ready to implement these algorithms on the spot."

So ok, BFS is so basic that I'll probably never forget how to to it again. But right now, this moment? I'd have to reason back through it. To get really sharp (especially since I won't know the questions in advance), yeah, I'd have to hit the books for a while.

Just how many times do I need to re-take my Data Structures and Algorithms midterm?

Re: Hiring Is Broken – My interview experience in the tech industry

#423

Earlier quoted context omitted.

You are explaining the problem exactly! Author spends their time building software; Hired Google employee spent their time studying to win the interview game.

You realize that "winning the interview game" consists of what's called "practicing"? Do you expect to succeed in life by winging it? I'm really taken aback by how many people think they're entitled to passing job interviews without preparing for them.

The problem is when the interview has absolutely nothing to do with the day to day work the hired employee is expected to do.

So someone who wants to be hired has to spend a lot of time and effort learning stuff that are only marginally useful - knowledge isn't bad per se, but it might be a bad allocation of resources.

I'm not saying that it is so in Google's case, only that I've seen and participated in interviews where questions had no relevance to the job description.

Re: Hiring Is Broken – My interview experience in the tech industry

#424
post #415

Why don't companies who ask these kinds of CS questions in interviews just put in the job ad something along the lines of "if you pass the initial filter we'll invite you for an interview. We'll grill you on some data structures & algorithms & give you some whiteboard challenges". Which is absolutely OK. If that's what you're going to do - regardless whether it's sensible or not - then potential candidates can either…

I've interviewed at companies like this (Amazon / Google / Microsoft) and they do indeed tell you ahead of time there will give algorithms / data structures / coding.

Right, they're probably a bit more organized given their scale.

Smaller companies could just email applicants their hiring process detailing what they expect at each stage. Tiny amount of work that will save a ton of lost time & hurt feelings.

Re: Hiring Is Broken – My interview experience in the tech industry

#425

I'm torn. On the one hand: the interview processes this post describes are hilariously broken. Stand up at a whiteboard and implement breadth-first search from memory! You know, like no programmer at their desk staring at their editor ever does. I think "that's the one where you use a queue, right?" is a fully valid and complete answer to that dumb question. I also think you're within your rights to demand that your…

Maybe your idea of a front end developer differs from mine. I don't agree that front end developers need to code BFS. They just need to know that graphs can be searched, that should be it.

Frontend devs can do many tasks that systems engineers (who can supposedly whip out algorithms in their sleep) cannot do: - Make pages render properly in all popular browsers - Make responsive UIs - Align text of variable length in the vertical center of a page - Know when to use tables and when not to - Understand when to use a SPA app and what not to - Make SEO friendly pages

etc.

All this has nothing to do with said algos. I really think that people who don't understand this should not be interviewing frontend engineers.

Re: Hiring Is Broken – My interview experience in the tech industry

#426
post #425

I'm torn. On the one hand: the interview processes this post describes are hilariously broken. Stand up at a whiteboard and implement breadth-first search from memory! You know, like no programmer at their desk staring at their editor ever does. I think "that's the one where you use a queue, right?" is a fully valid and complete answer to that dumb question. I also think you're within your rights to demand that your…

Maybe your idea of a front end developer differs from mine. I don't agree that front end developers need to code BFS. They just need to know that graphs can be searched, that should be it. Frontend devs can do many tasks that systems engineers (who can supposedly whip out algorithms in their sleep) cannot do: - Make pages render properly in all popular browsers - Make responsive UIs - Align text of variable length in…

I'm having a hard time responding to this. More and more, whole applications are being delivered in clientside Javascript using Angular or React or whatever. Are you suggesting that there are two "kinds" of front-end developers, the kind that knows how the DOM APIs work and the kind that can implement the rest of the application and domain logic in Javascript?

Re: Hiring Is Broken – My interview experience in the tech industry

#427
post #422
post #393

I'm sorry, but breadth-first-search is a simple and fundamental algorithm and straightforward to write if you understand the concept and have decent coding skills. You're just visiting a level of the tree at a time: stick each level in a list, iterate over it, and append the next level's nodes to the next list. There's no trick to it. Not being able to do write a basic BFS algorithm suggests a) you didn't do any inte…

That's reasonable, but I'd like to share an experience I had interviewing a long time back. I'd been writing lots of mathematically intensive code for building and solving large scale linear programs for about a year, and I interviewed at a job that was doing lots of math-ish business analysis. Code would certainly be written. I was incredibly busy, and mainly spent my interview prep on math I thought would be releva…

How the question is posed really matters. What if the question had been "hey, you have a starting node in a linked structure, and you want to visit / collect / search all of the nodes that it can reach, without duplicates", you'd probably come up with DFS or BFS on the spot because the problem is not that hard and those are really the only two ways to attack it, and having found one of the two you'd probably also realize that the other approach could have been used. Whereas, if just asked to implement DFS or BFS, the question becomes less about problem solving aptitude and more about memorization.

Re: Hiring Is Broken – My interview experience in the tech industry

#428
post #407

No offense, but not knowing BFS is kind of a red flag, even if its for a front-end position. It's the most basic graph / tree traversal algorithm there is. And you when you work with the DOM on a daily basis and use libraries that traverse for you its a good idea to have a basic understanding of whats going on under the hood. It's like saying you're a good programmer but not understanding basic concepts about memory…

If I took an interview with a random developer at your firm, drawn at random, not including you, and I spontaneously asked them to implement Djikstra's shortest path algorithm from memory, what percentage of them would be able to do that? Djikstra is not only basic and extremely simple, but it's also an algorithm that everyone who takes graph theory --- or really, computer science at all --- learns. I'm guessing 10%.

They all got through the interview process so I'm pretty confident about 80% of them would be able to do it and 100% of them would be able to implement BFS.

Also yes it's a basic graph algorithm everyone learns, but its inherently much more complicated than BFS which is a simple traversal. It's like bubble sort vs radix sort ... which makes this kind of a loaded question.

Re: Hiring Is Broken – My interview experience in the tech industry

#429
post #420

Earlier quoted context omitted.

Good points. They do have licenses and credentials, and they can be disciplined if they are negligent. Not for making mistakes generally speaking, but for professional negligence. They also have to carry professional insurance against malpractice. On the other hand the consequences of hiring a nurse who isn't qualified are very much worse than the typical consequences of hiring an unqualified developer.

You are right, but the consequences of hiring bad developers are rising every year. I think licensing is coming whether the industry wants it or not.

Why? The vast majority of industry engineers in other disciplines are not licensed. Why would software engineers be any different?

Re: Hiring Is Broken – My interview experience in the tech industry

#430

I'm torn. On the one hand: the interview processes this post describes are hilariously broken. Stand up at a whiteboard and implement breadth-first search from memory! You know, like no programmer at their desk staring at their editor ever does. I think "that's the one where you use a queue, right?" is a fully valid and complete answer to that dumb question. I also think you're within your rights to demand that your…

To be honest I was a bit taken aback by the author not being able to implement a BFS. It's a fairly standard and really simple algorithm and it's probably one of the most common ones to actually implement because of a need in your day-to-day work.

What do you do if you have a nested data structure (like a tree) and want to print it in order? You write a simple BFS on it.

It's not even a question where you need prior knowledge on the algorithm, it's just logical. He could've easily asked "Print the contents of this tree to screen" and it would've been the same.

I can see how some questions like implementing quick or merge sort can be annoying, most libraries have a sort() function that usually implement either (or similar), you don't often have to write them yourself, but a BFS does not fall into that category in my opinion.

Post reply on HN