News for hackers. Stuff that matters.
Re:“I've had to relearn coding to get through the new interv... by andrew_ on Thursday December 03, 2020 @11:31PM (#25298983)
Tech hiring is severely broken. 22 years in and it's only gotten worse. We still tolerate PhD Comp Sci algorithm questions for frontend developer gigs, endless series of array shuffling and sorting, canned problems intended to "measure your problem solving ability," ridiculous hypotheticals (e.g. whiteboard how you would build Slack), and a litany of other tactics that recruiters or old school management thinks are reasonable hoops to jump through.

Yes, I'm a bit salty.

The best advice I received recently came from someone 10 years my junior in the industry: politely refuse hackerrank, algorithmic code challenges, array shuffling, or anything unrelated to the work you've done or the work the interviewers are doing on a daily basis. Instead, offer to pair/group program or troubleshoot on a problem they're currently trying to solve, offer to walk through an open source project you've worked on or authored and speak to the problems you encountered. Let the gatekeeper/recruiter know you decline the kinds of interviews I mentioned above, and let them know you're looking for an org that thinks outside of that box, that values a person beyond their ability to regurgitate for-sale interview prep.

That approach has an effect of weeding out companies mired in corporate lockstep. I had told a recruiter at a national, Austin based real estate firm that I decline those types of questions and interviews. Was assured that they would not happen, and in the first round of the process was asked to sort an array of phone numbers. The interviewers had no idea I would decline the challenge, and I politely ended the call.

I recently adopted this approach with great success, speaking with a number of high quality orgs and all around great people who were truly interested in what I could bring to their effort. Granted, not everyone is in a position to take a bold stance, but I found that it made me more interesting to companies who were doing more than going through the motions.

Re:“I've had to relearn coding to get through the new interv... by meekrohprocess on Friday December 04, 2020 @02:42AM (#25299982)
Yeah, it does seem like the best jobs are the ones that you don't have to jump through arbitrary hoops for. Ideally, your employer or client will respect you as a human being who has something valuable to bring to the table.

When I find "good jobs", they almost always crop up from serendipity in areas that I am genuinely interested in at the time. Looking back it feels like dumb luck, but the sort of dumb luck that is helped along by trying to make your own opportunities.

If you ever have a chance to talk candidly with an executive or entrepreneur about a subject that you are passionate about...well, at least take the meeting. Those sorts of discussions aren't interviews per se, but sometimes your vision will click with someone else's, and that's where the magic happens.

Re:“I've had to relearn coding to get through the new interv... by mooreds on Saturday December 05, 2020 @01:29AM (#25312320)
> Yeah, it does seem like the best jobs are the ones that you don't have to jump through arbitrary hoops for. Ideally, your employer or client will respect you as a human being who has something valuable to bring to the table.

Even better if they actually know you!

> If you ever have a chance to talk candidly with an executive or entrepreneur about a subject that you are passionate about...well, at least take the meeting. Those sorts of discussions aren't interviews per se, but sometimes your vision will click with someone else's, and that's where the magic happens.

This is great advice. Talking to business folks when you aren't working for them is a great way to practice this skill and you never know what you might end up running into. Another good thing to do is to try to connect two people who might benefit from the connection (discussing a technology, an opportunity, etc). Sometimes something will happen, sometimes not, but the goodwill will be remembered.

A few years ago I joked about never wanting to submit a resume again. If you spend time on your network (all the time, not just when you need a job) and do good work, hopefully you'll get to a point where you can contact people you know who are looking for help.

Sure you'll still need to "interview" but the stakes are lower: they know you and you know them.

Re:“I've had to relearn coding to get through the new interv... by koonsolo on Friday December 04, 2020 @02:37AM (#25299952)
You can't believe how many people are unable to do the basic things like sort an array.

These kind of questions is not to see how smart you are, it is to weed out all the ones who don't event get the most basic parts of programming. And I can assure you as someone doing a shitload of interviews, that a huge part of candidates doesn't understand the basics of programming such as sorting an array.

