Really timely. Someone was explaining to me they wanted engineers who understood big O and it's why they deemed the solution suboptimal. Your point about Linked Lists vs Arrays remind me of approaches that teams building High Frequency Trading systems used (Arrays) to speed up performance and information retrieval.
Good post. I'll add that we also still test knowledge of this content in interviews, even though us practitioners know it mostly doesn't apply in the real world. The reason we test it is because that is what is taught. I'm sure you would agree that it is still useful to teach asymptotic analysis, but the issue is one of emphasis and the caveats that were lacking in past teaching on this subject (not sure if this is taught differently today). I definitely came out of college thinking Big O mattered for performance and not understanding that the realities of hardware matter much more.
Agreed, and I have a lot to say about this topic; but I struggle putting it into concise, actionable terms. Fundamental changes to the way we source candidates are critical, and the use of Big O primarily to haze each other during interviews is a primary example of what we're doing wrong. Agreed that CS students should understand Big O, and that software engineers need some basic CS; but not at the expense of traditional engineering education. We grossly overemphasize CS when hiring engineers, and pay far too little attention to traditional engineering, communication, and research skills.
Really timely. Someone was explaining to me they wanted engineers who understood big O and it's why they deemed the solution suboptimal. Your point about Linked Lists vs Arrays remind me of approaches that teams building High Frequency Trading systems used (Arrays) to speed up performance and information retrieval.
Good post. I'll add that we also still test knowledge of this content in interviews, even though us practitioners know it mostly doesn't apply in the real world. The reason we test it is because that is what is taught. I'm sure you would agree that it is still useful to teach asymptotic analysis, but the issue is one of emphasis and the caveats that were lacking in past teaching on this subject (not sure if this is taught differently today). I definitely came out of college thinking Big O mattered for performance and not understanding that the realities of hardware matter much more.
Agreed, and I have a lot to say about this topic; but I struggle putting it into concise, actionable terms. Fundamental changes to the way we source candidates are critical, and the use of Big O primarily to haze each other during interviews is a primary example of what we're doing wrong. Agreed that CS students should understand Big O, and that software engineers need some basic CS; but not at the expense of traditional engineering education. We grossly overemphasize CS when hiring engineers, and pay far too little attention to traditional engineering, communication, and research skills.