> I don't think anyone is suggesting that every programmer implements their own list every time they use a list. But it's useful to have an understanding of how common data structures work, how basic algorithms operate, and what kind of things are out there.
And, when you need to optimize or handle special cases on critical paths, you may end up needing to implement these algorithms yourself.
Case in point: I once lead development of a major competitor to Dropbox. We couldn't use "off the shelf" queues and lists to manage upload and downloads, because there were too many special cases. I also had to implement my own immutable collections (until a library was released and we switched to it.)
But otherwise, 99% of the product used off-the-shelf list and queues under the hood.
And, when you need to optimize or handle special cases on critical paths, you may end up needing to implement these algorithms yourself.
Case in point: I once lead development of a major competitor to Dropbox. We couldn't use "off the shelf" queues and lists to manage upload and downloads, because there were too many special cases. I also had to implement my own immutable collections (until a library was released and we switched to it.)
But otherwise, 99% of the product used off-the-shelf list and queues under the hood.