Erik Simmler

Internaut, software developer and irregular rambler

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.