When it comes to the modern day world of software, one thing above all has become clear to me over the last 20 years: On a long enough time line, failure is virtually guaranteed. That being the case, how our software approaches, adjusts for and reconciles failure is clearly its most important characteristic.
That’s not to say that modern day software is all garbage, but in all the ways that actually matter, that largely appears to be the case. The cold hard reality is that as requirements and technology have advanced, software developers have struggled in earnest to keep up. Despite the rapid rate of advancement on the tooling side there is still a finite limit to the level of complication a single human being can grapple with on a mental level. The specific limit varies from developer to developer but regardless of how good anybody is there is no debate: We all have a limit.
...