Abstractions are the best, abstractions are the worst
mbuffett.com
mbuffett.com
The only real downside is the overhead in learning the abstractions as they can be arbitrary and would require understanding it like a machine with all it parts and what they each do. This is where functional programming offers a universal way to abstract any computation, but that is besides the point.