Also with the OS and the hardware made by the same entity, there is no finger pointing when stuff goes wrong. You don't have the card/board/device maker blaming the driver/OS/software authors and vice versa, so instead of a hopeless feeling, you have a system that works. Yes sometimes Apple is said not to own up to their own problems (keyboard-gate, etc.) but often there exists a PBKAC and there are a lot of haters out there who love to post exaggerated horror stories, so take all that with a grain of salt.
It also has a bug reporting system that, while it could be better and doesn't give you much feedback, at least you know it is being paid attention to, and updates are improvements.
Also you know the creators aren't out to harvest all your data, and they seem a lot less likely to be in bed with three letter agencies that would love to backdoor anything you write. Not thinking of Linux with those two points, but other players. Linux systems have their own problems (see finger pointing above).
MacOS is pretty much the ultimate Unix environment where everything just works. You may not get as good package managers like Portage, but MacOS usually has a good enough solution like MacPorts back then or Homebrew now.
OS Updates while sometimes may have hiccups here and there (like the migration from GCC to Clang) it's usually painless with me only having to tweak a couple of settings here and there in my day to day tooling, like tmux. In Linux I expected it to break something major and actually scheduled at least a day to fix it.
In summary, I like Unix and I just want to focus on work.
I guess at this point it's just inertia, but if there were a comparable alternative I'd love to move.
With windows I presume my machine compromised and a keylogger installed.
I must note though, if I had my own windows machine I would probably feel better about it.
It is really disappointing that Apple does not make a back end server dev friendly computer (hardware) or operating system anymore and I have apps and workflows I like that are not amenable to an actual Linux main computer.
Feel free to see my other issues in my comment history (rants?). Especially, where are my f-keys?
Also, no f-keys in MemTest86 and other Linux programs.
Inertia increases velocity with age.
I'm too old to tweak every stupid thing on a system any longer.
OSX just works. It will save you enough time to pay for the hardware and give you piece of mind make your life way easier.
Sure you could develop on windows but OSX is way easier at least in my experience (Rails and Laravel Development).
A macbook air is more than powerful enough for web development and you can get them on sale for less than the price of an upper end windows laptop.
I use Windows at work and both macOS and Linux at home for making games. I don't think I'll buy another MacBook in its current state, but I do think a lot of the Apple environment has been nice for programming, personally.
I think the WSL has been a great boon for developing on Windows machines, and I hope it gains more traction among developers.
1b. MacBooks have the best displays on the market. Surface displays are a close second. Everything else is a mixed bag. Some represent colors poorly; most have terrible viewing angles.
2. The terminal feels like home for Linux and UNIX devs (which there are a lot of).
3. Cargo cult factor. Linux devs hated all things Microsoft for a long time because of the whole embrace, extend, extinguish thing, but there weren't many "portable" Linux options out there, so many settled on Windows machines. OS X, being a UNIX, was an easy sell, and because devs tend to make a lot of money on the average, buying one (or getting one from work) wasn't hard. Microsoft has done a lot to change their image, and I think many folks are catching on, but the inertia is real.
4. People still think that Windows is crash-prone or easy to hack and that OS X is immune from all of that. (See Google's latest Chromebook commercial.) That hasn't been true since Windows 7, but, again, the inertia is real.
The benefits still outweighs Adobe’s hostile approach to software renting, distribution and updates.
Mac also lets you choose arbitrary resolution scaling. And it's damn near perfect.
I remember the late 90s though. Ugh. Staircase aliasing and horrible stroke widths.
Cywin, Chocolatey, GitHub Desktop App, Windows Subsystem for Linux...
I feel like Dr. Evil's son Scott. Everything is so damn complex!
So many features.
Microsoft Dev Team blog posts announcing stuff are pages and pages of great documentation. Linux dev posts are shorter, people write simple examples, expect you to engage with code samples of your own. Apple devs post nothing at all.
MacOS provides a most effective desktop environment that has careful graphic design, hosts some damn fine applications, and a Bash command-line interface to the actual system.
Solaris would have grown into this, they were very close.
For instance if you're on Windows and your home directory has non-ascii characters a lot of software will fail. Not just open source, but all kind of modules, libraries, etc that are supposed to be cross-platform but in reality only support utf8 inside filenames and directories.
Thus isn't a problem with Windows, but lack of testing.
Recently though I've moved away from OS X and back to Linux on the desktop. The experience is much rockier in general and requires much more setup/customization but in the end I feel that the developer experience is better. There's a broader selection of tools and better native support for things like Docker.
High Sierra was the straw that broke the camel's back for me. I was having a lot of weird issues and general slowness.
OSX enjoys a lot of network effects these days.. all the devs use it, so all the sexy apps tend to be first class citizens on it.
Despite all that, I still prefer a Linux machine for development though. I think even gnome 3 is a step up from osx when it comes to usability. Luckily, Macs are so widy used among devs, you can generally be sure their laptops will end up being supported pretty well by some flavor of Linux, eventually.
Windows is 50%. Mac and Linux each have about 25%.
That makes OS X about 2x more popular with devs than desktops as a whole.
I'm confused with your comparison with desktops in particular. What does desktop vs. laptop have to do with it?
That's how people commonly distinguish between Windows/Mac/etc. (desktop) vs. iOS/Android (mobile).
In my experience in the games industry the PC has long been the most favoured platform amongst game developers. It was the standard for games development up until very recently when Unity appeared and game development on the Mac became viable.
For your typical console or PC game studio it's likely to be all PCs with the coders themselves favouring PCs at home.
2- it's the only platform that lets you develop easily for macOS, MS-Windows, Linux, iOS, Android, and others.
That said, I still prefer Linux; but it is more work using Linux than macos.
Exception here is IntelliJ - best and worst IDE at the same time...
I even rsync all my local changes from Mac to Ubuntu for development that requires a gpu.
When fuacia or magenta or whatever it's called now, becomes a thing, I'll see if I can switch :)
Windows has an utterly useless command-line environment. PowerShell is an attempt to remedy this, but honestly it's both a little too much, and far too little at the same time. Ubuntu on Windows is another attempt that falls short of its goals, it's a second-class environment strapped on top of the legacy mess that is Windows.
The only thing I've found that makes Windows even habitable is that the Node.js experience is actually pretty good. With NPM, git, and a good text editor you can get a lot done, but even then you'll hit bare dirt now and then. Want to make a quick shell script to automate something? Hah! No. You need to commit to making a quick Node script instead.
It's ridiculous that grandma's MacBook Air has better command-line tools than a typical developer's high-end Windows Professional workstation.
The problem is that the commands are verbose (although part of that is because of the VERB-OBJECT style which is a great concept) as are the parameters and switches. It seems designed more for scripting and easy guessing of commands.
However, in the Windows world you’re more likely to see C# used for scripting, and the verbosity takes away from the CLI aspect.
Also, it’s slow. And Windows apps are not created with the command line in mind. For example, if I want to have even close to a chance of compiling VS solutions on the command line I have to open the Dev tools CLI which is not Powershell (and even then it’s likely to fail because VS does environmental setup that the CLI tools can’t).