But each one of these dependencies is pretty consciously and manually added, most of the time. In new code, to introduce a new one usually requires thought, and that creates a culture of caution.
Also if you are dynamic linking, ldd(1) can give you a pretty good picture.