Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
Falcon2001
Oct 10, 2004

Eat your hamburgers, Apollo.
Pillbug

meatbag posted:

I flubbed an interview recently, the task was to implement a game of battleship. I'm not a great developer by any means, but the vast majority of my time is spent fixing bugs and tweaking existing code, so making something cohesive from scratch was a surprisingly difficult context switch.

I havent interviewed or been the interviewer for higher rank roles but something like this strikes me as a bad idea because it doesn't really match real live coding situations.

Adbot
ADBOT LOVES YOU

Sagacity
May 2, 2003
Hopefully my epitaph will be funnier than my custom title.

Combat Pretzel posted:

I have no idea what that means. My experience extends to Portainer and the Kubernetes stuff in TrueNAS, both at home. It's just that they're not committing to installing infrastructure to host anything, until they've decided onto something.
I meant: It sounds like one of those situations where platform teams spend so much time designing the "ultimate solution" upfront that they keep forgetting there are actual teams that need something to work with *now*.

Carbon dioxide
Oct 9, 2012

ultrafilter posted:

A few jobs ago one of my colleagues gave a phone screen where he asked for the complexity of a piece of code, and the candidate told him it was complex because it had a lot of loops.

I don't see the problem? Maybe they didn't describe it properly, but Computational Complexity is literally the number of branching paths your code can take, and any non-infinite loop counts as a branch.

fluppet
Feb 10, 2009
I had a weird one last week
After a 10min call with an external recruiter I was straight into an interview with the head of engineering who didn't even bother with an elevator pitch of the company just a quick intro about himself and a quick ask about my background before ploughing into an hour long behavioural grilling

Apparently I didn't come across as interested enough in the company to make it to the next round of interviews

spiritual bypass
Feb 19, 2008

Grimey Drawer
Reminds me of the phone call I had once with a startup CTO who rambled about Elixir for 30 minutes then issued the recruiter feedback that he needed someone "more nerdy." Many bullets dodged over the years thanks to bad interviews

sim
Sep 24, 2003

Yeah I've had a lot of interviews like that with smaller startups. They have the CTO/VP/even CEO do the interview because there's only like 7 people at the company and they don't have enough trust in their current employees to find the right "culture fit". Definitely a bullet dodged. Like it seems cool at first, that you get to talk to the person you'd be working for, but it's almost never a good sign.

smackfu
Jun 7, 2004

It just amazes me that people can open a slack channel to report a problem and not see the previous few messages were reporting the same exact issue. Like willful ignorance.

Mega Comrade
Apr 22, 2004

Listen buddy, we all got problems!
And threads, why can't people understand threads?

epswing
Nov 4, 2003

Soiled Meat

Mega Comrade posted:

And threads, why can't people understand threads?

Speaking of which, Google Chat is forcing everyone to what I believe is the Slack model, instead of "conversation-topics" (containers of messages) it'll be "in-line-threaded" (one long toilet paper roll). Say what you will about either style (I suspect whichever is less familiar would be considered "the bad one"), the plan appears to be smooshing together all replies of all conversation-topics chronologically into an enormous mess.

https://workspaceupdates.googleblog.com/2023/05/google-chat-upgrading-conversations-grouped-by-topic-to-inline-threading.html

ultrafilter
Aug 23, 2007

It's okay if you have any questions.


Carbon dioxide posted:

I don't see the problem? Maybe they didn't describe it properly, but Computational Complexity is literally the number of branching paths your code can take, and any non-infinite loop counts as a branch.

You're thinking of cyclomatic complexity, and that's slightly more complicated than what you describe. It's also not what any interviewer is looking for when they talk about complexity.

raminasi
Jan 25, 2005

a last drink with no ice

They might have just been frauds, but this is also entirely consistent with technical interview anxiety. It’s a weakness of the format. There’s a very low ceiling on how much like the “actual work” your toy algorithm question can be, because in the actual job you don’t get fired for failing to juggle a simple loop correctly in 45 minutes, but those are the real interview stakes that the anxious brain is responding to. And it’s really difficult to be helpful and encouraging; when you say things “Does your language have any library features that could help here?” the anxious brain just hears “you are failing this test.”

