I would say: are we (including myself) able to really understand this type of softwares (let's call them DataBaseManagementSystems) really in detail? so we can really evaluate them for design choices, knowing how to implement a design choice? I would say that knowing them is really difficult given the complexities they embed (DataBaseManagementSystems are really complex softwares). To be more specific I say something like having the entire source-code of something in mind when using it so you really should have an understanding of its behaviors (of course understanding the source-code is a part of the understanding because this knowledge has to be applied, and there are other elements in the system because the software does not run isolated, but it is part of a system that includes it).