The only thing doing tech tests has taught me is that I'm too stupid to do the job I've been doing professionally for the better part of 2 decades.

bungle_in_the_jungle@lemmy.world to Programming@programming.dev – 253 points –

Can't just be me, can it? Currently 0 for 3 on interviews because I can't seem to get past the technical interview/test. Usually because of some crazy complicated algorithm question that's never been relevant to anything I've ever had to do on the job in all my years coding.

Also, while I'm ranting: screw the usual non-answer when given feedback.

70

A few years ago I was in a hiring loop where four interviewers grilled me on a number of subjects, including algorithms and data structures. They asked me all sorts of trivia questions on assimptotic complexity of this and that algorithm, how to implement this and that, how to traverse stuff, etc. As luck would have it, I was hired. I spent a few years working for that company and not a single time did I ever implemented a data structure at all or wrote any sort of iterator. Not once.

I did spend months writing stuff in an internal wiki.

I can't help but feel that those bullshit leetcode data structures computational complexity trivia are just a convoluted form of ladder-pulling.

My workplace has the opposite problem.

The company has been in dire need of programmers for years, so they hired people (including myself) without tests. However, the work involves lots of custom iterators and the occasional handcrafted parser, which most of the company is incapable of writing. The bright side is that management has their metrics mostly right, so I'm getting lots of raises for solving fun problems.

My workplace has the opposite problem.

I don't see that as a problem. The job description of an engineer includes dealing with new problems and onboarding onto new things. So you never wrote a parser and now you have to. That's ok, just go ahead and start from the ground up.

What I perceive as a major problem is the utter disconnect between what companies test for, and what companies actually do.

It makes no sense at all to evaluate candidates on obscure trivia questions no one will ever care about or use, let alone reject an applicant because they mixed up O(nlogn) with O(logn). It matters more if you know a good, healthy answer to tabs vs spaces.

I once was a part of an hiring loop where we assessed a candidate, and one other fellow assesser wanted outright to reject the candidate because he failed to answer one of his questions on data structures. Everyone in the meeting voted in favour of that hire, except that one guy. When we asked to reconsider his position, he threw a tantrum because he felt that it was a matter of principle that we had to not hire a candidate that didn't knew trivia. The hiring manager asked if that info was important, and in case he felt it was whether it could be looked up online in a matter of minutes, but the assesser tried to argue that it was besides the point.

Data structures and algorithms trivia feels like ladder pulling.

It matters more if you know a good, healthy answer to tabs vs spaces.

You had me there, for a second

That sounds like a win-win situation. You lucky bugger!

I always just answer that with "do you want a software engineer, or a text book? If we need that for a project then I'll go dig out my college notes"

It usually works with other engineers, the issues are usually with the recruiters.

don't take tech interviews seriously, they suck for everyone but big corps

your 2 decades of experience mean much more than memorizing algorithms, you know how to produce real value

don't forget that, and don't let them forget it

your 2 decades of experience mean much more than memorizing algorithms, you know how to produce real value

That's all fine and dandy but the HR recruiter that can't tell apart git from grunt needs to cross boxes in the skills assessment section, and if you don't ace coding challenges you are as good as dead to them.

Why are you applying to that soulless shitshack??

Why are you applying to that soulless shitshack??

If you automatically rule out companies that either do their own coding assessments or offload them to third parties, you'd rule out most of the potential job market.

There are millions of small companies and shops that need engineering help. Many will actually talk to you like a person because they haven't been enshuttified to death.

STOP WORKING FOR THESE GIANT HELLHOLES.

Back when i was a kid, i thought electronics shop were scammers; you knw, solder a wire here, hold power buttons longer than usual, and the thing works again! (This is the reason i got into fixing things šŸ˜)

But since then, i came to a revelation, than it takes years of experience to knw which wire to touch, and wat not to touch at all; what is worth saving, and what is a gonner... saving time...

Coz apparently, as a kid i had a lot of time to spare. These days... Not so much.

PS: i still think they were scammers, coz i believe in being informed... Thats why for every electronics fixed/not fixed (even if its is a punny solder of a wire), i am completely transparent with the user, for both our sakes

There's a story/joke about a company that has a large, important industrial machine that stopped working. They call in a specialist engineer, who walks up, hits it with a hammer, and it starts working again. He then hands the manager a bill for $2000. Incensed, the manager demands an itemized invoice because this was outrageous for something that took 2 minutes. The engineer kindly obliges: hammer $5, knowing where to use the hammer $1995.

Yep, use to work somewhere where we had a technician that would spend a whole lot of time just walking around, noting where we had blown light bulbs and stuff like that and he told me something similar "What I'm doing now is not what I'm paid for, that's just me being nice to my employer, what I'm paid for is knowing how to solve the real issues when shit really hits the fan."

