Abstraction in a nearly reasonable world
I like systems. Iām always fascinated by wonderfully designed systems which are as useful as they are beautiful. In my own work, I often feel a strong pull to āinventā an elegant and general āsolutionā. The result, more often then not, exhibits neither trait.
āThe real trouble with this world of ours is not that it is an unreasonable world, nor even that it is a reasonable one. The commonest kind of trouble is that it is nearly reasonable, but not quite. Life is not an illogicality; yet it is a trap for logicians. It looks just a little more mathematical and regular than it is; its exactitude is obvious, but its inexactitude is hidden; its wildness lies in wait.ā ā G. K. Chesterton
In the rush to create, it is so easy to see patterns that donāt actually exist. Things which appear to be same are often not at all, while other things turn out to be nearly identical beneath the surface. The world is a wild place, and any designer of a system must remember that things are nearly, but not quite, as reasonable as they appear. Madness lies in the edge cases.
This is why abstraction (otherwise known as ānaming thingsā, one of ātwo hard things in computer scienceā) too early in the design process is so dangerous.