This article could be summarised as &quot;abstract only when you see a clear need to&quot;, something that seems to be the exact opposite of what a lot of programming courses teach; especially those dealing with object-oriented design. I think abstraction should be viewed not as a technique to be applied generously and whenever possible, but a necessary evil, resorted to only when nothing else can simplify the code.<p>A bonus of this style is that it often also makes the resulting code more efficient for the machine to execute, reducing the need for optimisations later.