Software Gardening & playing the right game

in coding •  3 years ago 

"Everyone is a genius. But if you judge a fish by its ability to climb a tree, it will live its whole life believing that it is stupid." a quote sometimes credited to Albert Einstein.

Software engineering, when judged as a discipline of engineering aspires to a rigor that lives up to skyscraper construction and aircraft production.

Soft ware or hard, engineering suggest an expectation of meticulous process and precise outcome. If you do exactly these you get exactly that, no exception.

The fact that the term engineering has been relegated to an umbrella term in software to encompass all areas of development is an indication of 'engineers' not living up to that ideal and/or not care anymore.

Here is where fishes are judged by how they climb the tree of engineering. It has been a false narrative all along.

Gardening, not Engineering

An empty garden is a problem of imagination, anything is possible. Once the garden is grown movements are constrained. Constraints are built in, creativity is called for.

Building version 1.0 of anything is easy (as long as it's something people want). It's version 2.0 that's hard and progressively so.

A single plant is easy to control, even if it's a farm of disconnected potted plants. Take away any pot and no other pot would care.

Emergence

Plants connected by the same soil is a different story. At an unknown point in time they became an emergent ecosystem. They probably talk to each other in way we dunno about.

Attempts at true control here illusory. What's really available for influence are individual units, in the hope that there is no chain reaction taking down the whole ecosystem.

The advise for modularization of code, containerizations, etc. are really desires to minimize connections of each elements to avoid them emerging into an out of control ecosystem. The intention is noble, but with growth comes emergence.

Given enough time with emergence, the ecosystem develop unique characteristics with strengths and weaknesses. It has grown into something you need to respect.

Bugs

Engineers do not expect bugs. Having bugs are failures in design and execution.

Gardeners expect bugs. They rather not have it, but having bugs are not failures. It's part of the game.

Debugging is not a necessary evil. It becomes a forensic pursuit, an opportunity towards antifragility.

... continue reading here

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!