As higher level coding languages empower us with abstraction, so should we choose abstractions that make sense.
What Writers Can Teach Programmers
Heather Knight

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.