In this post, we tackle a question that troubles many an aspiring programmer: Do programmers use Mac or PC?
The question does have a short, straightforward answer. Here it goes: Some programmers use Mac, while others favor PCs running Microsoft Windows. Still others prefer to use one of the many Linux distributions. Last but not least, some use some combination of the options above.
Are you satisfied with this answer? I wouldn’t be. As it often happens, the short answer turns out to be too short. Despite being technically correct, it doesn’t tell the whole story. I bet there are more things you want to know about this Mac vs. PC thing. For instance, where does this trope come from? Why does the perception that developers disproportionately favor Macs exist? Are Apple devices really the best option for software developers? Where does Linux fit in?
These are the kinds of questions we’ll answer in this post. By the end of it, you’ll understand the role that your choice of platform actually plays in your software development career.
Let’s dig in.
Why Do So Many Programmers Use Mac?
Why is there this perception that many software developers use Macs? Well, it’s because many developers do prefer Apple computers over other alternatives. The inevitable next question, then, is this: Why do so many software engineers prefer Macs?
Macs come with a reliable Unix-like command-line environment while also offering a pleasant user experience featuring a number of high-quality applications. In other words, Apple machines often provide the best of both worlds, allowing for a more “spartan” and advanced experience when you need it while also catering to the needs of end users.
The Importance of the Command Line
A command-line environment allows you to interact with a computer by typing commands instead of clicking on graphical elements. This was the primary way people interacted with their computers before GUIs (graphical user interfaces) were popularized. However, command-line environments are still popular among programmers, system administrators, and other IT professionals to this day, given the benefits they can offer.
Is having an excellent command-line environment really that important, though? The answer might depend on the type of programming you do. One might argue that a C# programmer creating desktop apps for Windows doesn’t type that many commands, and I could concede.
For many other programmers, however, the command line is crucial, and, historically, Windows hasn’t been super friendly to those needs. It’s generally accepted that Windows’s command prompt falls short when compared to solutions available on other platforms, especially Bash, which is the default shell used in most Linux distributions and also in macOS X.
When you take into account the fact that Linux runs on most app and web servers around the world, adopting a command-line environment that is compatible with it becomes even more advantageous.
Applications and UX
The second half of the Mac success dyad is, as mentioned, its pleasant and elegant UI and its wide availability of high-quality applications. Why was that such a game-changer?
First, don’t forget that developers are also end users, and they too enjoy using polished, user-friendly, great-looking, and efficient applications. Who wouldn’t?
We also can’t forget about history.
The popularization of Apple products—especially MacBooks—among developers coincided with an era when web development started to become increasingly sophisticated and to require more specialized tools. The macOs X environment was ready to meet the demand with text editors, package managers, and many more applications that didn’t really have rivals among its competitors.
So, more and more developers started adopting these machines due to the—accurate—perception that they offered the best environment for development. That generates an interesting virtuous circle: The platform attracts developers, who then create more tools to make their lives easier. That, in turn, makes the platform more attractive, which brings even more developers, and the self-fulfilling prophecy ensues.
What About the Hardware?
Apple differs from most other OS makers in the sense that they make their own hardware. (For a number of years, this has been true of Microsoft as well, but historically it wasn’t the case.)
So, even though one of the main reasons developers give for preferring Macs is the combination of its command-line environment and great apps and UI, we couldn’t fail to mention another often-lauded characteristic of Apple devices: their build quality.
Many developers who own Apple devices, particularly MacBooks, will commend not only their form-factor and elegance but also their durability. Even though some users consider that that’s been changing recently, for many years, MacBooks were synonymous with elegant design and robustness.
Is Windows Bad for Programming?
Is Windows a bad choice if you want to write software? That might have been the case in the past. Today, anyone who says that is most likely trolling.
How is that the case? For starters, things improved on the command-line front. Since the arrival of PowerShell, developers working on Windows aren’t restricted to the limitations of the command prompt. And Windows 10 even allows you to run Linux inside it, which obviously will enable you to use Bash. By using the Windows Subsystem for Linux, you can also develop using frameworks or other tools that typically don’t work quite so well on Windows.
Additionally, the offer of great native solutions for development on Windows has dramatically increased since the heyday of the MacBook, including modern, extensible text editors and package managers.
Last but not least, the advent of app containerization has made your particular choice of OS less relevant.
The Case for Linux
Before wrapping up with our final verdict, we couldn’t fail to mention Linux. OSs based on the Linux kernel (a.k.a Linux distributions) are solid choices for your development machine. Linux is free, open-source, and highly customizable. Sure, it might take some getting used to, and it takes more work, in general, to keep things tidy (a tremendous first distribution is Ubuntu, which many people consider the most beginner-friendly of Linux distros).
But since Linux is free, you don’t have a lot to lose by trying it out, except maybe some time. Many Linux distributions—Ubuntu is one of them—can be run without the need for installation, which makes trying them out virtually risk-free.
Do Programmers Use Mac or PC? Time for the Verdict
Finally, it’s time for the verdict. Why do so many developers love Macs? Do you need one to become a programmer? What is the best platform for development?
As to the first question, I think we’ve already answered it in sufficient detail. In short, many programmers use Macs because they are a great platform, period. Are they the only good platform, though? That takes us to the second question, whose answer is a resounding “No!”
Linux distributions are excellent choices for a programmer, and so is Windows, at least nowadays. The answer to what the “best” platform ultimately boils down to two things.
How Do I Choose What’s Best for Me?
The first factor is the type of development being done. For instance, iOS development requires a device running MacOS X, so the choice here is not really a choice. For web development, Macs tend to be an excellent choice, but so is Linux. Depending on the tech stack, so is Windows. Speaking of which, Windows is the obvious path for developing Windows applications and services, and it’s a solid choice for enterprise software in general.
The second thing to take into account is your personal preference. If you like Macs—if you’re attracted by their aesthetic, the offer of applications, and the overall Apple ecosystem—then go for it! (Unfortunately, we have to add a caveat here. In many regions of the world, Apple devices are prohibitively expensive, so affordability is another thing that has to be factored in.)
If you want to become a programmer but don’t own a Mac—even if it’s because you don’t like Apple products or because you can’t afford them—that’s not a problem! You can become a programmer on any platform. The computer you already have and an internet connection (which you obviously already have) are all you need to get started on your journey.
This post was written by Carlos Schults. Carlos is a .NET software developer with experience in both desktop and web development, and he’s now trying his hand at mobile. He has a passion for writing clean and concise code, and he’s interested in practices that help you improve app health, such as code review, automated testing, and continuous build.