Are Macs Essential for Devs?

David Thai
6 min readFeb 3, 2019

--

TL;DR: Not necessarily but there may be good reasons to prefer them

Mac or PC? They’re both just tools. [Photo by Todd Quackenbush on Unsplash]

If you’re thinking of joining a coding bootcamp it’s likely you’ll eventually encounter recommendations that you use a MacBook on the course. And you might wonder why — I know I did. Well, I’ve come to the conclusion that there are good reasons. Let me explain…

Prior to beginning the Makers course, I might only have used the command line for one-off administrative tasks. But after just the first week of the PreCourse, I became far more comfortable with it, having used it to set up my development environment. Now I know by heart the commands I need to operate the command line and interact with git. I even got the hang of vim!

And I’m not using a Mac. I’ve done all this on a Windows 10 PC with WSL (Windows Subsystem for Linux). I already had WSL set up so I was able to dive right in. Otherwise, it would have been a quick and easy thing to install via the Microsoft Store in Windows. I have not had any problems. We shall see how it goes.

Studying some Computer Science at university, I’ve experienced the more traditional approach to becoming a developer. However, as interesting as the science is, I’ve always considered myself less of a scientist and more of an engineer — specifically, a software engineer.

As an engineer, I am agnostic when it comes to technology. I think that trying to argue that Macs are better than PCs (“better” for what, in what way?)— or vice-versa — is somewhat missing the point. Mac or PC? macOS, Windows, or Linux? All are merely tools in your toolbox. The specific implementation of a technology is less important than using the right tool for the job.

We should avoid confusing the tool with the objective.

Developers like Macs(?)

There are some good reasons for the popularity of Macs amongst developers

Officially, Makers recommends that students use Macs. They wouldn’t do that without good reason. Indeed, if you need one, they’ll even loan you a free MacBook when you’re onsite.

From what I can tell, about half of my February 2019 cohort (including myself) have expressed interest in borrowing a MacBook.

Personally, my main reasons for wanting to use a MacBook:

  • To become as familiar with macOS as I am with Windows. I want to be comfortable using anything — including Linux, since macOS is also Unix-based
  • It’ll be faster than my own Windows 10 laptop, which is over 10 years old
  • A MacBook is going to be lighter than my old laptop

However, I think there are also other practical reasons for using a MacBook:

  • Easier to support if everyone is on the same or similar platform, without potentially huge variations in system configurations
  • macOS. Your development environment may include tools that either originated in or are compatible with, Unix. macOS is Unix-based. Perhaps not all of them will have native Windows versions, and even if they do they may require workarounds
  • Stability. I believe that Apple’s closed/managed ecosystem is something to legitimately frown upon. However, a positive of this is that because Apple manufactures the hardware and has full control of specifications, they can fine-tune for best performance and battery life

By now I may be starting to sound like an Apple groupie. However, as I said, I aim to be agnostic. I’m just going with whatever happens to be the best tool I have available. When I’m gaming, I’m staying with my PC. As a gamer on a limited budget, I would rather allocate my funds to things other than the Apple-Tax.

You might like to take a look at a post I came across back when I was preparing to apply to a coding bootcamp. It’s a coding bootcamp student’s before-and-after perspective on the use of Macs: Mac or PC? A Coding Newbie’s Perspective.

Developers don’t necessarily need Macs…

Are you Thor, the God of Hammers? [Photo by Adam Sherez on Unsplash]

What if one day you didn’t have your MacBook anymore? Could you get the job done in Windows instead? Would that even work? I would like to think that as a developer I could answer OK, Sure, Yes.

A particular scene in Thor: Ragnarok comes to mind. If you’ve seen it, you know what I’m talking about. Thor, now without his hammer, receives some guidance from father Odin. Odin reminds Thor that the hammer helped Thor to focus his power, but that it was never the source of his strength.

And so it is with your choice of set-up.

It’s not your tool preference that makes you a developer. You are a developer due to your creativity, skills and knowledge. The machine is just the way you channel that to make stuff.

Right now, I don’t have access to a Mac so I’m using Bash on my Windows PC, courtesy of Ubuntu which can easily be installed from the Microsoft Store.

So far so good.

My view is that a macOS computer is somewhere between a Windows computer and a Linux computer. My thinking is thus: Windows being more common makes it more familiar and user-friendly to an average consumer than a macOS, which would be more esoteric. But compared to Linux it’s macOS that’s the more user-friendly option.

These days, you could argue that anything you can do in Windows you can do just as well in Linux. However, I started in Windows and I like it here. Before WSL I just used a Linux virtual machine if I needed anything Linux-specific so I won’t be talking specifically about computers running Linux — most of what I know about Bash comes from WSL.

WSL, which makes all this possible, is only going to get better in the future builds of Windows 10. I’m looking forward to seeing improvements in interoperability. Currently, I’m on Windows 10 version 1803, and WSL includes features like WSLENV that shares environment variables between Windows and WSL. There’s wslpath — which handles translating between WSL and Windows paths — but it doesn’t appear to be fully implemented yet: e.g. running atom someTextFile in WSL doesn’t work properly.

I have Atom installed in Windows and I can see that alongside .cmd files for Windows, there are also .sh shell scripts for Linux — hopefully, some future update fixes it and it’ll work as we expect it to. In the meantime, I can just open the application and file in Windows as normal — although saving files in Windows wipes file permissions and I have to manually reset them in WSL using chmod.

When it comes to coding, obviously it depends on what kind of development you’re doing. A situation where it’s far preferable to use a Mac with macOS is if you’re developing for iOS or macOS. Although it’s possible on Windows, it might mean a bunch of extra setup and configuration before you can actually get down to work. A Mac may be ready for that work almost straight out of the box.

As long as it does the job, I would recommend using whatever you prefer, providing you’re also comfortable with any extra setup or configuration required to make it work. At this point in time, that is what it may come down to if instead of a Mac you were using a WSL Bash shell on Windows 10.

For a case in point, let me tell you about a problem I experienced with my WSL/Bash development environment, and how I fixed it: My rspec problem: When your code is correct but RuboCop says no

The point is being able to get the job done whether you choose to use Windows, macOS, or Linux.

…But you may want one for coding bootcamp

If you’re doing a coding bootcamp and trying to learn a lot over a relatively short space of time, you probably don’t want to be wasting time troubleshooting or fiddling with configuration. Therefore, you probably want to be using a Mac.

However tech-savvy you are, everyone can run into technical issues, perhaps technical issues that require help to fix. In that situation, it may help you get back up and running sooner because your issue is more likely to be known about, and the fix is already tried and tested.

This is my first post here so I’m keen to know what you think. Was it good? Was it bad? Where can improve?

--

--

David Thai

Code is my raison d’être. Looking for work as an entry-level/junior developer. Alumni/Fellow of Makers.tech