3 ms·
You'd be surprised how often tricks used in implementing those fundamental algorithms can be useful in day to day work. Recent example I can think of was using
by dkarapetyan 9y ago
You'd be surprised how often tricks used in implementing those fundamental algorithms can be useful in day to day work.
Recent example I can think of was using GLPK to implement a dynamic allocation strategy for some spot instances for a pool of heterogeneous servers. I did not implement my own solver for the integer linear constraints but just knowing that allocation problems can be expressed as integer linear programs helped me tackle the problem in a way that others did not think of.
So I don't really buy the argument that knowing merge sort is useless knowledge because you never get to implement it. The value goes beyond just knowing the implementation. Same goes for other kinds of fundamental and timeless concepts and results.
- diminoten 9y agoSure, but you're the guy who writes the library that I use because I have no clue what the hell you just said! It'd be downright dangerous if I hand-roll anything like it.
- dkarapetyan 9y agoI hope that's not the lesson here. I was trying to get at the fact that understanding the fundamentals means understanding and exploiting the connections between seemingly different concepts and that learning and understanding merge sort is not time wasted and will come in handy in all sorts of situations. When in doubt just remember this Feynman quote “Right. I don’t believe in the idea that there are a few peculiar people capable of understanding math, and the rest of the world is normal. Math is a human discovery, and it’s no more complicated than humans can understand. I had a calculus book once that said, ‘What one fool can do, another can.’ What we’ve been able to work out about nature may look abstract and threatening to someone who hasn’t studied it, but it was fools who did it, and in the next generation, all the fools will understand it. There’s a tendency to pomposity in all this, to make it deep and profound.” – Richard Feynman, Omni 1979
- diminoten 9y agoThe point I'm trying to make is that what you're describing as "fundamentals" aren't actually fundamentals; that it's a spectrum, and the "things that need to be known to excel" are not what they used to be. Maybe they never were those things. There's a heavy bias towards the belief that CS, as it is currently taught, provides the "fundamentals" of software development and design. It does not, at least not as completely as the common belief seems to be. This can be reinforced by the current state of our interview processes. One has to re-prove one's understanding of such fundamental concepts, when the degree should, in theory, be enough, as it is in many other professions. Conversely, a failure to understand fundamental CS concepts (invert a binary tree) doesn't preclude someone from being a successful software engineer (create homebrew).