Abstraction is considered a virtue in software development. However, practice shows that wrong abstractions cause more harm than none at all.