(sorry for sidetracking the excellent piece but...) When I examine the ~13,000 hours I've spent programming I find it hilarious that interviews should centre around algorithmic problems. I've been guilty of it myself and failing FizzBuzz is definitely a true negative but it's so little of a true positive it's not even funny. What I would really love to know about you as a candidate is: - do you know how to actually n…
I think most interviews don't focus enough on systems. I expect every software engineer to know: - How virtual memory works - How threads work - How TCP works - How ports work - How ethernet works - How DNS works - How a web server works. And so on. A lot of these things are more important than theory (but I think theory is important, too!).
Lists like these reflect your own experience. I care more if an engineer can quickly grasp the "big ideas": Maybe they don't know about threads, but do they express disbelief that they solve a real problem, or an unwillingness to explore them? A willingness and aptitude for learning is so much more important because the state of the art is a moving target.