First, some background on me. I have a PhD in CS and have had jobs both as a software engineer and as an R&D research scientist, both at Very Large Corporations You Know Very Well. I recently changed jobs and interviewed for both types of positions (as I have done in the past).
My observation: SW engineer job interviews are way, way disproportionately more difficult than CS researcher job interviews, but the researcher job is higher paying, more competitive, more rewarding, more interesting, and has a higher upside.
Here's a typical interview loop for researcher:
- Phone interview to see if my research is in alignment with the lab's research
- In-person: give presentation on my recent research for one hour (which represents maybe 9 month's worth of work) and answer questions from the audience
- In-person one-on-one interviews with about 5 researchers, where they ask me very reasonable questions on my work/publications/patents, including: technical questions, where my work fits into related work, and how I can extend my work to new areas
Here's a typical interview loop for SW engineer:
- Phone interview where I'm asked algorithm questions and maybe do some coding. Pretty standard.
- In-person interviews at the whiteboard where they drill the F*** out of you on esoteric C++ minutia (e.g. how does a polymorphic virtual function call work), algorithms (make all-pairs-shortest-path algorithm work for 1B vertices), system design (design a database load balancer), etc. This goes on for six or seven interviews. Ridiculous.
Why would anyone be willing to put up with this? What is the point of asking about C++ trivia or writing code to prove yourself? Why not make the SE interview more like the researcher interview where you give a talk about what you've done?
How are technical job interviews for other fields, like physics, chemistry, civil engineering, mechanical engineering?