Sysadmins can similarly have a hard time. After all, if they're doing their job right, there are no problems.

But since then, i came to a revelation, than it takes years of experience to knw which wire to touch

Might be, might not be. A popped capacitor doesn't require a lot of skill to spot.

Not all jobs are rocket surgery.

Imo "scammer" is the wrong word. "Hustler" is more accurate in my experience.

Under certain circumstances, those iFixit places are exactly what it says on the tin - but if rent's coming up and they haven't had many walk ins, you might end up with a new Flux Capacitor in your JavaScript Microlibrary, since the old one looks like it started sending unhandled exceptions to the teraflop reader - but don't worry, they put in a new 6-charge teraflop reader that should future proof it for years.

2 more...

Yeah, I changed my career direction (industry, tech stackā€¦) but before that, my CV only was enough for me to get hired. They would just verify the information, and sometimes, there weren't even a single tech interview.

2 more...

Yeah, they kinda suck and they are brutal to go into cold. Having to grind a bunch of leetcode problems is a burden, particularly if you currently have a job and god forbid a family.

I would still take them over the puzzle questions that used to be popular, or the personality test nonsense that dominates most fields. At least Leetcode problems are reasonably reflective of programming skill. I'll also take them over vague open ended questions - ain't nothing more fun than trying to ramble my way into whatever answer the interviewer is secretly looking for.

Personally, when the day comes when I'm In Charge, I plan on experimenting with more day to day type evaluations. I think there's potential for things like performing a mock code review or having someone plan out a sprint based on a very detailed design document. "Here's an icky piece of code, tell me what it does and what you would do to improve it" seems to have fallen out of style, though it's not clear to me why.

That said, like it or not it's how the game is played and not changing anytime soon. Get on the Grind75 train, or don't and keep failing tech screens.

I have never found the ability to regurgitate Leetcode solutions as reflective of programming skill or even good performance. Iā€™ve seen what talent I get from FAANG hires and what talent I get from random people with state degrees. Most of the time I will take the later. I have yet to staff some crazy R&D project that actually required anything like the things Cracking the Code Interview tells you to do.

Iā€™ve found a lot more success giving people reasonable design exercises based on company projects and code exercises related to actual work done. I have made a career of only taking jobs with similar interview processes and as Iā€™ve grown into leadership Iā€™ve continued to give interviews that accurately test day-to-day skills. Am I missing out on really good talent by usually ignoring FAANG resumes? So far I donā€™t think so and I donā€™t need those idiotic attitudes polluting strong, elastic teams either.

I see them as a flawed indicator of the ceiling of someone's theoretical computer science abilities. Having worked with some brilliant people that career shifted via bootcamps, I will contend there's value in having that foundation. I also prefer Leetcode problems over having to memorize search algorithms. But yeah, it's not very reflective of day to day tasks even in R&D heavy projects. The most algorithm heavy thing I've ever done was implement Ramerā€“Douglasā€“Peucker to convert points from mouse polling into a simplified line.

