As developers we need to be more than just average consumers of technology.
That means we need to be more realistic about things like system updates and patches than just blindly installing them especially on our primary working machine.
At the very least we need to be able to test the very latest. You know our users are going to install the latest betas and run them as soon as possible. And we still need to be able to test on the oldest systems we say we support.
Maybe that means you have a bunch of bootable systems so you can test your software on older versions of MacOS, Windows, Linux or whatever other OSes you support. VM’s _may_ be sufficient for this although if you have hardware dependencies they can be tough to test.
Or, like many Mac developers have experienced, a VM may hide a problem from you. Windows flickering is almost non-existent in some VM’s running on macOS as the VM is double buffered by the underlying host OS. So you never see that issue running in some VM’s on macOS. But testing on real hardware may show it to you.
For me this has typically meant having several removable drives that I can boot from on my Mac. I have everything from 10.10 up to 10.15 bootable. For Window I have Windows 7, 8 and 10 as bootable drives for my PC. For linux I’ll do similar if the need arises.
In many cases a user may “update first and ask questions later”.
As a software developer we need to do better than that.