There are a couple of deep ideas lurking in this excellent blog post by Stuart Sierra. One is from his personal experience. He relates that as a professional software developer, he has become wary of software written by amateurs. That resonates with me as well. The other idea is deeper and more fundamental. We don't want our libraries to make simplifying assumptions. Those simplifying assumptions are usually wrong unless you have very specific domain knowledge. And by definition, a library does not have that domain knowledge. Only the application does.