This isn’t to say I have any solutions on the interviewer side.

Nybble
Jun 28, 2008

praise chuck, raise heck
I just went through a few months of search and there were just days that my brain didn’t work and I failed the coding part. Probably didn’t help that I was dealing with a sick kid and tired. I’m staff engineer level but sometimes it just doesn’t go the right way. That might be fine for some companies who are able to grind through candidates until the unicorn is found, but it seems not ideal at the micro level.

As a interviewee & interviewer, I’m a huge proponent of the short take home assignment and then discuss it afterwards. I can work at my usual pace and put something in that’s actually good instead of tossed together code while being watched by 2 people. And on the flip side, it’s not taking up my time (and embarrassment budget) to watch someone struggle with the syntax that I know they’d nail in a regular environment.

ChatGPT was mentioned by one company recruiter as to why they stopped using take homes, but that’s why the “explain your code, and how would you change it to incorporate X feature”session is so important. Plus the ability to talk about your code and new features is important for evaluating how they think about the meta-work of defining stories and tickets.

As I’m typing this I just realized: out of the 15 or so interviews I did, only one of them actually asked about project planning, which seems important for staff level?

epswing
Nov 4, 2003

Soiled Meat

raminasi posted:

They might have just been frauds, but this is also entirely consistent with technical interview anxiety. It’s a weakness of the format. There’s a very low ceiling on how much like the “actual work” your toy algorithm question can be, because in the actual job you don’t get fired for failing to juggle a simple loop correctly in 45 minutes, but those are the real interview stakes that the anxious brain is responding to. And it’s really difficult to be helpful and encouraging; when you say things “Does your language have any library features that could help here?” the anxious brain just hears “you are failing this test.”

This isn’t to say I have any solutions on the interviewer side.

Yeah, it's tough. On one hand, without writing code in the interview, it's very hard to gauge if they can do the job. On the other, it's hard to write code and think straight under pressure which you'd almost certainly never experience on the job.

