Abstractions, Performance, and Documentation
Abstractions are good, when it comes to software development . There are any number of reasons for this, from Loose Coupling , to SOLID , to, well, just google it if it isn’t already obvious to you. Let’s add a touch of nuance though, because, after all, Nuance is what we do in Software Development . Abstractions are mostly good when it comes to software development . The key here is the ever-present tradeoff between Flexibility and Performance. Or, to put it differently, if you’re going through the “ Make it Work → Make it Right → Make it Fast ” sequence, and have somehow (hallelujah!) managed to get to the Make it Fast stage, well, this is almost exactly where the abstractions can start biting you in the butt. Sometimes that one optimization you need to make is hidden behind an interface, and you really don’t want to compromise the interface (because the abstraction it provides is ridiculously valuable everywhere else in the code). Or, for mechanical sympathy