4 ms·
I actually do think you have a point about the fetishization of trivia knowledge in this field. It's really not ideal, and I think it's more driven by social dy
by lordlic 5y ago
I actually do think you have a point about the fetishization of trivia knowledge in this field. It's really not ideal, and I think it's more driven by social dysfunction or over-compensation for various kinds of imposter syndrome.
But that is not this. In the case of inverting a binary tree, what you call logic-puzzle minutiae is just taking a fundamental building block in computer science (binary trees) and asking the person to demonstrate even the faintest ability when it comes to writing an incredibly basic algorithm. Max Howell not only can't do it, but he doesn't even see why he should need to know how to do it!
That kind of proud ignorance is what grinds my gears. I'm sure someone can gather requirements and deliver value to customers and fix bugs and string together code and everything without knowing how to work with trees, but I don't really care. If they've somehow gotten that far without even a glimmer of curiosity about the fundamentals of computer science then something is disturbingly wrong, and I would worry about what other mammoth blind spots they inexplicably have.
- jcun4128 5y agoI should not comment on this chain, just adding clarity on my behalf... all I've done in my "career" is web related stuff, mostly JavaScript paired with a backend... I've never used BT/BST only recently learned it for myself just to know what it is. If you went through a CS path then I would say you should know about it. I'm trying to pick it up due to FOMO. I hear about it.
- AussieWog93 5y ago>That kind of proud ignorance is what grinds my gears. I do get where you're coming from there, but I interpreted the Tweet very differently. He wasn't just asked "how does a binary tree work?", but asked to go through an extremely specific process manually, on a whiteboard. And if I can just interject my one little quip (I come from a EEE background, stumbled into software engineering and then left after a couple of years to do my own thing), all of this knowledge of the academic aspects of CompSci doesn't seem to help people build code that is reliable and performant. We weren't taught it in EEE (we learned about programming and digital logic, but in a different, much more concrete way), and yet EEE-written code runs flawlessly on 8-bit micros in safety-critical systems for decades at a time without a single crash or missed timing constraint.
- YeGoblynQueenne 5y agoBecause it's very simple- compared to a web app backend (which is typically an uhonly mess of unnecessary complication; but still, much more complex for that).
- reasonabl_human 5y agoMay be an over simplification here, I’ve done both and found most web app backends to be more trivial than embedded programming projects.
- YeGoblynQueenne 5y ago>> But that is not this. In the case of inverting a binary tree, what you call logic-puzzle minutiae is just taking a fundamental building block in computer science (binary trees) and asking the person to demonstrate even the faintest ability when it comes to writing an incredibly basic algorithm. The thing is that most programmers are not computer scientists anymore, in the same way that most computer scientists are not mathematicians anymore. In many CS101 courses there's only a very brief study of algorithms and data structures and most of the course is about using this or that language (probably python, these days, java back in the day, Ada further back etc). This is partly the fault of universities, in a "the road to hell is paved with good intentions" kind of way. Universities try to prepare their students for the industry, except they seem to be in lockstep with the industry's requirements, but with a ten-year gap. So they try to teach students programming, rather than computer science, because they believe that's what the industry is asking for, then the students go to interviews and find themselves staring at a binary tree on a whiteboard. Also, to be fair, the majority of programmers nowadays are not nerds, anymore, and they're not even that interested in computers, or even progamming. Most of my class in my degree and in my Master's just wanted a cozy job at an office. In one company where I was hired through a graduate programme, all of the guys in my cohort came in with a qualification in CS, then immediately sought the better-paying manager jobs in the corp (and I left to go to academia because [edit:] they didn't let me train neural nets on their mainframes :P).
- Yoric 5y agoFully agreed. I usually don't need complex algorithms in my line of work, but I can't count how many times I've needed to implement topological sorts, for instance, or non-trivial tree traversals, or to rewrite code to increase parallelism, or to be able to quickly spot that a poorly performing algorithm was O(n^2) or O(n^3). And sometimes, it actually gets complicated. Sometimes, it's about increasing cache hits. Sometimes, it's about making sure that stuff gets allocated in the right order or in the right place in memory. Sometimes, it's about rewriting the IPC layer. Sometimes, it's about reimplementing foreign key logics in a low-level database/file system. Sometimes, it's about writing custom locking data structures or non-blocking algorithms, or a custom memory allocator or GC to match specific performance requirements. Sometimes, you need to do all of this without a debugger or a profiler or even logging. If you can't handle the simple tasks from the first list, well, how are you going to tackle the issues from the second? And if you're not curious, how are you going to learn all of this?
- b3morales 5y agoI agree, uses for this kind of knowledge do come up from time to time, but when you're implementing something like this on the job, are you starting from nothing, a blank piece of paper/whiteboard? Personally I wouldn't start writing a single line without doing some research first. I'd look around on the web for some sample implementations or at least pseudocode. I'd probably get one of my algorithm books down from the shelf to make sure I understand the basics -- and check for "gotcha" edge cases. So this is still wildly different than Max's interview environment, where the expectation is that you can effectively invent the algorithm.
- Yoric 5y agoI'd argue that, for many problems, researching the issue is hard if you don't have a starting point. For instance, I currently have no clue about the natural language manipulation with machine learning. I would have strictly no idea where to start or where to start looking. I might be lucky and stumble upon some literature that I would understand, but then I might not.
- mancerayder 5y ago
- ngc248 5y agoExactly, the technical interview has become like an arms race, harder and harder questions. Whereas in the management track, its all hustlin, any bozo can and will become a manager and go up the ladder, gain more power and control all us technical folks.