this post was submitted on 08 Apr 2025
726 points (98.4% liked)
Programmer Humor
22354 readers
2600 users here now
Welcome to Programmer Humor!
This is a place where you can post jokes, memes, humor, etc. related to programming!
For sharing awful code theres also Programming Horror.
Rules
- Keep content in english
- No advertisements
- Posts must be related to programming or programmer topics
founded 2 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
Maybe it’s like teaching kids the quadratic equation; where it’s less about learning the thing and more about understanding how to problem solve and use logic.
In this case maybe the point is to show an understanding of algorithms and that you can explain them out loud.
The quadratic equation is the basis for most other math and physics. It’s used all the time.
The good thing about quicksort is that it’s a good demonstration of an O(n log n) algorithm, and that’s about it.
"The basis for most other math and physics" they do a complete fucksewage job at demonstrating that in school. I remember several years in math class "And here's the quadratic equation, the one that's all over 2a" and it was an exercise in plugging and chugging.
Math is a useful, powerful and allegedly beautiful thing. it's such a shame it's illegal to teach it competently.
If I’m not mistaken, quick sort is worst case O(n^2), merge sort is what actually achieves O(nlogn), the point is that quicksort is on average more memory (and time?) efficient
Maybe.
When using a random pivot, the worst case becomes exponentially more unlikely the larger the n. The O notation only cares about the complexity when n approaches infinity. So when n approaches infinity, the likelihood of O(n^2) performance approaches 0 (and the likelihood of O(n log n) approaches 1).
I think it’s fine to call it O(n log n).
That's when you add a w.h.p. (with high probability)
If it's about problem solving and using logic, why do we need to memorize quicksort? That's not an example of using logic or problem solving
it's actually about testing your ability and willingness to jump through hoops that serve no discernible purpose, one of the most vital skills for working within 99% of human organizations
You don’t need to memorize quicksort. If you understand how it works, it’s trivial to work out the exact details.
Thank you.
"I don't have to know CS201 Data Structures and Algorithms to do my job", says a thousand D-tier coders online, whose code is costing their employers a small fortune in unnecessary cloud compute bills because they just blindly imported a ton of python libraries and went with the least suitable data structures and algorithms for the task at hand, because that's what the defaults were for that library. "It fulfils all the requirements from the client perfectly, bow to my experience and skill in delivering customer value".
It's classic Dunning-Kruger, incompetent people who are too incompetent to know they're incompetent.
Bonus points when they cite the fact that they were involved with a project that cost a hundred million dollars, as "proof" that they're a world-class expert, when it probably would have been a ten million dollar project with an actually competent engineer...
you can also 'trivially' derive the quadratic formula using completing the square, but does anybody actually do that instead of just memorizing the formula?
That depends on how often you use it. If I needed to write quicksort as often as the quadratic formula, I’d probably remember it. And if I only used the quadratic formula as often as I do quicksort, I’d just derive it each time.
Honestly, for the first year or two after learning about it (which is the only time where it's really relevant) that's exactly what I did. Spend 30 seconds, derive something that's definitely correct, and never worry again about your memory randomly failing you
I meant that as 2 separate thoughts. The quick sort is about understanding algorithms and ability to communicate them.
"how to problem solve" and "use logic" are, I believe, myths. When you teach someone to implement quicksort, all you've done is taught them to implement quicksort. Classroom based lectures and rote memorization do not impart any kind of broader "problem-solving" ability. This is an ex post rationalization by the perpetrators of the education system to justify their own existence. I place the value of what they do very low
If it were a question about the tradeoffs of different sort algorithms and how they might apply to a given problem, I would agree. That's not what these interview questions are about.
Maybe it’s about being able to communicate an algorithm verbally. Unless these are written interviews, then yeah, probably pointless.
Also, I do think being able to understand how an algorithm works is probably important on its own.
Then give them some code and tell them to explain it. Having testees regurgitate algorithm implementations from memory is just testing rote memory.
I thought we had all lived through terrible public schools that just tested memory, and resolved to do better.
Yeah, it's a solved problem. I'm going to call the library's default sort and move on. If it somehow is a problem, I'll revisit later.
Now, optimizing database calls, fixing (and avoiding!) security holes, writing tests that don't take forever to run, writing functions so they can be easily re-used later, and not duplicating code. Now there are some skills!
"It's faster if we make a duplicate of this function and change this section, then we can move onto other things"
"No it's much slower, because your code review just came back telling you to throw that idea in the garbage and do it right"
There's a lot of ways to test communication skills. This doesn't seem like a very good one.