Live data from Hacker News

The dystopian world of software engineering interviews

jarednelsen.dev

511–520 of 851 posts

Re: The dystopian world of software engineering interviews

#511
post #45

In my personal experience, having interviewed dozens of candidates (data science), I believe that asking "easy" and "simple" questions is the most effective way to probe the problem-solving skills of a candidate. Fun and interesting solutions to easy questions are hallmarks of great individuals. The question would go like this: Suppose I have a column-oriented file and I want to print out a column in a reverse-sorted…

I feel the need to nitpick your example. > does the candidate want to code it up or understands that they could do: cut | sort| head Piping together commands is undoubtedly programming, just in ancient shell script. So in a sense you're really testing for bash expertise. Which is maybe really relevant to you but I wouldn't say you're really "avoiding" coding by knowing to use those commands together, you just decided…

I was with you until you called unix tools janky.. how dare you! semi joking :]

there is some simple elegance and power to these old C tools

Re: The dystopian world of software engineering interviews

#512
post #378
post #115

Earlier quoted context omitted.

Hah! Reminds me of https://twitter.com/mxcl/status/608682016205344768 . Cynical answer though — Google does not want people like you. They don't want to hire entrepreneurs or inventors. They want people who can churn out code when given specific instructions, and that is what their interview process optimizes for.

I don’t think there’s any intention to it at all. Unless one takes extraordinary steps to examine what brings truly brings value, most people interview for clones of themselves. Or worse: their idealized self-image. Google started off with very mathy people, and highly competitive people, and interviewing this way has always worked for them, so why change? Some people have done internal studies showing how wildly cou…

Steve Jobs had a theory about why this type of stuff becomes prevalent in the lifecycle of companies: https://www.businessinsider.com/steve-jobs-on-why-innovation...

Sounds a lot like google here.

Frankly though, I think there's something more fundamental about large organization as to why this sort of stuff happens (not just at companies). Perhaps it's the iron law of oligarchy, but corruption seems inevitable at scale. Very few innovative people seem able to reap or retain the most value of their work.

Re: The dystopian world of software engineering interviews

#513

Earlier quoted context omitted.

Interesting how negative your reaction is. Also how far off target all that anger is. I am not selecting for a tribe, I am selecting for a job. The questions are loaded, of course. Among the many duties, the jobs do require processing large files, sometimes with cut, Python or C. I want the candidate to use the most appropriate tool as needed. I'd rather not have people implement functionality that already exists in…

As someone with background in Mechanical Engineering, software interview questions as above seem so wild and absurd to me. Why would you care about someone knowing the intricacies of CSV or bash? I would expect a good engineer to provide best possible solution to your problem within an hour of googling / research. I really don’t see the point of asking such specific questions on interviews as it has no correlation wi…

Because it's used in the real world all the time?

The amount of times I've had to write my own sorting algorithm in my career: 0.

The amount of grep/sed/awk I've used? Countless.

Someone who is familiar with how powerful and flexible these tools are is likely to accomplish something that can benefit from them quicker than someone who isn't aware of them.

Also in my experience software devs that shy away from the command line because they don't like it rarely pan out.

Re: The dystopian world of software engineering interviews

#514
How can you think clearly when someone is watching and judging you?

The ideal scenario would be - give a problem, leave the room, and come back after 15 minutes - give the candidate some breathing room.. to make mistakes, to try out few methods, to collect their thoughts.

This concept of 'We want you to think aloud, We want to see your approach', doesn't match reality.

In reality, the only time that happens is when both parties are trying to figure out a solution collaboratively. Not when one party already knows the answer and is 'testing' the other party.

An author's first draft, or a speaker's demo, has a million corrections before it gets to print/stage. Can RR Martin write freely if the NYTimes reviewed his every draft version ? Can Steve Jobs go on stage and give a demo if he has not already rehearsed the entire saga ?

It's like judging a person at their vulnerable stage. Unless they are a saint who can completely block out the existence of another human being sitting a few feet away, it's hard to concentrate.

You're more worried about how your thought process looks than you are about solving the problem at hand.

Re: The dystopian world of software engineering interviews

#515

Earlier quoted context omitted.

So I had an interview that was like that, but I wasn’t given enough information. I was asked to implement the “inverse square law in code” ... and I explained to the interviewer who was two years out of college (I looked up all of the interviewers on linkedin, so I had a good idea of their experience and areas of expertise) that my first step as someone who hadn’t been in an academic environment or exposed to this ki…

> and I explained to the interviewer who was two years out of college Yeah, that one's easy. Young coder sees a competent, experienced dev and tries to sabotage your interview out of fear you'll show up and make a fool of him. It's possible he was just that arrogant, but it sounds suspicious. Based on my experience, devs who are 2 years out of college, regardless of how well they understand algos and data structures,…

Naw, I just shadowed a new young interviewer and he asked a similar question that was unreasonable. As a recent grad he legitimately didn't recognize that the interviewee wouldn't necessarily know this one specific thing. We discussed it and he's going to try again next time with a more reasonable question.

Re: The dystopian world of software engineering interviews

#516

When my classmates were preparing interview coding questions, I was working on a mini TCP implementation and a toy kernel. AWS rejected me since I failed to write prefect code to traverse a tree in level order. Google did not even give me an interview since I told the campus recruiter I have not prepared for the coding questions. Then I ended up with an internship at CoreOS and created etcd. I am glad that they did n…

