5 ms·
Yo, author here. One thing I should really clarify is that while it's a nice sounding argument, my research was pretty haphazard- looking at TIOBE and C program
by hwayne 7y ago
Yo, author here. One thing I should really clarify is that while it's a nice sounding argument, my research was pretty haphazard- looking at TIOBE and C programming and extrapolating from there. I recently started doing more thorough research- interviewing people, reading way too many Usenet archives, stuff like that. Based on that I'm _pretty sure_ the main argument still holds, but the story is a bit more complex than the tweetstorm makes it seem. And there's a few sources I haven't dug into yet. Who knows, maybe one of them will completely refute me!
I plan on doing a full writeup, but I gotta finish the research first! And if it turns out that I was completely wrong, then I'll write a postmortem instead :)
- wayoutthere 7y agoI suspect it was also a way to make sure people had and remembered a formal CS education. Data structures classes were standard in CS curriculum until at least the late-2000s, and linked lists were definitely one of the topics. To that end, I’ve been asked other data structure questions around trees and stacks as well — I view all those as a proxy for “so prove to me you remember your second year CS classes.”
- cylentwolf 7y agoWhat does that help prove though? That I have a good memory? There are better data structures in pretty much all standard libraries out there for your flavor of language. I am sure that my 2nd year CS class didn't go into the nuances of the coding of the linked list. If I remember correctly it was just make sure you can write one by the end of the week and turn it in.
- dragonwriter 7y ago> What does that help prove though? It's a weak filter for “recent grad”, and along with other individually weak filters a tool for under-the-radar age discrimination.
- umanwizard 7y agoWell it is correlated with being a recent CS grad, just like, for example, knowing that d(sin(x))/dx = cos(x) is correlated with being a recent math or engineering grad. But that's certainly not what it actually measures, which is basic knowledge about data structures. It just so happens that being a recent CS grad is statistically correlated with knowledge about data structures. But it's certainly not a necessary condition. I am not any sort of CS grad, recent or otherwise, and I still know how to implement a linked list, because I learn things on my own, and refresh my memory about things I forget over time.
- mruts 7y agoI don’t think I would want to hire someone couldn’t code: a linked list, hash table, and binary tree. If you can do a AVL or RB tree from memory, that would be a bonus as well.
- umanwizard 7y agoI'm a big fan of testing basic CS knowledge in technical interviews, which puts me against the dominant narrative on HN. But even I think knowing how to implement an RB tree off the top of your head is more about having prepared for whiteboard interviews than about actual knowledge or skill. I'd say it'd be a bonus for me to have a general understanding of how some sort of self-balancing tree works. For example, for red-black trees I'd be happy with stating the invariant about same number of black nodes along any given path and no two red nodes in a row, explaining why this guarantees O(log(n)) worst-case lookups, and also mentioning the basic notion that you can bubble rotations up the tree so the time it takes to do an update or delete is proportional to path length and so again O(log(n)). I don't think that remembering off the top of your head the exact code for all 7 (or however many it is, idk) different rotation cases provides any additional signal.
- DuskStar 7y ago> Data structures classes were standard in CS curriculum standard in CS curriculum until at least the late-2000s Are they not still standard? I graduated in 2017, and "Data structures and Algorithms" was certainly on my mandatory course list. (Ahh, EECS 281...)
- wayoutthere 7y agoNo idea; I haven’t been anywhere near a CS department since the late 2000s so I can only vouch until then :)
- DuskStar 7y agoI wish the project descriptions were public so I could check that the contents match what I remember, but at the very least UMich is still requiring that course: (course requirements guide on page 3 [0], syllabus [1]) 0: https://www.eecs.umich.edu/eecs/undergraduate/computer-science/18_19_cs_eng.pdf https://www.eecs.umich.edu/eecs/undergraduate/computer-scien... 1: https://www.eecs.umich.edu/courses/eecs281/syllabus https://www.eecs.umich.edu/courses/eecs281/syllabus
- hwayne 7y agoThis is definitely a possibility! I've interviewed a couple of people and it seems like linked list questions were already traditional by the mid-90's. If "do you remember your formal CS education" was a part of the origin, we'd want to 1) look at CS syllabi from the 80's to see what they focused on, and 2) look at job postings from that time to see if they expected a degree. That'd provide some evidence for this being the case and suggest other predictions (were other common CS topics interviewed?)