4 ms·
> Another vector, more dangerous for senior developers, is thinking that abstraction will necessarily work when dealing with complexity. I'm pretty good at fig
by monoideism 6y ago
> Another vector, more dangerous for senior developers, is thinking that abstraction will necessarily work when dealing with complexity.
I'm pretty good at fighting off features that add too much complexity, but the abstraction trap has gotten me more than once. Usually, a moderate amount of abstraction works great. I've even done well with some really clever abstractions.
Abstraction can be seductive, because it can have a big payoff in reducing complexity. So it's often hard to draw the line, particularly when working in a language with a type of abstraction I've not worked much with before.
Often the danger point comes when you understand how to use an abstraction competently, but you don't yet have the experience needed to be an expert at it.
- bitwize 6y agoYes, but remember Sanchez's Law of Abstraction[0]: abstraction doesn't actually remove complexity, it just puts off having to deal with it. This may be a price worth paying: transformations that actually reduce complexity are much easier to perform on an abstraction of a program than on the whole mess with all its gory details. It's just something to keep in mind. [0] https://news.ycombinator.com/item?id=22601623 https://news.ycombinator.com/item?id=22601623
- deleted 6y ago[deleted]
- monoideism 6y agoYou're echoing my comment: abstraction can be very useful, but you have to take care. Also, it's pointless to claim that transformations on an abstraction can reduce complexity, but abstractions themselves can not. Abstractions are required for that reduction in complexity.