Experienced programmers use whatever solves their problems and avoid whatever creates new problems.
Thus they avoid header-file-level using-directives for obvious reason.
And they try to avoid full qualification of names inside their source files.
Minor point is that it's not elegant to write more code when less code suffice without good reason. Major point is turning off ADL.
What are these good reasons? Sometimes you explicitly want turning off ADL. Sometime you want to disambiguate.
So following are ok: 1) function-level using-directives and using-declarations inside functions' implementations; 2) source-file-level using-declarations inside source files; 3) (sometimes) source-file-level using-directives.