One thing to note about coding interviews, they're very simular to somone looking over your shoulder while you're working. Nobody can perform well like that.. One great colleague who I wish I was in the interview for, simple started thinking out loud. Everything he was thinking, he said out loud, and of course, the team loved it. Because thats all it's about. If its not over a video chat/submission, comment your code…

Exactly ! See - https://leetcode.com/discuss/career/509258/Social-anxiety-in...

But the issue is that they're not just judging you by the approach, they are also judging you by your results.

Some people, especially those with social anxiety (not some fancy psychological term, just someone who feels uncomfortable when someone is watching over their shoulder), can only achieve results if they are not judged during the journey.

Re: The dystopian world of software engineering interviews

#517

> “Yes. Can you write an algorithm to find the Kth highest value in a binary tree?” I got this exact question on a phone screen with "Giant Search and Advertising Company." I got stuck on a stupid detail and botched the implementation. Once I hung up the phone I took a deep breath and fixed the algorithm in about 15 minutes. That still isn't very good since I was only given 15 minutes total at the end of the intervie…

How snarky do people get on these interviews? If anyone asked me to find the kth-greatest element in a tree I'd write down a loop that increments std:set::crbegin k-many times and then dereferences and returns it. This is literally how anybody at Giant Search and Advertising Company would do it, and almost nobody at that company has ever written a tree, they just use the one in libc++, from Jeff Dean on down.

Snarky or not, you missed that the question was about a binary tree, not a binary search tree.

Re: The dystopian world of software engineering interviews

#518

Earlier quoted context omitted.

I did that for an interview for what is now my employer. It was via Skype with a shared code editor. The interviewer asked me to implement a data structure that I had not used (directly—I'm sure plenty of libraries I use utilize it) since college, and I said as much. I told him I was quickly looking it up on Wikipedia, skimmed the article (mumbling to myself, I'm sure), and then proceeded to implement it. My candor a…

It's certainly true that larger tech companies will not allow much of the 'workflow' into the interview, but this is usually down to the interviewers not being technically sound on the project(s) and most of the time just given a script with certain criterea, who are usually contracted to do so. This is no fault of those recruiters, just that sometimes they are given very strict guidelines which can hamper creativity…

Which companies are you seeing this from?

This wasn't my experience at any point with Google, Microsoft or AWS

Re: The dystopian world of software engineering interviews

#519

The word 'dress' doesn't appear once in this thread and that's a sign of the disgusting state of affairs all in itself It used to be people took care in small gestures like wearing a pressed shirt but now all the auspices have gone awry in favour of this laughable meritocracy No wonder tests of this nature have been devised by people who haven't ever buttoned a collar and it's everyone's fault for not taking the mora…

What? I interviewed at my current location wearing a cargo short and a tshirt. It’s a trillion dollar company and we’re not failing any time soon. Coding interviews aside, no dress requirement is one of the biggest plus and allow people to focus on the thing that matters. I have no idea where you come from that software engineering is helped by dressing up pressed shirts.

I strongly suspect sarcasm.

Re: The dystopian world of software engineering interviews

#520
I see peoples' opinions here generally falling into one of two camps. The standard way interviews are conducted are either good or bad. I think it's important to consider both the good and bad elements, and then come to a conclusion about what to do in order to move the collective interview process in a better direction. To note, I've never gone through a traditional technical interview, so take what I'm saying with a grain of salt. Let's look at the example in the given in the blog post, write an algorithm to find the Kth highest value in a binary tree. Now my data structures and algorithms are a bit rusty, so assuming that I remember the correct definition for node height, I believe the solution looks something like the following.

  data Tree a = Tree a (Maybe (Tree a)) (Maybe (Tree a)) deriving Show

  -- Assuming k=1 Means the highest node, k=2 means second, etc...
  -- Note this solution successfully puns non-positive k's
  -- to return Nothing
  kHighest :: Int -> Tree a -> Maybe a
  kHighest 1 (Tree a _ _) = Just a
  kHighest k (Tree _ (Just l) (Just r)) =
    case (lRes, rRes) of
      (Just x, _) -> Just x
      (_, Just x) -> Just x
      (_, _) -> Nothing
    where
      lRes = kHighest (k - 1) l
      rRes = kHighest (k - 1) r
  kHighest k (Tree _ (Just l) _) = kHighest (k - 1) l
  kHighest k (Tree _ _ (Just r)) = kHighest (k - 1) r
  kHighest _ (Tree _ _ _) = Nothing
Barring some fundamental misunderstanding of the problem (entirely possible), the evaluation criteria is not that the solution is exactly correct and covers all edge cases. The evaluation criteria is does the solution show fundamental knowledge about properties that are used to classify things as tree-like, and does it use the common idiom (decomposition into smaller sub-problems) that is used to process tree-like data.

In my opinion, the common criticism that interview questions hold no similarity to day-to-day software engineering problems, holds no water. Yes, you will not directly re-write the tree data type every day in your job. However, you deal with recursive data definitions that require solution by decomposition _multiple_ times a day. If you are not dealing with problems that fall under that category, then you should think hard about which problems you see that could be framed as such because I guarantee you're missing a few.

The beauty of the tree as a data structure is that it captures a common set of algebraic properties. Even when other data structures don't exactly fall under said algebra, the concepts to reason about them are reused (note the early language that specifically said "tree-like").

The point of drawing interview questions from your data structures and algorithms course is not to test you on remembering arcane minutia from 5+ years ago but to see your fundamental reasoning skills within the domain of computer science.

Post reply on HN