I call this the Lightsaber rule: a good abstraction is like a lightsaber, powerful but very precise; the corollary to the Lightsaber rule: a bad abstraction is like a Lightsaber with a bad crystal, the beam’s all over the place and you’re losing appendages all the time.
[Edit 31 Aug 2018]
I felt the need to edit this as I realize a second corollary- the abused abstraction, i.e., a perfectly good abstraction used in the absolutely inappropriate context. This is like a Lightsaber in the hands of the untrained, the tool works perfectly, but is being wielded such that aside from hurting the bearer it’s probably mowing down innocent bystanders as well.
Ref: https://www.slideshare.net/niranjangp/ruby-codebases-in-an-entropic-universe/39 by @niranjan_p and Sidu Ponnappa