I've been on the fence about buying a Mac Mini for close to 4 years now. I love the new Mac Mini but there is one thing I hate about it and can't seem to get over and that is the price.
The Problem with Mac's
Mac's are prohibitively expensive. While the starting price of $799 is on par with other PCs, for that you get an i3 Processor and 8GB of RAM. As soon as you start speccing one, add a Core i7, more RAM, and more storage, and all of a sudden that sub $1000 computer is now $2000+.
I work in the software development industry so I have no qualms about dropping two grand on something that will make me money; nevertheless, I still have to justify the cost somehow.
And that is where the problem lies. I can tell you a million reasons why I would want a Mac for development, but I can list maybe 1 or 2 reasons why I would ever need a Mac for Development. The way I see it Mac's have only 1 use for which they are exclusively needed: iOS and Mac App development.
So what is the alternative?
The way I see it, there are two alternatives to buying a Mac. Either one you build a Hackintosh, or you buy a PC and install Linux on it. I've personally have been down both routes and I can tell you that I eventually settled on the latter.
A Hackintosh
Building a Hackintosh is probably the best alternative to a Mac but there is one thing that always bugged me about them and that none of it was sanctioned by Apple.
Now the rule-breaking part is not what bugged me, my family told me I had to become a Lawyer and I broke the rules to become a Programmer, so I'm well versed in breaking rules. No the part that bugs me is that at any time, your Hackintosh can stop working.
Now if you're just a person who codes on the side and doesn't need guaranteed uptime fine. But for those who do it professionally, time is money and I can't afford to have my machine down. The chance of this is small however after running into issues Upgrading from OSX 10.10 to 10.11, I decided that I needed to run something more stable, and something I could truly rely on.
A Linux Machine
I eventually settled on an Intel NUC + Ubuntu 18.04 (and now 20.04). The experience has been great. For one I no longer build iOS apps outside of my day job so I didn't need a Mac, and I found that Ubuntu can handle Web Development just as well if not better than a Mac can.
The main advantage here is the price. A comparable Mac Mini to the NUC that I bought would have cost me ~$2200, but I was able to get everything for my NUC for around ~$1200, much better.
While there are some tradeoffs to running Linux, under the hood, things like Node, React, npm, and just about any other tool for Web Development runs on Linux just as it would on a Mac. Sure there are some nice tools for Mac that aren't available on Linux like Sketch, but there are ample alternatives to most software, some of it better than the app it's replacing.
Consider Linux + PC vs Getting a Mac.
Mac's are great, I have a Macbook for work and I love it. However now matter how much I may love my Mac's, I don't love them enough to justify parting with $2k+ of my own money. You probably don't need a Mac either. If you need a new computer for development, consider a Linux PC.
If you enjoyed this post, check out some of my other posts on my blog
Top comments (124)
I've never understood how software devs can have so much trouble with windows. I've used it for years and have never had more than a few minutes of downtime. And even that was my fault for letting it do the updates instead of waiting.
I build my own pcs, meaning I choose the right parts for my build. Can easily build a more powerful pc for half the cost of a Mac. Plus Microsoft owns github and VSC so I'm getting first class support.
I never understood why software developers ever might need windows unless they develop windows apps.
I never understood why software developers ever might need mac unless they develop macos apps.
This case is quite simple: mac is best choice for those who want development convenience of Linux, but afraid that Linux UI is too complex for them :)
P.S. Mac is not ideal for development, but much more convenient than windows.
The Linux UI (I assume you meant the GUI, not the command line) really feels antiquated and even ugly and it's kind of a pain to look at (I'm typing this on a Linux laptop). If I'm going to stare at something all day, I like it to be somewhat pleasant-looking. Still much better than when I started using Linux in 1995, though. :)
I find that some development can be more difficult on the Mac than on Linux for some things because installation is sometimes hacky, like a user-contributed version that's not officially supported. I've had this happen a couple of times in recent months. In one instance I had to give up because I was wasting too much time trying to work around the problems.
I use Mac, Linux and Windows every day, so I find it hard these days to get into a religious war about platforms. Ultimately the choice should be whatever one is most comfortable with.
Not sure about that, I'm using debian buster and with few tweaks it looks really nice.
Also there are distros like PopOS, Manjaro and others who look awesome.
Well, that's the thing with Linux: so many distros. I wish I had time to mess around installing distros all day, but I don't. And you never know if your favourite distro won't just disappear (as in no further updates to whatever niceties it might bring) unless it's one of the big-ish ones.
I'm using Linux Mint at the moment. (Well, not this VERY moment - right now I'm using a Windows 10 VM hosted on Azure).
Well that's the thing with cars: so many makes. I wish I had time to try out makes and models all month, but I don't. And you never know if your favourite make won't go bankrupt. That's why I don't own a car. Oh wait...
There are so many thing Linux can be accused of. But having a choice is just not one of them.
Crappy analogy, and you completely missed my point. sigh
I think Pantheon UI is quite polished (Elementary OS), but still, it is more geared towards keyboard users; but then who the hell need Desktop Environment anyways. CLI these days is quite powerful enough.
Unless you need a JavaScript/CSS/HTML powered web browser.
I've heard of that one but didn't get a chance to check it out.
It is certainly interesting that, even though GUIs are more powerful and flexible than ever, there's been a move toward the command line for a lot of development-related tasks. "ugh... Don't feel like finding it in the GUI, I'll just type the command". Even when developing .NET Core stuff in Visual Studio, I'll often type commands to get some things done.
Anyway, I use all three platforms and have likes and dislikes for each one of them.
The Linux GUI is ugly and antiquated -- what? Aside from the fact that there isn't a single Linux desktop environment, I'm using Fedora with the default, most popular DE, GNOME, and it looks perfectly modern to me. It has all the modern visual design elements that Windows and MacOS have and does all the fancy window docking tricks (in fact, some Linux DEs have supported that far longer). And it's very easily customized with themes and icon packs, frankly much more easily than Windows. Ubuntu, the other big distro, uses a customized DE that I believe is based on GNOME as well. But if GNOME isn't to your tastes, they have direct support for another half dozen DEs out of the box as "flavors" of Ubuntu, several of which as also quite modern.
Used Ubuntu but found it "heavy" and switched to Kali it's been 3yrs now .
I haven't tried Kali. I'm using Fedora mostly because all the systems I use professionally are Red Hat, and I often find myself needing to test something at home and/or advise the IT folks about how to install or configure something.
I thought Kali was mostly only used for security testing or similar gray-hat work. I didn't know many people used it as a daily driver.
Linux GUI, antiquated? Are you still on GNOME2, KDE4, LXDE or some niche text mode tiling GUI? I mean even XFCE becomes modern with a dock and a theme. Throw in a global menu and it's perfect Mac refugee territory.
I never understood why software developers ever might need to choose a Linux distro based on the look and feel when they can install basically what they want in any distro.
Just kidding :D
I've tried to work with some geographic projecttion libraries (gdal, pyproj) on windows a few years ago. Finally, after a couple of days trying to put all the pieces together (specific versions of multiple libraries to work with python on windows) I was sucessfull!, ok well, I work for a week or two in my project, everythings fine.. suddenly my hard drive fails... ok. So I have had got to go through that install hell of packages..., so I've tried on debian (that time, today I have Arch) apt install that stuff.. that other.. about 2 hours to get everything working fine. And from that time (2012/13 may be) i'm running all my code projects on GNU/linux.
This year I'm start thinking to buy a mac, just because, but certainly the price is a big no no to me.
Cheers.
A hard drive failure almost certainly has nothing to do with windows. Nor would the compatability of specific python libraries.
But if we're talking about compatability, windows is the largest desktop computer operating system (77%). So if libraries aren't considering windows dev environments, I believe that's a failure of those libraries.
Windows popularity has nothing to do with quality nor convenience for development. Any serious non-windows specific development constantly requires adjusting environment to make it closer to unix-like one. Even microsoft realized this and added WSL. So, unless there are very strong reasons to use windows, using unix-like system is just plain more convenient. And a pleasant bonus for Linux users - very simple and convenient maintenance and upgrade of system and all applications.
I'm someone who slaps Linux on any PC that I want to development on. I have developed a bit on Windows and while its totally workable, and makes sense for some context, Windows just gets in the way in others.
From dumb stuff like the 260 character limit (which was finally removed), and the speed and "unique-ness" of its terminal powershell, to more serious problems like tooling not working or compatible with Windows out of the box such as Docker Desktop, which doesn't work on all versions of Windows.
The last thing I want when I'm trying to be productive on a project is the operating system telling me what I can and can't do, or finding something doesn't work out of the box simply because it wasn't built with Windows in mind.
PS. I don't use a mac because I'm too cheap to pay for their premium products when Linux is free.
I don't know what extra support you get with github on windows, the underlying core of github, gitlab and similar services is the git version control system, which was initially created to help multiple developers contribute to Linux.
Some to think of it, I've had a WAAAY easier time with git on Linux! And C++...
Depends on context. In the earlier days of nodeJS based web development, Windows was a total nightmare to work on. It was working around those problems that got me into Linux. I suspect it's why a lot of frontend web devs started using Macs; but I never understood the appeal.
Honestly, for me, Windows updates (I've had to nuke my two Windows PCs about 3 times each because of updates), having to juggle with WSL to get many things done and not being able to just install all the things in CMD are enough for me to not want to go anywhere until Windows, until I'm playing Steam games. Another thing that messes with me in Windows is that my Asus ZenBook is crippled in Windows due to the Specter/Meltdown fix.
I can't understand why people flock to Macs, but Linux/Mac are better for most people, since most programming happens for Linus/Unix platforms. I use Linux because I can just use it! I can do just about everything from the terminal (outside of the actual coding; I'm a VIM noob, for sure), but I guess it also offers me some consistency between my desktop and laptop, since I use a Pixelbook for my laptop.
Git ain't GitHub.
That's a fact that I usually overlook. In terms of my experience it is, but then, to many other people Samsung IS Android, so... I'm definitely going to be more careful about this, from now on! I never even thought to check, before now, if other VCSs were supported by GitHub!
I like MacOS, it makes me more productive I feel. I like my 5k Retina Screen (iMac) and my other 4k retina screen, and the USBC monitor running full HD off the side. I like I can pick the whole thing up with one arm and carry it about. I do also build iOS apps on occasion. If I were to guess, I'd bet the thing paid for itself in productivity gains in < 1 year. But that is me, might be very different for others.
But those are hardware related reasons. You can buy similar hardware and run Linux or Windows on it.
"I like MacOS, it makes me more productive"
I am more productive on a Mac than on Linux or Windows. I've used them all. You might not be more productive on a Mac, but I am.
Why would I want to save money on the tool that I use to make my living? Why would I compromise any moment that I might be able to concentrate and do my job to the best of my ability. It's like telling a guitarist that there is one "best" guitar - of course there isn't the same best guitar for every musician. But there is quality, I've owned dozens of PCs and they always break or fail. I've only once had a Mac fail and it's because I broke it. A decade old machine is sitting next to me - still running smooth and quiet. Can't remember the last time I had a system crash. Literally years ago.
Someone will be fast at VIM, someone else prefers VS Code. For me a Mac is the ideal tool for my job, it works the way I want it to. It really does just work for me and it's super reliable.
I dunno, maybe you chose cheap nasty PCs? My main desktop is a HP Z400 workstation, bought secondhand for very little money, it's from 2009, that's 11 years old! - and it still works great as my main desktop machine, running Linux.
No, as I pointed out, computers are my primary tool, I always try to get the best kit.
It would be fair to say that I spent only about a 6 months running Linux stuff as a desktop, and like many use Linux day in/day out on servers and VMs.
I'm happy Linux works for you, it doesn't work for me as well as a Mac. I ran a software company with a Windows based product for 15 years, that was a lot of PCs. Can't say how grateful I have been that the last 10 have been on a Mac.
I use old Macs for music production but i wouldn't touch any newer than around 2012, after that, they have become less upgradeable, throwaway items.
Anyone who doesn't have a high income is going to have a good answer to that.
Count me in. I am so productive with my Mac.
And also I need it to build ios apps (don't tell me to hackintosh please)
As I understand it, you CAN build iOS apps in Linux with an iOS device... I haven't learned Swift to the point where I can, but I understand it's technically possible and NOT a hackintosh, lol!
Hmmm. Not sure about that ✌️Can you link me to a source?
medium.com/flutter-community/devel...
That article covers how to do so in Flutter, it looks like you're probably WAAAY better off just using a Mac, however.
Can you really pick up your iMac with one hand tho?
Yes! :) Can't say I carry it that often, mostly GameJams or something like that. I have a MacBook as well, but it gets very little use. Since Covid -> no coffee shops for my MacBook!
I've been using apple products for 14 years and I've justified it by building iOS apps and (at the time) using software that was much better on those platforms. Also, apple (at the time) was setting important tech and design trends which felt great to be a part of. Now it's getting harder and harder to justify an apple purchase.
Is there anything you wish your linux setup had that your macbook at work has?
I honestly don't miss OSX when using Linux. Just about all the tools I would use day-to-day on OSX can be replicated on Linux. I will say I miss Alfred and I wish Sketch would release a Linux client (I would gladly pay them for it). For now, though I make do with Figma and an Alfred alternative.
P.S: And Figma is quickly catching up to Sketch in my eyes.
I actually Bootcamped my late 2012 Macbook Pro to run Linux because I felt like I was trying to be agile with a set of massive training wheels that can't be removed! Does MacOS have a middle click, yet? That, and having to drag and drop all the time seriously bothered me!
Then, I also dropped an SSD into the thing which OSX "killed" to the point where it was only showing up in disk tests, then proceeded to use it as a boot drive until about a year ago; now it's just another drive.
I guarantee there are nice OS-related things that Mac has now, but I can't believe it'll ever be enough to get me away Linux...
WSL would be the only reason I would be ok with 'developing on Windows'. I haven't touched this in a while, but my experiences were
With WSL I would basically build a Linux environment with Windows GUI. Since I am perfectly fine with the Gnome3 in Ubuntu, I have next to no reason to switch back.
For me Windows is a nice gaming platform.
The only way I'll use Git on Windows is Git Bash. I hear some of the GUIs are nice, though, like SourceTree, SmartGit, and GitKraken. It sounds like maybe you got to experience TortoiseGit, which I hate. Tortoise was usable for the old CVS style VCSs, but it's too clunky for a modern one.
I think it was tortoise. But that is not really the point. I would have to install Git Bash, whereas on Linux I already have a bash (zsh, fsh, etc.)
I suppose windows is the best when developing Desktop apps for Windows. For Web, mobile devices etc. I prefer to chose a *nix system.
Currently I am working on a Mac (and not really loving it).
Git Bash is part of the regular Git install. It's basically the equivalent of installing Git on a Linux system that doesn't have it. And often to get zsh or fish, you'd have to install those, so it's pretty similar. It's based on MinTTY, and is actually pretty good. It requires some configuration, but I have to do that for every *nix shell I touch, too.
I don't disagree. I'll take Linux all day every day for development over Windows. And it's telling that the best way to do a lot of development on Windows is to steal good ideas from *nix. I'm just saying it's not all bad.
You said that sarcastically, right?
Because if you have ever customized linux you would know that you can even set a nuke to fire on any keys you want, LoL
😂 😂 😂
From frontend engineer point of view:
Linux cons:
1) Sketch (Yes, you can use Zeplin, but it's horrible), though many people prefer Figma these days
2) Sometimes you need a Photoshop to make some image manipulation (PS with Wine works horribly)
3) 4K-5K resolution scaling doesn't work well in Ubuntu (other linux flavors doesn't either i bet)
4) Obviously no integration with apple ecosystem (continuity, etc)
5) No proper backup system, like Time Machine out of the box
6) Font support not that great if compare to MacOS
7) No software like Alfred, iTerm
The list can go further, but i would stop there. There's only single advantage on running linux, is docker virtualization that eats less ram, but if you got at least 16GB ram on Mac, then you'd be fine. And Mac "just works" out of the box, linux doesn't, you have to chime with settings before you can work. Updates are painful on linux.
Mac downside is only the price, but you have to pay for the comfort. It's like you can ride on an old car, but it would be a terrible experience, you will face issues with breakdowns, etc. Mac is like a reliable car, you buy it, then you just can drive it, without any setup.
P.S. i was linux fan, when i couldn't afford a Mac 10 years ago. That's the main reason people hate apple products, if you can't afford it - you scold it. Mac machine justifies every penny invested in it, honestly.
I have a macbook and a thinkpad running Linux, here are my thoughts:
1) No idea, don't develop front end
2) GIMP works pretty well for light editing, has a learning curve though
3) I think KDE would scale quite nice with it though. In fact macOS looks weird on my 1080p monitor for some reason.
4) Not using other apple products besides my macbook, but KDE connect works well enough for me on android
5) There's timeshift though
6) Works well enough in KDE
7) I have Alfred3, and the only benefit I see from it is maybe the scripting capabilities, which you can often manually write scripts to automate tasks anyways. iTerm is just a terminal, there's so much great terminals for Linux such as kitty or st.
Though I do have to point out I'm just a university student so I have more spare time tinkering around. For people working I guess there's no value in manually setting up your own environment.
You got the point. Its all about the time.
This is a common argument - that you can be up and running quickly on a Mac. I think it's wrong, because it's mostly familiarity. It'd take me as long or longer to get my MBP up from a factory reset as it would my desktop.
I hadn't installed Linux myself in over a decade (though I use it regularly for work), but I recently installed Fedora on an older PC after replacing a failing SSD. It was faster and easier than any of the numerous Windows installs I have done, and those weren't hard. It's all automatic now. So are updates. No pain at all. It's all handled for you by the Software manager, though you're also welcome to use
yum
orrpm
if you prefer the hands-on approach.I could buy a new Mac every month and donate the "old" one, no problem. I still think the Mac premium is a little too high. I'm not saying they don't deserve a premium, but getting a Mac with upgraded CPU, RAM, and storage is absurdly overpriced and has been for nearly 20 years.
I'll give you the scaling thing, though. Maybe another DE than GNOME does it better, but scaling options are rather limited. Windows 10 does it much better, which is quite sad. It looks fine, but only having 100% or 200% scaling as options is ridiculous in 2020.
There is also zoom con. For some reason mycoworkers, all on linux, constantly have video/audio/screenshare issues. Every day someone else has issue ;)
... to the point that i started calling it "you are linuxed".
Meh! I couldn't wait to get rid of my MacBook Pro! And, aside from the potato webcam and 1280x800 resolution, its hardware was pretty good! It was a late 2012, so the keyboard was still great, once I got used to the slightly smaller keys than I was used to. I just couldn't use it quickly! It was drag and drop for this, that, and the other! Kill the SSD! (Well, not really, I was able to use it as a boot disk for about 6 years after that in a Windows machine) Middle Click? You're lucky to have a right click! Oh you wanted to be able to snap your windows to the sides of the screen for multitasking? Lol!
So, I'd ended up dropping $300 on an Asus Transformer Book that replaced it AND the iPad (until I had to use OSX or iOS specific software) and never looked back until the MacBook (the one with the Core M) came around, with pretty much the exact sort of hardware config I wanted... until it pointed me towards the Zenbook (with Core M3) because of the keyboard... and I saved like $500 in the process, but not because that was the primary driver of my purchase.
I've only used Time Machine once, and the experience was pretty bad. The UI is confusing and badly built.
Lol...don't even know what to say about this hahahaha
Yes, Macs are expensive, but it really depends on what it's worth to you...
I have all three, MacBook Pro, a beast PC running Windows and another pretty nice machine running Linux all of which I've tried developing with.
As a generalist developer, I'm always finding myself going back to my MacBook Pro. For me personally, macOS is just a hard OS to compete when it comes to large scale development. Not only everything just "works", it also supports the best tools in the industry such as the Adobe suite, Sketch, etc...
If money is the problem, then it really depends on your point of view. You have to ask yourself "does this machine make enough income for it to be worth purchasing?", for me it does. I paid $3,000 for my MacBook Pro, but over time I used it to make over $200,000 in 2.5 years.
Basically it depends what you need to do. I have all three - Linux for general use, Mac for music production and Windows for games.
Yup. I'm using my Mac for general use (programming, music production), Windows for gaming and procrastination and Linux as a local staging server 🙃
I switched to Mac after an experience in college using a poor quality windows laptop and had used it until just recently. For work I have a separate laptop, Mac as well (company issued)
Things have changed considerably in quality since 2013 when I had these windows issues 😄 so I wanted something new (and arguably needed more mental separation from work and home environments) and got a surface laptop 2. I haven't had any problems with it so far other than, imo, minor adjustments. I thought it would be the closest to Mac, in that it has Microsoft hardware and software...fingers crossed it lasts me just as long!
Having WSL helped me when I first bought it, but I decided to dive in and make windows my primary development environment after seeing how poorly VSC on WSL behaved; powershell is also pretty cool, and I'm fighting the instinct to default to bash and attempt scripts in powershell 😃
WSL is a nice step forward, but is still lacking. They only recently announced planned support for Linux GUI-based apps. NVIDIA doesn't allow virtualization on consumer graphics cards (i.e. GTX/RTX series), so that's a barrier to a lot of things.
When I can basically have Windows on a Linux kernel (or dual kernels, however that would work), I'll be happy with Windows for development. It's a perfectly nice user environment, and I use it on my HTPC/Gaming rig, but it's often a hassle for getting real work done.
Side note, always go Anaconda for Python. Solves a lot of problems up front, even on Windows. Also try the PyCharm IDE from JetBrains. I also hear the Python plugin for VS Code is good, and it has support from Anaconda now.
I have been on the fence about this for a while too and I also chose to mostly go with a Linux machine. I am starting to develop apps using Flutter for Android/iOS but just can't justify the cost of the hardware and being locked into the ecosystem. I eventually settled on a combination of real iOS devices and a cloud build solution and this is working out quite well so far.
Have you tried the Windows Subsystem for Linux? Seems to work really well as a combination of being able to use windows tools and games while still get access to Linux software and tools.
I've used WSL, but it annoys me... but that might just be because I'm too much of a Linux noob... or because Windows does weird things with Ubuntu in WSL that aren't done Ubuntu... Kinda like Debian in ChromeOS, except Debian in ChromeOS usually feels better to me... once you get used to translating things from Debian/Ubuntu to Debian in ChromeOS, anyway... neither's a real substitute for the real thing...
I think it is probably a bit of both lol I am no Linux expert but WSL1 always seemed a little quirky in places.
I have just spent 6 months using Linux as my main OS on all my computers to help understand it better. I needed to switch back to Windows to test some stuff and was able to bring all my dot files and configs straight into WSL2, and set up my environment basically the same as main native set up.
I don't know if this is because WSL 2 is basically a lightweight Linux VM (compared to WSL1 basically being Wine in reverse) but I was shocked at how well it worked.
Some comments may only be visible to logged-in visitors. Sign in to view all comments.