My strategy is to start from the very ground floor. I'll just say "write a function that adds up a collection of numbers" with no further details, and they could write this in 1-2 minutes:
C# code:
void MyFunction(int[] array)
{
    int accumulator = 0;
    for (i = 0; i < array.Length; i++)
    {
        accumulator = accumulator + 1;
    }
    Console.WriteLine(accumulator);
}
Or they could write this in about 20 seconds:
C# code:
int SumNumbers(IEnumerable<int> numbers) => numbers.Sum();
The former instantly tells me not to let them anywhere near my codebase and to gently end the interview, the latter tells me they know how functions work, they can give functions reasonable names, they know what IEnumerable is, they know what LINQ is, they even know recent language sugar like expression-bodied methods. (As you can tell we're a .NET shop.) From there I ramp up bit by bit (write the same function iteratively, what about recursively, now gather your 2 or 3 implementations under an interface, etc). If they can just breeze through these softballs, then (A) maybe we're both not wasting each other's time, and (B) they've gained confidence for more complex/interesting questions, and the rest of the interview we can "work on code together" much more reasonably/amicably.

sim
Sep 24, 2003

You probably shouldn't let me anywhere near your codebase for other reasons, but I could easily see myself writing "MyFunction" in an interview. Without direction, I would assume an interviewer wants to see me write custom code, so I'd think that just using a built in function is not what they're looking for. Also, sometimes I forget the names of built-in functions, or the fact that they exist. The pressure of an interview makes that happen a lot more frequently.

Volmarias
Dec 31, 2002

EMAIL... THE INTERNET... SEARCH ENGINES...

ultrafilter posted:

A few jobs ago one of my colleagues gave a phone screen where he asked for the complexity of a piece of code, and the candidate told him it was complex because it had a lot of loops.

The candidate was not wrong.

sim posted:

You probably shouldn't let me anywhere near your codebase for other reasons, but I could easily see myself writing "MyFunction" in an interview. Without direction, I would assume an interviewer wants to see me write custom code, so I'd think that just using a built in function is not what they're looking for. Also, sometimes I forget the names of built-in functions, or the fact that they exist. The pressure of an interview makes that happen a lot more frequently.

MyFunction was also incorrect; it did not sum the numbers, it just effectively returned emitted the length of the input array.

That said, I would also assume that step 2 if the candidate wrote numbers.Sum() would be to say "ok, that's the right way to do it. Now, please humor me and pretend .Sum() doesn't exist."

Ice Fist
Jun 20, 2012

^^ Please send feedback to beefstache911@hotmail.com, this is not a joke that 'stache is the real deal. Serious assessments only. ^^

epswing posted:

Or they could write this in about 20 seconds:
C# code:
int SumNumbers(IEnumerable<int> numbers) => numbers.Sum();

It's been two years since I worked on dot net, I definitely know IEnumerable (although apparently not IEnumerable<T> as well as I thought), LINQ and expressions, but I would not have known off hand that IEnumerable<T> had a sum function and might have needed a "maybe IEnumerable has a method that can help" prompt to make me go look. I recall it now, but I had forgotten all about the aggregate functions that are available.

I'm sorry we can't work together.

But yeah coming up with good interview questions is hard. Yours isn't bad or scary. When I was doing interviews at my last company I mainly focused on questions surrounding Tasks because we did alot of async work. On the flip side when I was doing interviews for my current job I was freaking out for days before hand about the possibility of having to code in front of people (remotely). In the end only ONE company out of like eight I interviewed for asked me to do one and it was a walk in the park.

prom candy
Dec 16, 2005

Only I may dance

ultrafilter posted:

You're thinking of cyclomatic complexity, and that's slightly more complicated than what you describe. It's also not what any interviewer is looking for when they talk about complexity.

What were they looking for? Time complexity?

Volmarias
Dec 31, 2002

EMAIL... THE INTERNET... SEARCH ENGINES...

prom candy posted:

What were they looking for? Time complexity?

Always.

raminasi
Jan 25, 2005

a last drink with no ice

Hey, sometimes it's also space!

Cup Runneth Over
Aug 8, 2009

She said life's
Too short to worry
Life's too long to wait
It's too short
Not to love everybody
Life's too long to hate


Ice Fist posted:

It's been two years since I worked on dot net, I definitely know IEnumerable (although apparently not IEnumerable<T> as well as I thought), LINQ and expressions, but I would not have known off hand that IEnumerable<T> had a sum function and might have needed a "maybe IEnumerable has a method that can help" prompt to make me go look. I recall it now, but I had forgotten all about the aggregate functions that are available.

I'm sorry we can't work together.

Agreed, obviously the first function is simply wrong, but at least they named the variable something reasonable and descriptive. I probably wouldn't have thought to use Sum() and I use LINQ practically every day. Most programming interview questions are not necessarily about the solution you write but how you arrive at it. You can teach LINQ and generic collections very easily with a few PRs. Problem solving is much harder to teach. Of course, if you're only interested in hiring wunderkind that write perfect code with ease, then the interview question is a good one.

epswing
Nov 4, 2003

Soiled Meat

sim posted:

You probably shouldn't let me anywhere near your codebase for other reasons, but I could easily see myself writing "MyFunction" in an interview. Without direction, I would assume an interviewer wants to see me write custom code, so I'd think that just using a built in function is not what they're looking for. Also, sometimes I forget the names of built-in functions, or the fact that they exist. The pressure of an interview makes that happen a lot more frequently.

Writing a proper function name is part of the test. I could give you a full method signature but I want to see if you'll name the function reasonably well, and that you can set the input/output types properly (there are lots of acceptable answers here). Those things are just as important as the actual code to sum the numbers.

PS I didn't mention it in my post above, but, while this starter question is intentionally vague (doesn't specify anything about function names, types, the implementation to use), I do encourage the candidate at the beginning of the interview to ask any clarifying question they like, and even to go ahead and use Google (within reason) if they need to look something up, because that's what they would do on the job.

Ice Fist posted:

It's been two years since I worked on dot net, I definitely know IEnumerable (although apparently not IEnumerable<T> as well as I thought), LINQ and expressions, but I would not have known off hand that IEnumerable<T> had a sum function and might have needed a "maybe IEnumerable has a method that can help" prompt to make me go look. I recall it now, but I had forgotten all about the aggregate functions that are available.