(There's clearly a "it's what everyone else is doing" aspect to Leetcode, on top of being very practical to run, hence I why don't see them going anywhere. They're also as objective as anything in an interview will ever be, so as I always say: it can be so much worse.)

I intend to make the hacker "dive into an icky codebase armed with a stack trace and fix a bug" aspect of software development a part of my interview process; plus lean more heavily on system design questions which is where non-entry level engineers really ought to shine. The parts that worry me are the ability to create new tests as they inevitably leak, plus whether I can truly objectively evaluate someone's performance.

I'm curious what you include and how well it works.

When I was running DevOps/SRE consulting I did up to a 2hr deep dive into how to set up a codebase in VCS, establish CI/CD, design deployment, and manage the lifecycle. That gave a lot of freedom to ask specific questions related to the clients I need staff to support and also to get a feel for what people did and did not know. You start with some trivia questions and can organically move around based on the candidate to probe their strengths. That requires having a good interview team; what Iā€™ve found is that if you train your team to interview the way youā€™d handle a normal design session things work out really well. Iā€™ve got a lot of concrete problems to drop in based on real issues weā€™ve faced (if youā€™ve had to support EoLā€™d Ruby in k8s you can commiserate with a surprising number of folks). The length was dependent on the salary being asked for which determined title. Someone at an architect or manager level needed to know way more than someone just hitting senior status.

Now that I do general engineering stuff Iā€™m trying to figure out something along those lines. Iā€™m currently a fan of code reading some gnarly legacy shit we have to support and either some short data pipelining, API optimization, or component creation depending on what Iā€™m trying to hire for. If you spend an hour with someone trying to code together you can get a decent sense of how they will work day-to-day in terms of how they handle confusion, talking through problems, and basic language knowledge. I try to remove gotchas and keep things in the candidateā€™s wheelhouse (One time I failed an interview because someone asked me to use a library Iā€™d never seen and I spent an hour flailing because it needed a trailing slash but didnā€™t have good error messages so I could not figure out why anything wasnā€™t working. Huge fucking waste of everyoneā€™s time; didnā€™t evaluate anything other than if I knew that library that wasnā€™t important.).

I donā€™t do take homes. I do realize that limits the candidate pool to people that are comfortable collaborating in a potentially stressful situation. I sometimes worry about that. Itā€™s very important for a strong remote team to work well together even when things are awkward or stressful, so thereā€™s a bit of value doing it that way imo.

Frankly I donā€™t care about interview questions leaking. Coming out of DevOps, itā€™s very obvious when someone actually understands whatā€™s going on in the interview and when theyā€™re copying and pasting. Iā€™m very happy to have people take code from Stack Overflow during interviews; thatā€™s real fucking life and shows me their research skills. Candidates I will hire can explain or improve the code. Iā€™ve had to reject plenty of sysadmins that do not understand any of what theyā€™re copying and cannot adapt to minor changes that Iā€™ll add just to see how someone handles it. I worked at a company whose questions were on Glassdoor. We had plenty of people that came in prepared for those. We hired several that could roll with the punches (what if you change the inputs, how do you test this case, whatā€™s going to break) and dropped plenty that clearly had no fucking clue.

Why are you assuming FAANG resumes can't do system design?

I have two problems with FAANG candidates.

First, having gone through the full interview process at several and rejected all due to laughably low base salaries, I know how those candidates are selected. The skills being evaluated have fuck all to do with what Iā€™ve actually needed engineers to do. That gives me zero confidence in their ability to do anything meaningful. Solving tic-tac-toe doesnā€™t mean you can actually walk your way through security problems in an API.

Second, the toxic cultures at these companies is not something I want infecting my teams. Google, for example, is famously about making yourself look really fucking good for a performance review board, not making the company better. Amazon makes people think the talent pool is big enough for perpetual unregretted attrition and pits peer against peer. Meta completely strips any semblance of ethics and therefore customer understanding. Twitter doesnā€™t fucking care about security.

Most engineers meet expectations. Period. People think FAANG is hot shit. Itā€™s not. Itā€™s arguably worse than most run-of-the-mill places because people on the internet like to make FAANG out to be hot shit. The chances of someone actually doing something big at FAANG are so fucking tiny itā€™s just like thinking youā€™re going to make the next killer indie game.

It's pretty shitty that you are attributing the cultures of companies to the personalities of individuals. You're going to miss out on a lot of good people doing that.

I think itā€™s fine to attribute those values to employees who fought to work at companies with those problems. Iā€™m not calling out hidden problems; Iā€™m calling out the issues you can easily find when you do a cursory search for information on the company youā€™re going to work for. If you think itā€™s okay to go work for a company like Meta I know youā€™re okay with some disgusting shit and I donā€™t want you near my team or my customers.

I hope you reconsider your stance cuz youā€™re making a lot of assumptions about people based on very limited information.

You do you, but throwing out applicants because you think they personally agree with everything their past employers have done is ridiculous.

Although I agree with you that people shouldn't equate company values and employees' values, I'd say that it could be true, especially if they did work there for long enough.

As for my personal opinion, this could likely be solved by a short questionnaire on why they left the company and what do they think of this and that.

I have never tried to get into FAANG (MAAMA šŸ˜…) but if I did, I'd definitely focus more on how to get there, not on why that's a bad idea, so it's not quite correct to judge based on the fact that someone worked somewhere.

As a side note, I had never did a thorough research of companies I applied to, somehow it mostly worked out, but I did sometimes end up in the company I wasn't quite comfortable in ĀÆ\_(惄)_/ĀÆ

But OP was experience hiring both sorts of candidates and found non-FAANG employees to work out better.

And no, one shouldn't judge completely on a former company's culture, but some people do indeed drag that shit with them. My old boss would be great for some roles in my new company, but she has absolutely poisonous management skills stemming from her environment.

"Here's an icky piece of code, tell me what it does and what you would do to improve it" seems to have fallen out of style, though it's not clear to me why.

Because reviewing code is easier than writing it, unfortunately.

I disagree with that as a rule of thumb. I'll take writing 1000 lines of code from scratch every time over deciphering 1000 lines of bad code.

However, I do you think are right if limited to the ~100ish lines that fit into an hour sized block of interview time. I suspect the other half of the answer is (good) job postings have largely gotten away from hard language requirements. It's perfectly reasonable to hire someone that will need to familiarize themselves with Go or Python or Typescript or whatever. It's not fair to expect someone to analyze code in a language they haven't used on the spot.

Even deciphering 1000 good lines of code is hard . I work in abap and 95% of my time is going through old ,or very old code written in diffrent programing styles . The rest is usualy writing a one or two lines of code.

Maintaining a code base is definitely harder than writing new code, in my experience.

Don't worry about the algorithm questions... companies asking that are just google-wannabe companies that don't deserve you. I have always told recruiters "if there's a time-limited interview test, I'm out", and I'm doing very well for myself now.

If you're desperate, unfortunately, you have to pick up a book on algorithms... one of those 600 pages book, and start reading...

Let's be honest, even if you finish that 600-page book, you might not "crack" the algorithm interview. The inteview requires you to grind the question, or simply a lot of practices.

Astronaut: You mean they're all too stupid to do the jobs they currently have?

2nd Astronaut: And they always were.

Also - those kinds of interview questions are bullshit. A good tech interviewer can ask about past experience and learn plenty from questions in that context.

If they ask a tech test question, it's time to leave. When they act surprised, tell them you don't believe in wasting your time with bullshit.

You'd be surprised by the number of applicants that can't write a for-loop. There's a middle ground between no test and complex tree search algorithms.

If I ever encounter that middle ground, I'll let you know. Until now, it's only ever been complex bullshit.

4 more...
4 more...

Why? Tech tests are fine, absurd complex tests for shitty jobs are not

If you find some that are reasonable then I consider you lucky. I have not. They've only ever proven to be an absurd waste of time in my experience.

I only got quite simple tests tbf, but I donā€™t look for senior positions. Main thing is to just get the problem solved writing decent code (if itā€™s a home assignment) or to walk them through your reasonings

The only time I got a leetcode waste of time it was a Dijsktra/A* problem (which I failed)

4 more...

I simply refuse to move forward if the interview process involves a whiteboard interview. I have no aspirations to work at FAANG so this has only happened to me a couple of times

I was so lucky in the interview for my current job: I'm working on a product with a big networking component, and I was asked to write an echo server with low level components. That was maybe the second time I had a test related to the job.

another problem with tech tests is how broad of scope they cover - like everything you've learned when pursuing your degree.

Most other professional engineering disciplines have licensing obtained using FE and PE exams. Those exams are effectively "tech tests" equivalents but after passing them you get a license that you have to maintain. I can appreciate this approach since you can take CEU (continuing education) to maintain your license instead of taking the entire test all over again.

I never though software engineers would need a license but I would MUCH rather prefer grind to obtain a license ONCE which then I can use to fulfill tech test requirements and maintain the license with much less effort throughout the year.

4 more...

Never had issues in the past, I actually did the tests for few friends, just for fun. But most of the time they are overkill. Now that I have more experience I realize it takes few very basic questions to understand if one is technically fit for the job.

I don't know if I would appreciate a complex test now if I was looking for a new position. It feels a bit disrespectful.

I currently struggle accepting all the psychological and hr tests for management positions... They are hr bs. I do them, but they are imho much worse than technical test, because completely useless and arbitrary. Those are really offensive and intrusive

I hope I never have to look for a job again but with the way my business has gone lately, I may need to start thinking about it in a few years.

I've also been coding for 25 years, most of that professionally. I'm not sure I could pass a tech interview.

Sometimes those positions are meant for promoting internal candidates, who obviously sat in, conducting the same interviews in the past. So the difficulty is dialed up to "I am Death incarnate!" levels and they then have scoring data to support their selection of the internal candidate. At a friend's workplace, they'd opened up a 2-3yr exp position to convert a great intern, and had some great 10+yr exp people apply. My friend said that was a little awkward. Even if Mark Russinovich or Linus Torvalds applied for that job, they still had no chance at getting it. I joked that I might put a resume in his manager's pile for the creator of the tech stack they were interviewing for, just to hear how that reaction was.

That's probably not representing even... 5% of these gauntlets, but it might make you feel better. Sometimes, it's the hiring manager fulfilling the letter but not the spirit of some process, but it means they are frustratingly hard on candidates in the process.

And perhaps, ultimately, you have dodged some bullets.

For a lot of these you need to study/practice on sites like HackerRank for a while first. Some companies go overboard and expect you to build some crazy recursive dynamic programming implementation in 15 mins without an IDE, others are more realistic and just want to see if you know things like algorithm complexity, can pick appropriate data structures, and write logical and clean code. And yes, very little of it applies to what most of us do day to day. Anyways, HackerRank is great for interview practice, you can Google for pretty much any solution to their questions.

We ask algorithm questions and I feel bad about it. But a nontrivial portion of the job really is adapting these algorithms to novel scenarios. Not most of the job, but maybe the hardest part.