Why, when assessing programmers, do we concentrate on Algorithms/Data Structures course material in particular? Why not Operating Systems, Networks, Databases, Compilers, Architecture, Security, etc? The role of these one to two courses out of many in a CS education often seem exaggerated.
I can think of a few explanations, but they feel unsatisfactory.
- It's universal across specializations? But in a typical web-backend role, database schemas and network protocols feature much more prominently than sophisticated in-memory data structures and search/optimization algorithms.
- It's the most consistent across universities? Perhaps mine was an outlier, but we took only a cursory glance at standard interview fare like BSTs, shortest-path, tries, etc. The algorithms we did study have not come up since then.
- It's the easiest to assess in a 45-minute interview? But I can easily imagine asking someone to design a database schema and queries, explain how a network interaction works, SSH to a VM and debug a performance problem, etc.
I'm interested in any historical context here, or experiences trying to assess candidates on material from other courses/topic areas besides the classic "algorithms + behavioral."