And yeah, doing it "manually" with a for would raise an eyebrow, but using a foreach or doing it recursively or using Sum are all perfectly acceptable. I don't really care if you use the LINQ extension's Sum function, and not using it doesn't lose you any points. But if you do use it, it at least tells me you know about it.

Volmarias posted:

That said, I would also assume that step 2 if the candidate wrote numbers.Sum() would be to say "ok, that's the right way to do it. Now, please humor me and pretend .Sum() doesn't exist."

Exactly, that's what I meant by:

epswing posted:

From there I ramp up bit by bit (write the same function iteratively, what about recursively, now gather your 2 or 3 implementations under an interface, etc).

Cup Runneth Over posted:

if you're only interested in hiring wunderkind that write perfect code with ease, then the interview question is a good one.

You've lost the plot. There's a whole spectrum of acceptable answers to the question. The point of the exercise is to give the candidate a softball question, which they can complete in a variety of acceptable ways, which will give them confidence in order to slowly build up to more complex/interesting topics. It also quickly weeds out folks who cannot write code at all (if you cannot actually write a function to add up some numbers, like in my first code example, then you don't have enough experience yet).

epswing fucked around with this message at 17:36 on Aug 22, 2023

prom candy
Dec 16, 2005

Only I may dance

I don't think I would've known that's what they meant either. I assume it's something you pick up in CS but I've never discussed time complexity with my coworkers in those terms. We would say "hey this is not going to be performant because you have nested loops" and not "you can change this from O(n ** 2) to O(n) by utilizing a HashMap structure."

If you asked me about the complexity of a piece of code I would've assumed cyclomatic, but I also probably would have clarified with the interviewer. Anyway I'm also probably not qualified for a lot of the jobs you guys are hiring for.

Cup Runneth Over
Aug 8, 2009

She said life's
Too short to worry
Life's too long to wait
It's too short
Not to love everybody
Life's too long to hate


epswing posted:

You've lost the plot, the point of the exercise is to give the candidate a softball question, which they can complete in a variety of acceptable ways, which will give them confidence in order to slowly build up to more complex/interesting topics. It also quickly weeds out folks who cannot write code at all (if you cannot actually write a function to add up some numbers, like in my first code example, you don't have enough experience yet).

Fair enough, you made it sound like giving the answer you provided was the minimum requirement to be considered not wasting each other's time. Adding up numbers is indeed an easy task. Although if someone gave the answer you gave, but tweaked to actually be correct, I would assume that they came from a C/C++ background, rather than that they were incompetent.

brand engager
Mar 23, 2011

Every time interviewing comes up in here it reveals that most of you are testing for "can this person read my mind" rather than anything useful.

CPColin
Sep 9, 2003

Big ol' smile.
Interviewing is like gambling: just consider all the time wasted and maybe you'll get lucky and win some of it back

Falcon2001
Oct 10, 2004

Eat your hamburgers, Apollo.
Pillbug

brand engager posted:

Every time interviewing comes up in here it reveals that most of you are testing for "can this person read my mind" rather than anything useful.

I don't think this is fair or accurate. Most of the folks in here are describing pretty straightforward activities and I would assume tell the interviewee similar information.

Vulture Culture
Jul 14, 2003

I was never enjoying it. I only eat it for the nutrients.

Falcon2001 posted:

I don't think this is fair or accurate. Most of the folks in here are describing pretty straightforward activities and I would assume tell the interviewee similar information.
"Straightforward", like "common sense", just means "I did not personally need clarifying information". I still think about the time I failed a sysadmin interview with Sesame Workshop because the woman on the phone asked me "how would you solve a problem?" and I, a probably autistic person, did not have a script for what this person meant or how to possibly answer the question

spiritual bypass
Feb 19, 2008

Grimey Drawer
I have never experienced a problem because I am good at everything. Next question.

Macichne Leainig
Jul 26, 2012

by VG

CPColin posted:

Interviewing is like gambling: just consider all the time wasted and maybe you'll get lucky and win some of it back

