4 ms·
How is having to re-write the abstraction layer a "cost of abstraction"? That is work that you would have had to do anyway. I think the "land mine" metaphor is
by delluminatus 12y ago
How is having to re-write the abstraction layer a "cost of abstraction"? That is work that you would have had to do anyway.
I think the "land mine" metaphor is unnecessarily disparaging. Abstractions are more like roads. They make life easier, as long as you can stay on them. But if you have to go off the road, you're going to have to make a road for yourself.
Generally speaking, roads only reduce the amount of work you have to do to travel, unless you use them inappropriately (like going too far out of your way when you could have taken a shortcut). On the other hand, land mines only increase the difficulty of traveling.
- falcolas 12y ago> How is having to re-write the abstraction layer a "cost of abstraction"? Because in my experience, it's never as clean cut as "this abstraction doesn't work, lets go re-write it". The process typically goes more like: * Identify that there's a problem, start trying to understand the code in the abstraction in order to identify the problem. * Fork the abstraction code and make changes to it. * Attempt to push changes upstream because "if I have the problem, other people have the problem as well", plus all the work that comes with pushing changes upstream. * Repeat the previous three steps for a period of time ranging from months to years * Find another implementation of the abstraction and repeat the previous four steps again. * Finally give up and then re-write the whole abstraction in a way which actually works for your needs. Land mines are also a leaky abstraction of the facilitation of forward movement as you have pointed out, but I have a hard time getting the "technical debt explosion in potentia" out of my mind.