An abstraction can become so general that it stops explaining the product
Joel Spolsky starts with ordinary activities: sending a document, requesting a web page, calling a method. Each can be redescribed as a form of messaging. The description becomes more universal with every step, while conveying less about what someone actually needs to build.
His target is a familiar organizational temptation. A grand framework can sound more intellectually substantial than a modest product that solves a particular problem. The broad vocabulary hides the missing decisions: which user, which task, which constraints, which working implementation?
This is an argument about the usefulness of abstraction, not evidence that shared infrastructure is always wasteful. A general model earns its place when it helps resolve concrete differences. It becomes suspect when explaining the model takes the place of explaining how the software will help anyone. The essay is short enough that its deliberately impatient tone remains part of the point.