A Software Designer's Blog


Beauty, Elegance, Simplicity, Ease: Microservices as the Supply Chain

20 Jun 2016

In the course of writing about Hyperobjects today, I came across this quote from Einstein:

Our experience hitherto justifies us in trusting that nature is the realization of the simplest that is mathematically conceivable.

When Paul Erdős would uncover a proof that was particularly elegant, he would remark “This one is from the Book!” Here we find two great minds confirming that simplicity is characteristic of the real world. As Feynman said,

Nature has great simplicity and therefore a great beauty.

Beauty is a consequence of simplicity; it is the elegance of simplicity that we find beautiful. The simple line that evokes a greater whole.

To what extent are we justified in searching for simplification? There is a quote often misattributed to Einstein that goes something like, “a solution should be as simple as possible but no simpler;” this pithy saying is considered to be a reduction of this actual quote of Einstein:

It can scarcely be denied that the supreme goal of all theory is to make the irreducible basic elements as simple and as few as possible without having to surrender the adequate representation of a single datum of experience.

This brings to mind Ockham’s Razor both for the salient content regarding simplicity and for the common misleading reductive restatement; we usually hear “the simplest solution is usually the right one”, but the Law of Parsimony is better stated as:

A solution with fewer assumptions is to be preferred.

Karl Popper refines this concept further:

Simple statements, if knowledge is our object, are to be prized more highly than less simple ones because they tell us more; because their empirical content is greater; and because they are better testable.

According to Popper a simple statement is one with fewer parameters precisely because it is more easily falsifiable.

So we come to a relationship between simplicity and ease. Again, Feynman:

You can recognize truth by its beauty and simplicity. When you get it right, it is obvious that it is right—at least if you have any experience—because usually what happens is that more comes out than goes in. …The inexperienced, the crackpots, and people like that, make guesses that are simple, but you can immediately see that they are wrong, so that does not count. Others, the inexperienced students, make guesses that are very complicated, and it sort of looks as if it is all right, but I know it is not true because the truth always turns out to be simpler than you thought.

We observe in the truth of things a fecundity. The reaction of our minds with great ideas, powerful theories, is generative; shaped by experience with the real world, the trained mind provides a catalytic substrate upon which the power of the theory unfolds. From a paucity of parameters comes a multiplicity of consequences that are readily verified by experience.

Perspective is worth 90 IQ points. -Alan Kay

The obviousness of the truth, the ease with which a theory is ascertained as self-evident, is entirely a function of the preparation of the mind, the acquisition of the necessary perspective.

There are no shortcuts here. To grasp the truth of a thing, we must ascend. We must stand on the shoulders of giants. Most of us cannot make the climb alone, and therein lies the most pernicious fact of our learning–we must trust.

доверяй, но проверяй Trust, but verify

Most of what we call learning today is simply imitation. Feynman has a famous rant on cargo cult “science”, but I think technology is inherently biased towards an imitation-first path to mastery. Language is a technology to which we have apparently adapted, a reciprocal evolution, but imitation remains the primary means of acquisition.

The individual’s mastery of any technology necessarily involves stages of rote imitation. Though vanishingly few do progress through these stages with an alacrity that belies the technological aspect, the non-instinctual nature, it remains a process of wiring our brains and so implies repetition and assidiuously identifying and replicating salient details.

The generative power of our technology, the force multiplier, the asymmetry of what is produced from what is consumed… this we describe as elegance, making it look easy. We cannot help but be blinkered by technology that purports to make problem-solving look like so much facile imitation.

To a person with a hammer, everything looks like a nail.

Kuhn elucidated the dynamics of the paradigm in science. In software systems the underlying tensions are exacerbated by the ersatz nature of the operating environment–the reciprocal evolution of the the technology landscape and the prevailing paradigms. The very edict of parsimony is implicitly invoked to restate problems in terms of the tools being used to solve nominally similar problems.

So a perennial tension exists wherein progress in a technological paradigm ensures its own obsolescence. Newcomers do not view the problems in terms of the tools of the paradigm, and so are free to find simpler solutions. New paradigms form around the tools of these simpler solutions, and their purview is expanded to similar problems; thus the cycle repeats.

The Industrial Mindset

The common thread here is that simplicity is only meaningful in the context of a theory that accounts entirely for experience. Ease and simplicity are related precisely by the amount and kind of experience required to test a theory.

The industrial mindset is dominated by the notion of the supply chain; fungible commodities are tranformed by turns into interchangable parts that are assembled into increasingly more complex constituents, ending in a finished product that performs a well-defined function in the service of humanity. A supply chain for making cars is not suddenly expected to produce toasters; it is a distributed solution to a specific problem.

The supply chain can be seen an existence proof of a solution that seems more complicated than necessary; contrast it with manufacturing back when even the electricity was part of a monolithic, vertically integrated whole.

The software industry’s answer to the supply chain is microservices. Small teams focused on solving relatively small, well-defined constituent problems. Software vendors should not be in the supply chain, except insofar as individual microservice teams leverage their products.

Hyperobjects is a perspective on microservices coordination; it is supply chain management for enterprise software.