I came across Joel Spolsky's article "Law of Leaky Abstractions" while reading Judith Dinowitz's blog. Joel's article is absolutely fantastic and should be read by anyone with a modicum of programming experience. In his article Joel outlines how the world of abstraction (making something simple out of something difficult) tends to be as leaky as that old, dripping faucet.
Here's some excerpts:
"This is what I call a leaky abstraction. TCP attempts to provide a complete abstraction of an underlying unreliable network, but sometimes, the network leaks through the abstraction and you feel the things that the abstraction can't quite protect you from. This is but one example of what I've dubbed the Law of Leaky Abstractions: All non-trivial abstractions, to some degree, are leaky."
"Abstractions fail. Sometimes a little, sometimes a lot. There's leakage. Things go wrong. It happens all over the place when you have abstractions."
"One reason the law of leaky abstractions is problematic is that it means that abstractions do not really simplify our lives as much as they were meant to."
"The law of leaky abstractions means that whenever somebody comes up with a wizzy new code-generation tool that is supposed to make us all ever-so-efficient, you hear a lot of people saying "learn how to do it manually first, then use the wizzy tool to save time." Code generation tools which pretend to abstract out something, like all abstractions, leak, and the only way to deal with the leaks competently is to learn about how the abstractions work and what they are abstracting. So the abstractions save us time working, but they don't save us time learning."
Enticed? Click below for the full article.
About this post:
This entry was posted by Aaron West on November 27, 2002 at 11:55 AM. It was filed in the following categories: Programming. It has been viewed 38736 times and has 0 comments.