algorithms and data structures are overrated IMO. No average programmer is manually writing sorting algorithms or reversing linked lists. And if you do need something like that, you can just google it
edit: People have raised some VERY good points about why DSA is actually really helpful, and I guess I have to agree. I think this comes from my disappointment upon entering the professional programming scene and realizing that readability, maintainability, organization and structure are 10x more important when it comes to collaborating with others on production-grade codebases.
Tired of this trope. Learning data structures and algorithms is not about memorizing the specifics of some particular algorithm. That’s like thinking that learning math is about memorizing formulas.
DS&A is about learning *algorithmic thinking" and how common data structures actually work, so you can begin to build a toolbox of things you can use when making your own data structures. Software engineers that are actually good know this shit backwards and forwards, because it does actually come up all over the place (and these are the kind of people that actually write libraries). Even the basic things you learn in school are actually incredibly useful for understanding the implementation details of databases and how query planners and indexes work, for example (very helpful when trying to understand query performance).
And don’t get me started on just how fucking much directed acyclic graphs come up in the real world. Git? DAG. Any package manager? DAGs. Nix? DAGs. Open Telemetry? DAGs (the main data structure is a tree which is a special case of DAGs, but if you use linked spans, it would form a DAG). Hell, I’m working on something right now that needs to be modeled as a DAG. It’s almost comical how useful they are.
We should be encouraging people to learn and grow more, not less.
On the one hand, I get you, but on the other hand, a lot of math people aren’t doing by hand, but it’s still important for a foundational understanding.
Even if you aren’t implementing them directly, it can help to just understand how a library you’re using implements them. Most data structures have scenarios where they are the best option and other scenarios where they are the worst option. Which one you pick can be the difference between an operation taking under a second vs minutes or hours. Hell, even if you pick the correct structures overall but layer them poorly, you can see a difference like that.
It’s like adding an understanding of engineering to woodworking skills. Sure, a carpenter could probably build a house frame on their own, but it takes engineering knowledge to minimize the amount of wood used while still being sure that it won’t fall over if the wind gusts to 100 km/h or it snows during winter.
algorithms and data structures are overrated IMO. No average programmer is manually writing sorting algorithms or reversing linked lists. And if you do need something like that, you can just google it
edit: People have raised some VERY good points about why DSA is actually really helpful, and I guess I have to agree. I think this comes from my disappointment upon entering the professional programming scene and realizing that readability, maintainability, organization and structure are 10x more important when it comes to collaborating with others on production-grade codebases.
Tired of this trope. Learning data structures and algorithms is not about memorizing the specifics of some particular algorithm. That’s like thinking that learning math is about memorizing formulas.
DS&A is about learning *algorithmic thinking" and how common data structures actually work, so you can begin to build a toolbox of things you can use when making your own data structures. Software engineers that are actually good know this shit backwards and forwards, because it does actually come up all over the place (and these are the kind of people that actually write libraries). Even the basic things you learn in school are actually incredibly useful for understanding the implementation details of databases and how query planners and indexes work, for example (very helpful when trying to understand query performance).
And don’t get me started on just how fucking much directed acyclic graphs come up in the real world. Git? DAG. Any package manager? DAGs. Nix? DAGs. Open Telemetry? DAGs (the main data structure is a tree which is a special case of DAGs, but if you use linked spans, it would form a DAG). Hell, I’m working on something right now that needs to be modeled as a DAG. It’s almost comical how useful they are.
We should be encouraging people to learn and grow more, not less.
The average programmer will have times where they have to pick between datastructures though and pick an algorithm
On the one hand, I get you, but on the other hand, a lot of math people aren’t doing by hand, but it’s still important for a foundational understanding.
Even if you aren’t implementing them directly, it can help to just understand how a library you’re using implements them. Most data structures have scenarios where they are the best option and other scenarios where they are the worst option. Which one you pick can be the difference between an operation taking under a second vs minutes or hours. Hell, even if you pick the correct structures overall but layer them poorly, you can see a difference like that.
It’s like adding an understanding of engineering to woodworking skills. Sure, a carpenter could probably build a house frame on their own, but it takes engineering knowledge to minimize the amount of wood used while still being sure that it won’t fall over if the wind gusts to 100 km/h or it snows during winter.