If all candidates had a minimum competence, sure we could do other kinds of things. But right now, you will first have to pass the "I can do newbie programming" tests.

Re:“I've had to relearn coding to get through the new interv... by andrew_ on Friday December 04, 2020 @08:35AM (#25302059)
You're not interested in the candidate, you're interested in litmus tests. Not the kind of place I ever want to work.
Re:“I've had to relearn coding to get through the new interv... by throwaway201103 on Friday December 04, 2020 @02:51AM (#25300044)
Why would any company want me to write an array sort instead of calling the .sort() method on the standard array class? Is that really the sort of thing they want their devs to code and debug and maintain by hand?
Re:“I've had to relearn coding to get through the new interv... by srj on Friday December 04, 2020 @09:14AM (#25302388)
Having a deeper understanding of how things work is important in knowing how to use even the high level constructs well. How do you choose between an ordered and unordered map? If you've implemented them even one time I bet you'll have a clearer understanding of where each one excels.

If you couldn't remember how to implement quick sort or merge sort that would be one thing, but if you had no idea or never considered how a fast sort could operate that's another problem. I would never ask this in an interview but to use it as an example, it wouldn't be recall of an implementation that I'd be looking for but seeing if the candidate can identify a divide and conquer approach to the problem.

Re:“I've had to relearn coding to get through the new interv... by chillacy on Sunday December 06, 2020 @12:57AM (#25321468)
Good architects know a thing or two about material science, good electricians know a thing or two about physics, why programmers programmers be averse to understanding algorithms (i.e. the nature of computation)?
Re:“I've had to relearn coding to get through the new interv... by user5994461 on Friday December 04, 2020 @04:40PM (#25308458)
You should use sort() and ask whether it's okay to use the built-in?

They will always say it's fine and move. It would be extremely uncommon in the current decade to come across an interviewer who minds using the standard library.

Re:“I've had to relearn coding to get through the new interv... by mooreds on Saturday December 05, 2020 @01:32AM (#25312332)
And if they do mind, well, one of two things:

* they are a pedantic, roll your own type of place that is full of custom frameworks and libraries that you're better off avoiding

* they are big enough or specialized enough that they really need that level of knowledge

I imagine the former is more common.

And if you are applying to the latter, you should know that from your research. You do research companies before you interview there, right?

Re:“I've had to relearn coding to get through the new interv... by SamuelAdams on Friday December 04, 2020 @10:33AM (#25303363)
It demonstrates a basic understanding of underlying principles.
Re:“I've had to relearn coding to get through the new interv... by koonsolo on Friday December 04, 2020 @02:55AM (#25300063)
If you can't do a sort, how will be be able to do more high level complex things?
Re:“I've had to relearn coding to get through the new interv... by fossuser on Friday December 04, 2020 @03:26AM (#25300241)
I think testing whether someone can recall the implementation of quick sort and has practiced writing it quickly is not really testing for building complexity or solving problems.

It’s testing for practiced solutions of memorized algorithms and a bit of role play.

I get there’s some IQ challenge to preparing this and it’s hard to evaluate skill, but I don’t think this tests much beyond that.

Want to test true basic programming capacity? Do fizz buzz, ask someone to reverse names in a string with loops - everyone should be able to do that without thinking.

That’s actual basic stuff.

High level or more complexity? Discuss a relevant problem the company needs to solve and how they’d approach it.

Better yet discuss a problem and debug it together. Most programming is debugging anyway.

Re:“I've had to relearn coding to get through the new interv... by hiq on Friday December 04, 2020 @05:02AM (#25300720)
Note that koonsolo never mentioned quicksort, only sort. You can easily make it a newbie question by just accepting any sort that returns a correct output, even with a quadratic complexity in the best case. Any programmer should be able to write that in less than 10min.

