When we begin to think about systems, and how good systems prosper, we might envisage a farmer diligently cultivating his land.
The farmer understands that they are a beneficiary of natures 'good will’. To alter the cogs, as it were, of such a great system surely is a failed road they must strive to avoid.
The farmer knows their capabilities. The farmer has seen all that nature has dealt, the farmer understands that time is their benevolent dictator.
The farmer recognises their own measurable level of effort capable, for if they do not then nothing shall ever be done! The farmer understands what the system, a system in which he is a beneficiary, is capable of. For if they do not then nothing shall ever be gained!
A fine system indeed. Collaboration and understanding at it’s core.
Our aim should not be to push back boundaries, doing so makes it seem we do not know what we are capable of. Instead, we need to measure what we are capable of in order to come face-to-face with our boundaries; maximising the effect of our decisions, minimising the cost of our actions, and being ruthlessly efficient in our efforts.
A contrast we might take from this sentiment is that of the teenager.
We all rebelled.
Some more than others.
Some have wounds, scars and (maybe) regrets.
Those formative years obscure who we really strive to be. We push - widening those boundaries ever closer to the edge of understanding - not knowing our own capabilities; perpetually searching.
Most of us look back at those rebellious years as those which inform us; the paths taken, and those to take.
Engineering, as the Oxford English dictionary describes, is, 'The action of working artfully to bring something about'.
Working artfully, a noble goal.
We might question this noble goal however:
Q. 'if something has already been brought about, what could we do to make it better?’
A. Understand why we succeeded. Know where we failed.
Over the last 5 years I have been lucky enough to be involved in the design and implemention of software systems, and critical software systems that:
- gather, decode, analyse and present real-time cellular 4G network data that allows network operators mange and understand their cellular network slice; driving 4G adoption throughout America in particular
- gather, decode, analyse human genome data for the the prevalence of cancer, rare disease and intellectual disability; treating and monitoring viruses, disease and disability cases
and, be involved in the design of software systems that strive to optimise the deployment of single-stack, and cluster applications through machine learning techniques.
These, like all complex systems, rely on:
- domain knowledge,
- well-designed, communicated APIs,
- SLAs and,
appreciating how services interact within the system.
Implementation details do not matter, language does not matter. Languages are just one of an array of tools available that should be chosen with the goal of benefiting the understood system.
What matters is that the paths we choose are as a consequence of understanding our capabilities, and the capabilities of those with whom we are in collaboration.
Once we are honest with ourselves that we recognise and respect that striving for an understanding of our capabilities does matter, boundaries do not matter.