Well, I can tell you in exquisite detail how much trouble it is. I've done it dozens of times. It's not a trivial endeavour.
As for algorithms, sure, it's useful to understand Big O complexity - but implementing any sort or search algorithm subsumes into quintessential code. And most of those decisions are a three second decision in a meeting with the architect and DBA. Anything requiring sorting will also require persistence and some indexing structure, it's a question of where the sort will happen, which is almost invariably in the Model, on some index, perhaps in some Controller. But even then, I'm going to instrument all that code anyway and watch it consuming heap, I can change a sort.
I used to have this one coder, really bright guy. This guy knew more about Windows internals than was good for anyone. But he had hygiene issues, bizarre personality, couldn't trust him around the clients. So I'd just send him spec and let him work his magic. He was too good to abandon but too weird to be tolerated onsite. And that's the problem I face with the CS people, all the time. CS has taught them to be Solo Artistes, capable of discussing compiler internals and prefetch caches - but otherwise incapable of writing software in a business context.