Absolutely! As a matter of fact, I’m a big fan of the book About Face where they spend a lot of time talking about “physical models” versus “mental models” and how to provide a proper abstraction that helps the user rather than hinders them. And, honestly, I’d rather use that terminology than the loaded term “magic” in these kinds of discussions because that’s what we’re really discussing. The argument against “magic” is the argument that physical models are always or almost always better than mental models. Where that breaks down is when the physical model forces someone to learn something that they don’t need to learn in order to get their task done. File systems are a great example. Arguably one of the major reasons why smartphones and tablets have become so popular is because they do not force the typical user to deal with a file system (which the typical user doesn’t take the time to understand and thereby runs into problems like “Where did my file go? I just saved it!”)
Now, that is for the “typical” user (average user, Joe/Jane User, whatever you want to call it). But what about your situation? What about when you run into a user where they have invested the time so that their mental model is equivalent to the physical model? (Or at least “equivalent enough”, of course.) Then providing an abstraction that offers a different mental model than the physical one can be a hindrance … as you rightly pointed out. But the right thing there is not to do away with the mental model completely … the right answer is to provide the obviously advanced user a way of doing the advanced things they want to do by offering trap doors to access the physical model, i.e. the --tag
option.
What I’m really saying is that just because you’re an advanced user doesn’t mean that you should take away the features that make life simpler for the people that aren’t as advanced as you. As a matter of fact, having those simplified mental models or abstractions in place gives people an easier ramp into becoming an advanced user over time.