This is the most sanest take in the thread tbh

As an interviewer I can only gauge so much with 30-60 minutes of facetime. As an interviewee you have to put up with so much bullshit and hoops, playing games to get paid what you want, etc

It's all just terrible. If you get lucky it's a win. If.

Cold on a Cob
Feb 6, 2006

i've seen so much, i'm going blind
and i'm brain dead virtually

College Slice
This is why one of the questions I ask starts with me describing a full stack web app and asking the interviewee how they could go about diagnosing a vague performance problem. There are a lot of different ways to do it and I don't expect everyone to do it the way.


Macichne Leainig posted:

This is the most sanest take in the thread tbh

As an interviewer I can only gauge so much with 30-60 minutes of facetime. As an interviewee you have to put up with so much bullshit and hoops, playing games to get paid what you want, etc

It's all just terrible. If you get lucky it's a win. If.

True and this is why a good company will encourage you to reapply later unless you do something real bad like crack sexist jokes in the interview. I've whiffed on things I've been doing for over 10 years just because I was having a bad day.

Also why I think the multi-hour interview gauntlet is a waste of everyone's time if one person can veto for vague reasons. At my company we do a three person panel and 2/3 gets you to the next step, which is basically a rubber stamp with the CTO that nobody has failed yet in my six or so years here.

Macichne Leainig
Jul 26, 2012

by VG
Yeah our company does two sets of interviews with tech team members and then a final interview with HR, on top of an optional take home exercise.

I really wish I had more clout to change that because no wonder nobody makes it to the final interview with HR, and the one person who did was pissed and yelled at HR and got disqualified anyway :v:

downout
Jul 6, 2009

brand engager posted:

Every time interviewing comes up in here it reveals that most of you are testing for "can this person read my mind" rather than anything useful.

My reading is similar. Seeing statements like "The former instantly tells me not to let them anywhere near my codebase" in the context of that post really feels like "read my mind". Literally a trick question to solve in the thread, how clever!

Someone writes MyFunction and accidentally counts indexes. They run it and say, "ahh, duh - I gotta add the values, not the index". So they fix it. Is this around the time that we "gently end the interview"? Why are we bothering to be gentle about such catastrophic mistakes?

shame on an IGA
Apr 8, 2005

prom candy posted:

Since we're talking books, anyone have any suggestions for software related books that work well as audio books? I have a bunch of Libro credits I need to use. Doesn't necessarily need to be code books but just any good semi-related non-fiction

Soul of a New Machine

Rocko Bonaparte
Mar 12, 2002

Every day is Friday!

Macichne Leainig posted:

Yeah our company does two sets of interviews with tech team members and then a final interview with HR, on top of an optional take home exercise.

I really wish I had more clout to change that because no wonder nobody makes it to the final interview with HR, and the one person who did was pissed and yelled at HR and got disqualified anyway :v:

Heh and I guess nobody already working there would have managed to get hired through this process.

Macichne Leainig
Jul 26, 2012

by VG

Rocko Bonaparte posted:

Heh and I guess nobody already working there would have managed to get hired through this process.

It is a skeleton crew right now. Me and one other guy.

gee, I wonder why :thunk:

I think maybe I will actually be louder about this

Bongo Bill
Jan 17, 2012

When asking a question of a candidate in an interview, you should explain what you're hoping to learn from their answer and explain (briefly) how you're going to be assessing it. If something matters, you should tell them that it matters, and if it doesn't, then you should tell them that it doesn't. If describing the rubric in this way would compromise the result, like it's "giving them the answer," then you should ask a different question. It's impossible to eliminate interview anxiety unilaterally, but you should do what you can to put the candidate at ease. Technical interviews are no place for trick questions or gotchas, and I always say so. Ask the candidate to describe what they're thinking rather than trying to divine their thoughts from the weak signal that is a small amount of code written under stress. They'll be working under clear expectations if hired, so they should also have clear expectations when being interviewed.

Ice Fist
Jun 20, 2012

^^ Please send feedback to beefstache911@hotmail.com, this is not a joke that 'stache is the real deal. Serious assessments only. ^^

brand engager posted:

