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.
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.
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.
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.
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.
In my experience, the job that HR excels at is creating and perpetuating the view that the company needs a HR dept. Generally, the most unneccesary people in an office are HR.
Holy. One place I worked at had way too many HR personnel. It was crazy. I happenned to have my workstation directly next to them. They quite literally did nothing all day. Nothing. At. All. It blew my mind.
So why did we have so many? Well at basically every company-wide meeting this dep was putting on the biggest theater performance of being overwhelmed by "governmental endless bureaucracy" or something. So they always tried to hire more of their own friends. Temporary roles always became permanent and we ended up with 20% of the company working HR. The owner of the company, bless his heart, really could not say no.
My experience with HR in most companies has been hit and miss, but this one example really opened my eyes. Of course if you hire people who are basically actors you run the risk of forming an HR dep that is very dramatic and manipulative.
I can't really blame the workers for taking advantage of an easy job and making a great living out of browsing Facebook and gossiping all day. But it really suck that the actual good workers were over-worked because other areas of the business were under-staffed. Virtually nobody else had the political impact in the hiring process HR had. Obviously this business wasn't run by genius.
The problem is that most times HR person is all you'll get at the first interview and you'll only get someone marginally tech-versed on the second interview. Even then you risk having some bozo who regrets not being hired by Google so all the questions are hyperbolic in the extreme and not related at all to daily tasks.
I believe algorithm focused technical tests are useful. However, if the interviewing team hasn’t taken the time to understand both the problem and the answer, then they are completely pointless. So you’re exactly right here to challenge their bullshit.
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.
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.
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.
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.
Yep. LeetCode medium difficulty puzzles is the de facto / unofficial standard, and even if you're a pretty good programmer, those are tough to do in a timed 45 minute thing with some stranger watching every character you type :-(
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.
"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.
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.
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.
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
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
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.
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.
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.