I've run in to several problems with OS X and macOS. The first being that macOS wants to always upgrade itself to the latest version. However, that's not good for test machines, it's problematic for development machines that need to stay stable, and it's not good for user desktops which might want 32-bit applications, certain kernel modifications for user customization, support for older applications that Apple itself just abandoned, or third party applications that are incompatible with newer operating system versions, have altered their licensing in unfriendly ways, or simply aren't around any more to resolve license keys. Or, in the case of Microsoft Office, just stop working because of the operating system version number and not any particular technical reason as a means to push a subscription you don't need down your throat.
The second is that some of the applications and operating system updates can be huge and if you're working on a project which consumes a lot of diskspace, you don't need Apple filling it up in the background. Additionally, if you're working on something with a lot of network traffic, you don't need your bandwidth being consumed.
The third is having Apple perpetually toss notifications in your face while you're trying to work to say it has an upgrade ready, want it now or a little bit from now. There really needs to be a way to say "not until I ask for it."
Parallel to this, it's highly important that an operating system get security patches and bug fixes, but it doesn't need to upgrade to do this. It needs to update.
What worse is that there are cases where Apple's macOS will try to sneak an upgrade of itself on your system, you'll discover it during a reboot, and get stuck because your hardware is too old to upgrade (seriously, why'd it try) but meanwhile your boot cycle won't let you login until you've done the upgrade. Catch-22.
If you boot and see "MacOS Could Not Be Installed On Your Computer", that's the macOS installation loop failure, and of course the prescribed methodology to get out of it, usually results in hoping you have a recent Time Machine, SuperDuper!, or Carbon Copy Cloner backup.
However, you can avoid all those woes.
The following settings in Apple / System Preferences / Software Update will instruct your machine to let you know when there are operating system updates to be had, go get them when you ask for them and not to premptively download them, but stay away from upgrading the operating system as a whole.
Once you've got those settings done, press the Advanced button and make these changes too.