I try arguing, "but all your libraries do at low level is math calculations, don't you want any control over that?"
The typical response is "no"... people are quite happy with the boundaries they feel their API's are setting for them.
I try arguing, "but all your libraries do at low level is math calculations, don't you want any control over that?"
The typical response is "no"... people are quite happy with the boundaries they feel their API's are setting for them.
As an example SQL was black magic to me until I made a big tangent off into the functional programming world where name binding and capture is something almost first class, which made SQL almost obvious now that I have a better idea of what and how they could do underneath. It also leads to hacking opportunities otherwise I'd never be able to even think about it.
You are correct about "why" libraries are created.
Since, I'm assuming you're talking about Open-source libraries: what happens when theres an issue you're having and wondering why the library isn't doing what you want?
There's a distinct difference between looking at something when it's broken for the sake of fixing it and implementing every library on your own because you don't want to use the abstractions created by the programmers who came before you.
Don't you want to know how your cpu works? What happens when you're having an issue and wonder why your code doesn't work as expected?
Depth of knowledge is good, but I think the rational choice is to know the most about the domain you're working in -- because the entire domain is already too big for any one person to fully grasp.