I really don't understand why developers use macs at all. They're not good dev machines. All production systems I work with are some flavor of linux (mostly ubuntu). There is actually a real impedance mismatch when I'm using my mac for work purposes. All those cores and RAM become meaningless when I have to do everything in a VM anyway. My personal dev machine is a project sputnik running ubuntu 16.04. I can understand why designers would use them but programmers never made any sense.
1. It's UNIX (more or less, but it's much more UNIX, than Windows), it's familiar bash, grep, awk, etc. It also has proper and popular package manager for command line programs (actually 2, macports and homebrew).
2. It just works. You don't have to configure anything, every hardware part functioning properly and it's guaranteed that this will work in the future without any hassle. You don't have to think about drivers, kernel versions, sleep/wake up scripts, swap. You just install OS and start to work. That's on macs, of course, hackintoshes are more like Linux in that aspect.
3. A lot of hardware designed for Macs. I have yet to see a device which will claim that it support Linux. Yet almost anything will work in Mac. Windows is better, of course, but Mac is good too. With Linux you better google it before you buy it, and even then something might be not perfect.
4. They are nice machines overall. Good enough quality, good casing, good design, good internals, good service. Not best, but not much drawbacks.
5. GUI is pretty nice and pleasant to use, there is a lot of GUI software for macs and almost every useful Linux program will have mac port (but not the other way). Linux doesn't have so polished user experience. Though it's not that important for power users, but it's nice to have IMO.
> it's guaranteed that this will work in the future without any hassle
I wish this was true, but I always hold off updating my work MBP at least 6 months, before all the issues with the newest release are resolved.
I remember updating to 10.7 since 10.6 was a solid release and it was a nightmare.
There's a bunch of stuff broken with 10.12 as well, including a bug which prevents curl from working well and a bug which makes Duet less reliable under Sierra.
> They are nice machines overall. Good enough quality, good casing, good design, good internals, good service.
I'd agree with the aluminium casing and good external design, but in regards to internals; the GPUs are very lacklustre in performance, I had a problem with my MBP showing green tint on the screen after just months of usage and have a dead/red pixel on my new display already.
The fans also do a terrible job at cooling and the CPU can reach 95 degrees C while compiling code, which makes it not so hot a dev machine, (pun intended :-)
As others have mentioned, those System76 machines are rebranded Clevo laptops. Thinkpad's dominance among the OpenBSD developers is a strong hardware compatibility endorsement as far as I'm concerned.
When OS X was released, this claim to fame was more exciting than it is today. Nowadays, Linux / GNU dominates what it means to be a mainstream Unix-like operating system.
The extent to which other *nixen deviate from this determines how much of an uphill battle one will face. And I say this as a lover of OpenBSD, and someone who wishes Linux weren't such a dominating de facto standard.
But the Open Group--I can't think of one reason why UNIX certification has mattered for a good number of years now.
> I really don't understand why developers use macs at all.
I don't want to single out your comment, but there's been a lot of this lately (and every time this discussion comes up).
There's no one true version of a 'developer' or a 'pro.'
Broadly speaking, people will be most productive with the tool they know best. And the 'real' pros can be productive with just about anything.
For myself, I consider myself a developer too, but my workflow is probably very different from your workflow. My main machines are a MacBook Pro (2012) and a hefty HP workstation (64GB RAM, dual Xeons) running Ubuntu. There are things I use the Mac for that I'd struggle to do on the HP, and vice versa. But that's just me... But the idea that there's 'one true dev' or 'one true platonic ideal' of a development machine, is just crazy. And that's why I think a lot of this recent Apple criticism is missing the mark (especially when there are plenty of things to criticise Apple for, if that's what one wants to do).
My preferred toolchain and stack just works better on a native linux box because it doesn't need virtualization overhead when I'm on a linux box. Those efficiencies add up pretty quickly. Since I mostly do backend dev work macs have never worked for me as they should.
To address your point about this being a recent trend I actually noticed the mismatch when I first moved to the bay area 5 years ago. It seemed weird to use a mac as a dev machine and then deploy to a ubuntu box in production. There was always some issue that came up because whoever was doing the deployment didn't verify things in a VM first and then had to do some firefighting on a production box.
This wouldn't be a problem if workplaces gave you the option of getting a linux box or a mac. At most places you don't have a choice. All the IT management software is built for a mac so you get a mac.
Seriously???
In that case the real problem is pushing directly from a dev machine to prod.
It is simply crazy not to use a staging server.
I bet that even if the Dev machine has the same OS as prod a lot of shit happens when not using a proper staging server (been there seen that).
So the production problems that you experienced are completely unrelated to the OS on the dev machine.
They are simply caused by the wrong deployment process.
We can go around circles for days. The fundamental issue still stands. You are losing time and spending effort working around OS mismatches because your dev machine and your production servers do not line up. Adding a staging server moves the problem one level higher. You will still spend however long it takes to fix whatever mismatch was caused by the differing environments.
I develop on windows and deploy on Linux.
I have done that for more that 10 years and I never found a problem that wouldn't have happened if I developed on Linux.
And obviously I always deployed first on test, then on stage and only at the end in production.
What kind of problems did you see that happened because of developing on Mac OS instead of Linux?
The only ones that I can think of are all caused by a wrong deployment process.
Try setting up a virtualenv on windows, linux, mac and then tell me there are no issues. Sometimes the versions won't even line up for some libraries because whatever works on windows will not work on linux will not work on mac. Same with ruby gems and npm modules that require compilation.
Maybe because after decades I'm frankly pissed of all the infinite glitches in windows and Linux and I want something that just works?
Every hour spent in fighting those problems is real money that I lose, but above all I want to write code, not to fight with a machine.
I'm not 16 anymore (when I had all the time of this world and when I even enjoyed the fight), now I just want to use my time to write code instead of wasting it. Simply as that.
> Maybe because after decades I'm frankly pissed of all the infinite glitches in windows and Linux and I want something that just works?
I actually ended up switching from OS X to Linux (on a MacBook) for this reason. Things break all the time, but at least I can usually figure out how to fix them on Linux. (OS X would freeze at random times, requiring a hard shutdown, and also sometimes resume from sleep with a black screen and no way to change it, the former happening across every version and the latter only after I upgraded to Mavericks).
I don't remember when it happened, but there came a time when the amount of effort to strip and disable stuff in Mac OS X became more of an effort than free *nixen. Sometime later, I made a small investment in swapping a desktop environment for a vanilla xmonad, and I couldn't be happier with the minimalism and lack of distractions.
I agree but how does a mac deliver that experience? How hard is it to fuck up installing the required dev toolchain and then jumping into Vim or your IDE of choice to get work done? How does a mac help with any of that?
I've never run into any issues with my dell machine and it started with ubuntu 12.04 when I first got it. Each upgrade has gone without any hitches or glitches.
If you intend to purchase a system with the intent of running linux on it, please consider a system76, (or any other Clevo reseller, such as Scan Computers in the UK) or a Lenovo that is known to work well or the XPS Dev Edition and you'll have much better time getting all these things to work, (usually out-of-the-box) than on a random PC meant to run Windows and nothing else.
You don't need to understand anything, you just need to accept that not all people are like you. Some prefer pepsi(ugh), some like red, some enjoy winter more. And some like using a Mac.
Why you are trying to group everybody together is beyond me. There are hundreds of programming languages, dozens of popular platforms, maybe hundreds of niche ones. There is no one single, correct solution, just as there is no one single answer to your question, because there is no one single deleveloper, there are millions, and some enjoy the stark look of a terminal and others prefer to look at pretty icons.
> All those cores and RAM become meaningless when I have to do everything in a VM anyway.
Virtualization is a bit less efficient but it certainly does not prevent you from utilizing multiple CPU cores or all your available RAM -- minus the resources consumed by the host OS of course.
> It has polish and care that the stereotypical raging neckbeards who espouse the mantra of Linux on the desktop are unable to appreciate (or, apparently, build), and it has to exist, even if merely as a counterpoint to all the ugliness.
That's the part I don't get I guess. I'm either in Chrome, Vim, some IDE, or experimenting in some REPL. There isn't much room for improving ergonomics in any of those instances by adding extra "polish". I prefer my technical aesthetics to be compositional instead of pretty and the dell machine I have with ubuntu delivers on that front very nicely.
Imagine the Venn diagram of "Has a Unix environment because we deploy to Linux" and "Can run MS Office, including Outlook". The intersection has the word "Mac" in it. That's why our entire team was issued Macs (I work in a 70,000 person company) and lots of other developers choose it too.
I pretty much don't use any technology outside of Node, the browser, and HTTP so it doesn't really matter to me what platform I'm on.
Maybe I'm not a real developer according to your standards. Not enough configuration files and build systems modeled in my brain to qualify. I just prefer code to black boxes.