One might think that constant firefighting is a waste of resources, and we'd be better off solving problems before they happen. That's true if and only if you know for sure that the problem and eventual breakage is really going to happen AND that it's worth fixing. At least in my experience, it's more often true that people overestimate the risk of calamity and waste resources fixing things that aren't actually going to break catastrophically. Or fix things that we don't actually need, but only figure out that we don't need them when they finally break and we realize that the cost of fixing or replacing it outweighs whatever value it was providing.
The engineer in me hates saying this, but sometimes things don't have to be beautifully designed and perfectly built to handle the worst. Duct tape and superglue often really is good enough.
Of course, this doesn't apply to problems that are truly existential risks. If the potential systemic breakage is so bad that it irreparably collapses the system, then active preparedness can certainly be justified.
On firefighting…huge swaths of burned down land can’t be reordered on Amazon and delivered next day. People quip “just replant the trees” but of course that doesn’t rebuild an ecosystem, we might not even replant the right trees, and the things that lived there are now dead.
On personal scales, waiting for your car to break to fix it isn’t a good strategy either, nor would you wait for you gas pipes to leak, or see if the thunder actually hits your home before preparing for it.
Basically I feel “don‘t fix until it breaks” is a good strategy for day to day small scale decisions, but problematic for most stuff beyond that.
You need all three.
Well, at least until C-19 hit then you realize that 'immediate replace/reorder' doesn't actually exist any longer, and now your forklift parts are actually going to take 2 months to show up on a delayed boat and nobody in the US has any replacements.
For example you must never declare 'magic numbers' in code. Or you must always obey S.O.L.I.D. or get 100% TDD. There will be be people who believe in these dogmatically to the point they won't employ anyone who says different (it becomes an interview question).
I am not arguing that these are wrong!
I am arguing that they are not evidence driven (they cannot be, software is to complex, it is not a narrow experiment on a lab mouse). So they must be culture/preference/worldview driven.
When there is no evidence driven approach to 99% of your decisions on software it becomes: an art. And that is fine.
That said it might be possible to show evidence that an approach is good for your code base, for your team, as that is a more limited scope, rather than "in general".
What isn't fine is the number of overly confident global assertions we hear from software people about how to build software.
Though when you’re lucky enough to be in a tight labor market it sure is a convenient filter for companies you don’t want to join!
Seriously though I hate shibboleth driven interviews.
Bad example. It absolutely wasn't useless at the time to build those thousands of nukes. The whole concept of mutual assured destruction breaks down if the other side has 20x more nukes.
Second question. Let's say you want to negotiate a treaty in the case where neither side trusts the other, and where neither side really has any enforcement power over the other. What mechanism would you propose, to which both parties could agree, and to which both parties could be pretty sure the other side would respect?
MAD is indeed horrific. The authors of the policy thought so as well. Everyone would very much appreciate a better solution. Until now, none has been proposed.