For me I stopped fighting the OS by abstracting the OS away from my work. The JVM is my target and it "runs everywhere" essentially.
Then I chose macOS over Linux or Windows because I like the way it looks, iTerm is good, brew is "good enough", my IDE (IntelliJ) runs nicely and looks good with nice crisp fonts on big 4k display.
I do Docker things but only because others write code in JS, generally I use tools like Google's Jib that allow me to build and push containers without needing Docker locally. Docker does nothing for JVM apps, we have jars/wars/nars for distribution and already get that "runs the same everywhere" for free without all the nonsense that comes with languages that depend on system libraries and architecture specific code like Node/Python/Ruby/Go.
Build with Jib, push to registry, run with k8s, enjoy life without Dockerfiles.
You can do similar with Bazel too but I imagine it would be harder if you need to cross-compile from Darwin to Linux, etc so probably only works this well with JVM.
Then I chose macOS over Linux or Windows because I like the way it looks, iTerm is good, brew is "good enough", my IDE (IntelliJ) runs nicely and looks good with nice crisp fonts on big 4k display.
I do Docker things but only because others write code in JS, generally I use tools like Google's Jib that allow me to build and push containers without needing Docker locally. Docker does nothing for JVM apps, we have jars/wars/nars for distribution and already get that "runs the same everywhere" for free without all the nonsense that comes with languages that depend on system libraries and architecture specific code like Node/Python/Ruby/Go.
Build with Jib, push to registry, run with k8s, enjoy life without Dockerfiles.
You can do similar with Bazel too but I imagine it would be harder if you need to cross-compile from Darwin to Linux, etc so probably only works this well with JVM.