Every time interviewing comes up in here it reveals that most of you are testing for "can this person read my mind" rather than anything useful.

I've never been a hiring manager, but I've been asked to sit in on interviews and come up with questions and its hard. As mentioned a few times I don't think it's a good idea to try and go looking for someone who has memorized the IEnumerable<T> interface (epswing clarified their answer so I'm not picking on them with this example), it's better imo to set up problems that let you see how they work while also getting a sense for their understanding of the language as a whole. And coming up with good questions that do this imo isn't easy. With clarification I think epswing's is pretty good actually.

Man, there was a point at my previous job where the interview process was incredibly arduous. I didn't have to go through it myself, my interview (poo poo... back in uhh 2012) was very simple. But it reached a point where the candidate was subjected to like 4 hours including a coding portion and where every single team would send people to ask culture questions and we'd cycle them into the room in shifts. I complained to my boss who was in charge that I didn't agree and thought we were actively scaring away excellent candidates and no other team but ours should have a say at all in who we're hiring. I think they toned it down, but who knows both my boss and I left eventually and they stopped hiring in any case.

Super glad the whole remote work thing led to quick one hour interviews.

mark immune
Dec 14, 2019

put the teacher in the cope cage imo

Bongo Bill posted:

When asking a question of a candidate in an interview, you should explain what you're hoping to learn from their answer and explain (briefly) how you're going to be assessing it. If something matters, you should tell them that it matters, and if it doesn't, then you should tell them that it doesn't. If describing the rubric in this way would compromise the result, like it's "giving them the answer," then you should ask a different question. It's impossible to eliminate interview anxiety unilaterally, but you should do what you can to put the candidate at ease. Technical interviews are no place for trick questions or gotchas, and I always say so. Ask the candidate to describe what they're thinking rather than trying to divine their thoughts from the weak signal that is a small amount of code written under stress.

yeah, this is the professional way to interview but unfortunately about half the interviewers I’ve experienced are the type who e.g. only use print debugging for reasons, have strong opinions on which editor you should use, etc. they seem more interested in showing you that they are very smart than finding out the interviewee’s strengths and weaknesses. it’s a signal that the company doesn’t take interviewing seriously and you just know the org is a dysfunctional shitshow.

Macichne Leainig
Jul 26, 2012

by VG
A dysfunctional shitshow org is fine, you just want one that you can take advantage of, not vice versa

Adbot
ADBOT LOVES YOU

epswing
Nov 4, 2003

Soiled Meat

downout posted:

My reading is similar. Seeing statements like "The former instantly tells me not to let them anywhere near my codebase" in the context of that post really feels like "read my mind". Literally a trick question to solve in the thread, how clever!

I don't think not saying "write a function with a good function name that takes in the right parameter(s) and returns the right type" makes it a trick question. It's an interview, clearly whatever tasks are performed will be evaluated. (In your last interview, were you explicitly told that you should write good function names?)

If the candidate does everything else reasonably well, but e.g. names their function MyFunction, I'd just tell them "that's not a great function name, could you rename it?" and they do, and we move on.

downout posted:

Someone writes MyFunction and accidentally counts indexes. They run it and say, "ahh, duh - I gotta add the values, not the index". So they fix it. Is this around the time that we "gently end the interview"? Why are we bothering to be gentle about such catastrophic mistakes?

Yes, if a candidate cannot add some numbers without help, I end the interview. I do mean 'gently' for what it is, not condescendingly or anything else. I do it gently and with empathy because, regardless of age, maybe they are new to the industry, fresh out of school, looking for their first job, etc, and I don't want to discourage them. I was a TA for many years at school, before and after I graduated, I thrive on learning and seeing others learn and asking the questions that lead to the light bulb turning on, etc.

I agree that interviews are typically cruel and unusual punishment for interviewees. I'm trying to express a strategy that I personally as an interviewer have found to put good candidates at ease early in the interview process.

Edit I re-read your post. No, it's obviously not the end of the interview if someone runs the code, spots the bug, and fixes it, that’s just Normal Programming Things.

epswing fucked around with this message at 20:37 on Aug 22, 2023

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply