The goal of an abstraction should be to make reasoning about the code easier, generally that means hiding complexity but that shouldn't be the goal.
In my opinion a common issue in programming is premature abstraction without understanding the interactions as a whole.