And as the post you answered to alluded to, the point of the question is really just to filter out candidates who can't even write simple code, just like fizzbuzz. That's the kind of question you could ask in a first round, and then proceed to more relevant questions.

Re:“I've had to relearn coding to get through the new interv... by BlargMcLarg on Friday December 04, 2020 @05:57AM (#25301032)
I haven't written a sorting method in years and couldn't remember it on the spot in 10 minutes, despite having analyzed the big ones 6 years ago. Yet, I have no problem creating a giant, modular, cookie-cutter enterprise structure, which is generally more sought after and something many hardcore leets seem to struggle with, especially once it comes down to doing more than just a fancy UML graph.

We really don't need True Scotsmans on this site.

Re:“I've had to relearn coding to get through the new interv... by hiq on Friday December 04, 2020 @02:49PM (#25306856)
Again, you can make it a newbie question by just accepting any sort, including one you come up with on your own (so no need to remember). I'm sure you can design your own sort given enough time, granted 10 minutes might be too short to get it nice and clean, but with a bit more you're on the level of difficulty of fizzbuzz.

To make my point clear, you can implement a dumb and inefficient sort by implementing a min function, taking this min, then iteratively call it on what's left of the array and append the values to a new array which you then return. That won't get you into FAANGM, but maybe that's enough to get some discussion started in an interview at a company that's not too much into leetcode and is trying to evaluate other skills like communication. And I do think that 99% of people who write code every week could come up with something like this or better fairly quickly.

Re:“I've had to relearn coding to get through the new interv... by fossuser on Friday December 04, 2020 @04:38PM (#25308437)
That's reasonable to me if that's the standard.

The reason I jumped to quicksort in my initial reply is any sort short of quick or merge sort (or some other nlogn variant) would fail you at FAANG.

You could do the naive n^2, but it better only be in the first two min and hand waved off as obviously inefficient, almost a joke that you implemented it at all on the way to writing the nlogn version, bonus points if you talk about how merge sort is nlogn in worst case and quicksort is n squared in the worst case, but in practice often faster.

Re:“I've had to relearn coding to get through the new interv... by grishka on Friday December 04, 2020 @08:58AM (#25302244)
Some people consider me a senior, yet the only sorting algorithm I actually remember and can write from scratch without consulting anything is bubble sort. And maybe insertion sort. And that's it. Both horribly inefficient. In real life I use whatever the language provides, for example Collections.sort in Java.

The more general problem is just how far removed from reality are all these questions. I once tried interviewing for Google, just for fun because they sent me an email about it. They asked me about quicksort, I said that I'm able to implement it in any language I know given an hour and the ability to google things. They were apparently not very satisfied with this response.

Why do you need to recite things from memory on the interviews while you'll be able to consult whatever the hell you want on your actual job? No one knows.

Re:“I've had to relearn coding to get through the new interv... by Bitkus on Friday December 04, 2020 @04:35AM (#25300569)
Knowing how to implement sort does not mean you can't do higher complexity things. These are not the basics of programming, I think. Someone the other day refused my candidacy just because I was unable to comment more broadly on the abstractions used in C# async library, which is completely off the point. If you need to do some tweaking on async, you go to microsoft or google and find it out. Most of the time you just need working knowledge of how to use async await and a few other things.
Re:“I've had to relearn coding to get through the new interv... by distances on Friday December 04, 2020 @03:10AM (#25300156)
I have never implemented sort after the second university compsci course. I might still be able to write one if I think about it a bit, but just not relevant at all.
Re:“I've had to relearn coding to get through the new interv... by tomohawk on Friday December 04, 2020 @09:02AM (#25302291)
This is a common falacy that comes from academia.

If you can't divide numbers, how will you ever do algebra?

Guess what? They're different skills.

A person who is good at algebra, may not be good at all at division. I know a few who fall into that category. The use a calculator.

