When I tried a mac, it really "just worked". You get it, you open it, and you're running. If you need to, close it, and pick up where you left off when you open it next. My current MBP is 4 years old and feels as snappy as day 1, and I've had no part in maintaining that. As a dev, I have a *nix environment right out of the box, which is incredibly helpful.
I'm hoping Microsoft has finally relieved some of those frustrations and gotten these things right as well.
My Surface Book is solid hardware with a great keyboard, all-day battery, etc. WSL is to the point where there is less weirdness building libraries in WSL than there is on the Mac.
Its not perfect, but the perfect machine doesn't exist.
To do that, I install docker in WSL, then I have to run a Go binary I compiled as root, that lets WSL talk to Windows pipes, which then talks to Docker for Windows.
WSL makes using Windows somewhat tolerable, but it's not even close to having a regular old Unix.
So I have to set up the strange hack I described in order to use docker inside WSL as a client to Docker for Windows.