Programming Abstractions
Khem Raj February 18, 2025 #metaA case for abstractions
Abstractions are quite useful to manage complexity by hiding implementation details and presenting simple interfaces. If they are well-designed, they can enable higher order concepts, enabling collaboration at scale, since everyone won't be required to understand every tiny details behind the abstraction. It can reduce cognitive tax, make it easy maintaining software. It can respond to changes by encapsulating functionality behind the stable interfaces
A case against abstractions
Poorly designed abstractions
can introduce more complexity, create obscurity with unnecessary layers
Every layer of abstraction added carries performance cost in function calls, memory overhead. Leaky abstractions
- Those that fail to fully hide their implementations, may add to cognitive overload
since developers have top understand both the interface and the implementation. Over-abstractions
can lead to bloat, trying to handle too much, over-generalization, can lead to increased load
of maintenance
Finding the sweet spot is real engineering !