Re:“I've had to relearn coding to get through the new interv... by dkdbejwi383 on Friday December 04, 2020 @03:04AM (#25300116)
If you reimplement the standard library for basic tasks, when will you ever get the time to build useful things?
Re:“I've had to relearn coding to get through the new interv... by bit_logic on Friday December 04, 2020 @12:54AM (#25299455)
This is a good strategy for senior engineers to avoid the leetcode interviews. And to any recruiters and hiring managers reading this, there’s the other side of this. If you want responses from high quality senior engineers, then start your LinkedIn email with “NO Leetcode”. Response rates will likely increase by a lot.
Re:“I've had to relearn coding to get through the new interv... by cableshaft on Friday December 04, 2020 @03:20AM (#25300209)
I very rarely respond to recruiters cold emailing me, but if it had NO LEETCODE in the subject line I'd probably respond to every single one.
Re:“I've had to relearn coding to get through the new interv... by driverdan on Friday December 04, 2020 @10:34AM (#25303379)
Same here. I ignore all cold emails or mark them as spam. If I saw something like NO LEETCODE in the subject I'd be likely to read it. If it sounded like a reasonable place to work I'd share the job with my network.
Re:“I've had to relearn coding to get through the new interv... by IshKebab on Friday December 04, 2020 @10:06AM (#25302993)
> We still tolerate PhD Comp Sci algorithm questions for frontend developer gigs

Go and look at some Javascript answers on StackOverflow, and then consider why lots of websites are so slow!

Some random examples:

* Deduplicating an array; top answer is N^2: https://stackoverflow.com/a/9229932/265521

* Deduplicating array again: top answer is still N^2!: https://stackoverflow.com/a/14438954/265521

I've seen loads of similar examples. Maybe there is code that doesn't use any algorithms at all but it's probably not very interesting code.

Re:“I've had to relearn coding to get through the new interv... by mtberatwork on Friday December 04, 2020 @08:49AM (#25302171)
> a national, Austin based real estate firm

I can't help notice the irony that they wanted to put you through a gauntlet of leetcode style interview questions only for you to be working on what are most likely basic CRUD apps.

Re:“I've had to relearn coding to get through the new interv... by voodootrucker on Friday December 04, 2020 @12:22AM (#25299294)
Thank you, this is brilliant advice. Despite decades of experience I was nervous due to this trend and spent way too much time on hackerank. The company I ended up with didn't ask any of that crap (despite being founded by a PhD), and we couldn't be a better fit.
Re:“I've had to relearn coding to get through the new interv... by heurist on Friday December 04, 2020 @11:18AM (#25304008)
Of all the companies I have interviewed with, the only ones I ever joined had sane, non-leetcode interview processes. I have actually reached a point where I see companies asking those questions as churn factories to be avoided rather than schools of practice. If/when I find myself interviewing again I will be declining leetcode interviews.
Re:“I've had to relearn coding to get through the new interv... by _qulr on Friday December 04, 2020 @08:51AM (#25302184)
> The interviewers had no idea I would decline the challenge, and I politely ended the call.

This happened to me too, despite assurances from the recruiter beforehand.

Don't believe recruiters. They'll tell you anything to get you in the company's hiring process.

Re:“I've had to relearn coding to get through the new interv... by SeriousM on Saturday December 05, 2020 @01:47AM (#25312401)
That's exactly how I handle these interviews nowadays. Granted, it'd hard to know what's your price when you're young and you would take everything in the early years. But now I'm mid 30 and have seen and executed enough interviews to know that the rational thinking and kind human is so much more worth than a code monkey that is twice as fast. Why? It's the same reason why code should be readable - you have to live with it. And the only way to achieve this is by asking for the way of thinking, now what's the solution is.
Re:“I've had to relearn coding to get through the new interv... by phranger on Friday December 04, 2020 @01:14AM (#25299554)
thank you for the advice
Re:“I've had to relearn coding to get through the new interv... by waynesonfire on Friday December 04, 2020 @01:39AM (#25299673)
yep, this makes sense, vote with your wallet.