Hacker News new | ask | show | jobs
by alex_lav 1045 days ago
I interviewed an ex-FAANG (developer) currently working as a software executive for a director role at a previous company. This person included 5 years-ish of Haskell experience on their resume. I don't know Haskell at all, but am aware of the language and its design principles, so I figured a lot of my technical questions would be pretty easy for him

Boy was I wrong. My first question was "Name the most common data structures you use day to day". He stayed silent for a bit and then said "What, do you want me to just list them?" I said yes. After some more silence he said he couldn't recall any. The fact that he said "list" was particularly ironic.

I kind of gave up on expecting used-to-be software developers to have retained a single bit of knowledge from their time as a dev after they've moved on to "leadership" or "management". I believe it's important for technical leadership to understand technical problems and their solutions in broad strokes, but it seems I'm mostly in the minority in the real world. That interview (and trying to hire for that role) really showed me how little engineering leaders remember about software.

2 comments

I write code every day and I still had to ponder your question for quite a while before I could think of a data structure I use regularly by name.

It is not exactly useful knowledge to keep top of mind. It is not like you need to look up how to use daily data structures. I had an easier time remembering the names of data structures I almost never use, or even have never used, as retaining their names actually has some usefulness.

In an interview situation, I expect I would also give up with stating I could not recall any to save the awkwardness of sitting there silent for half an hour racking my brain.

I'm sorry, but what? If you can't even remember what list/set/map whatever is called, how are you going to use them? We're not talking about exact syntax here, just what data structures you use...
> If you can't even remember what list/set/map whatever is called, how are you going to use them?

Certainly not by dictating their names to my coworker. Why would I need to know their names? I suppose some languages require you to know their names in order to use built-in implementations, but lots of languages use other syntax – often void of natural language (e.g. [], {}, etc.) – to do the same.

I eventually got there, but it took awhile to remember. That's great if you have prioritized trivia to occupy your mind's space, but I have found no reason to.

> Why would I need to know their names?

Why would you need to _communicate about programming_? Because it's a core part of your job...

> That's great if you have prioritized trivia

Every interview question can be characterized as trivia if you squint hard enough.

> Why would you need to _communicate about programming_? Because it's a core part of your job...

Honestly, I am not sure I have personally ever had to communicate low level details like that with anyone else. The people I have talked pogromming with in my life have all be capable technologists, which allow us to discuss in high level detail. If a list is the right data structure for whatever high level problem we are trying to solve, it is assumed we know that and understand how to use it.

> Every interview question can be characterized as trivia if you squint hard enough.

Well, I suppose. And there isn't anything wrong with trivia per se. But at the same time it should not be surprising when someone doesn't have an answer. A lot of this stuff just isn't worth having in immediate memory – unless you enjoy trivia, in which case, cool!

> Honestly, I am not sure I have personally ever had to communicate low level details like that with anyone else. The people I have talked pogromming with in my life have all be capable technologists, which allow us to discuss in high level detail. If a list is the right data structure for whatever high level problem we are trying to solve, it is assumed we know that and understand how to use it

This feels like either hyperbole or extremely rare/almost impossible, but regardless for myself and those I hire, I believe it to be a core competency.

I think the part of the question that throws people is “most common”. It begins to sounds like a trick question, because it hat is the most common? Its going to very from code base to code base.

Maybe id the question was name 3 data structures, any 3 it might sit well.

But even so. The question did devolve into list of things somebody should know as a ex developer.

> I think the part of the question that throws people is “most common”. It begins to sounds like a trick question, because it hat is the most common? Its going to very from code base to code base

That’s pretty textbook overthinking for an interview. The point is that it varies from codebase to codebase. Tell me about what you normally use and I’ll ask questions.

> Maybe id the question was name 3 data structures, any 3 it might sit well.

Trying to get every human to agree on the wording for an extremely easy and general question isn’t a worthwhile use of time though.

> But even so. The question did devolve into list of things somebody should know as a ex developer.

Interesting use of “devolve”. An an interviewer for a technical role, am I not allowed to have a set of required skills? And is a basic understanding of common data structures not allowed to be in that set?

Languages and English is hard. So asking clear questions is important. Proof is in this conversation. As you seem to have suggested so much from so few words.

It devolved, because it went from what looked like a structured question with a finite expcted result, "Name the most common data structures" , to something more loose, a list of structures, any structures.

Further more, we agree, the candidate was trash, and I don't think the wording would have helped. But I do think a more precise question, or maybe a less loaded, or bias inducing question of "name some data structures". Namely, because "common" is subjective as I pointed out. If you are writing lisp all day, well, list are your most common. If you happen to be in assembly then registers are. So to be a better interviewer you don't want to taint the question with your notions.

> If you are writing lisp all day, well, list are your most common.

That's the thing though. _Any data structure is fine_. Say anything!

> And is a basic understanding of common data structures not allowed to be in that set?

It may not be unreasonable, but the question didn't ask that. Granted, it is unlikely the interviewer was skilled in interviewing and the ill-conceived question was born out of their own lack of ability in the the job they were thrown into doing. The reality is that very little effort goes into researching the science of hiring in the first place, and it is even less likely to find people who are both experts in technical matters and experts in what little we do know about interviewing. For how critical businesses claim the hiring process is, it is amazing how they will so often happily throw the first bumbling idiot they can find willing to accept the interviewer role into it like it doesn't matter.

That's interesting ... Might be my specific view on Haskell, but there is a lot of emphasis on using the right data structure for the right job. That's probably because due to Haskell being immutable you have to rethink which standard data structures you can reasonable use.