Nothing is obvious to everyone
Nothing is obvious to everyone, but everything is obvious to someone. These two facts are something Socrates might have said. It’s simple and true, but easy to forget. Once we learn how to ride a bike, we forget how long it took to learn. There can be value in forgetting, or remembering, depending on how you look at things.
In this post about Math, it’s offered that things don’t seem simple until they are understood:
It’s a common malady of myself and my friends who study mathematics to think that we’re stupid because it’s taken so long to understand something so simple. As I recalled all this occurrences I had a new epiphany: It suddenly seems simple because we suddenly understand it.
But the opposite is also true.
Until you understand how something works, it can’t seem complex. I drove manual transmission for years before I knew what a clutch actually did. It was just a lever I pushed with my foot that left me go faster. I’d never seen the gears, or a clutch mechanism, so in my mind it was simple.
But one day, out of curiosity, I read about how a clutch works. And transmissions. Not being mechanically inclined, it was complicated. Previously in my mind, the pedal was the clutch. But it turned out the clutch was something specific, and complex, that the lever merely activated. I could never have invented such a thing, much less constructed or fixed it.
If you study any trivial thing with persistence you will find complexity. Atoms yields quarks. Blood yields DNA. The more carefully you look, the more questions you find.
Everything is simple and complex at the same time.
Also see: Why it’s ok to be obvious
I would counter with something seems complex before you understand it, it gets more complex once you study it, and then simple once understood, because you can break it down. Probably the truest test of understanding something is teaching it in an understandable way to someone else.
Taking this intuition to the field of software engineering gives us Linus’ Law: http://en.wikipedia.org/wiki/Linus'_Law
Scott,
your example of the “clutch” shows the typical division between a really nice, simple, and easy-to-use “interface,” i.e. the pedal, and the industriously complicated, but (hopefully) finely tuned inner workings of the transmission, i.e., the “implementation.” This could make a good point in any book on “object-oriented” programming.
If you study any complex thing (the solar system with sun, moon, earth, and five planets) with persistence you will find simplicity (Kepler’s three laws of planetary motion). Take “natural laws,” boiled down from tons of non-matching, oftentimes contradicting observational data.
And a related quote of Seneca: “It is not because things are difficult that we do not dare, it is because we do not dare that things are difficult.”
Andreas
So this might conclude that it’s important to explore the complexity at a level that is relevant for, right?