And you can’t drive as fast when it’s raining, even though your car has windshield wipers and headlights and a roof and a heater, all of which protect you from caring about the fact that it’s raining (they abstract away the weather), but lo, you have to worry about hydroplaning (or aquaplaning in England) and sometimes the rain is so strong you can’t see very far ahead so you go slower in the rain, because the weather can never be completely abstracted away, because of the law of leaky abstractions.

Just one post in the timeless archive of Joel Spoelsky’s Joel on Software blog.

At times, Spoelsky confuses abstractions with ignoring the actual issue; good abstractions reduce any needless complexity in the problem.

An iPhone could be seen as a leaky abstraction by Spoelsky’s taxonomy, but the simplicity of the iPhone and its operating system are a gift. Abstraction is a game of balance.