▲ 2 points
back
1 comments
This is great. I think that the state of computer science education is partly to blame. When I was a student, a disproportionate amount of time was spent on advanced topics that will almost never arise in the course of a typical programmer's day to day work (e.g. the Ackermann function, skip lists, b-trees). By contrast, very little time was spent on common sense reasoning about the sort of programs that most software engineers spend most of their time working on (e.g. noticing that you can use a set rather than a list, that you can cheaply cache all outcomes rather than computing them on the fly, etc).
The consequence is that students get proficient enough at the advanced topics to pass their, but don't acquire skills that they can carry forward. (They probably also forget what the Ackermann function is the minute they walk out the door.) I suspect the impetus is that the status quo naturally gives rise to the kind of grade distribution that we expect, and serves as an effective filter for FAANG companies and grad school admissions committees. But you're not adequately training the next generation of software engineers.
I am _not_ saying that schools should omit advanced algorithms and data structures from the curriculum. But I think they could get more creative about how they teach students to apply the basics.