Mac vs Windows vs Linux - which OS is best for a programmer? (video, 9m)
In his latest video, Fireship analyzes the choice between three main operating systems: Mac, Windows, and Linux. This decision is fundamental and has a significant impact on programmers. He emphasizes that each of these platforms has its history and specification while also influencing the approach to programming and technology. The author starts by recalling his experiences with each platform. After working on Windows and getting acquainted with technologies like Java, he moved on to the Mac, discovering the pleasures of working with Ruby on Rails. Eventually, the author realized that the true hardcore developers were using Linux, which spurred him to build his own PC with Ubuntu.
Fireship also highlights that Linux, in his definition, is not just an operating system but part of a larger GNU ecosystem. As he outlines his experiences with each OS, he describes the pros and cons of macOS, including its specialized developer tools and UNIX-based architecture. Mac offers diverse tools that are easy to use but comes with high costs and limited upgrade options. On the other hand, Linux provides greater flexibility but demands more technical skills and knowledge.
Next, Fireship turns his attention to Windows, critiquing it for excessive artificial intelligence implementation and attempts to sell products. Despite his reservations, he admits to using several Microsoft tools, including VS Code, GitHub, and the Windows Subsystem for Linux (WSL), which combines the best features of Windows and Linux. This makes Windows an appealing choice, especially due to the flexibility in hardware selection and upgrade possibilities.
In the end, Fireship presents a practical flowchart that guides viewers on how to decide on their operating system. He encourages them to consider their financial preferences, social life, and which type of system best aligns with their programming ambitions. This leads to a humorous conclusion, mentioning TempleOS as an ideal design choice.
At the time of writing this article, Fireship's video has over 1.9 million views and 65,000 likes. The topic of choosing operating systems in the context of programming will always remain relevant, and the video addresses these issues aptly for many future developers.
Toggle timeline summary
-
The impact of choosing an operating system as a programmer.
-
Joining the collective of Windows and Apple.
-
An overview of differences between Mac, Windows, and Linux.
-
Introduction to the speaker's experience with OS systems.
-
Transition to remote work with a MacBook Pro.
-
Adopting Linux after a MacBook issue.
-
Defining Linux and its relation to the GNU system.
-
Current usage of Windows for development with Linux subsystem.
-
Discussion of pros and cons of developing on a Mac.
-
Advantages of macOS being Unix-based.
-
The necessity of learning Linux for better computer skills.
-
Recommendation of Linux for specific applications.
-
Challenges with commercial software on Linux.
-
The complex nature of configuring Linux systems.
-
Initial challenges of developing on Windows.
-
Microsoft's evolution and integration of Linux-like features.
-
Flowchart to help decide which operating system to choose.
Transcription
Mac, Windows, or Linux. That's the single biggest choice you'll ever make if you decide to become a programmer. Not only will you spend tens of thousands of hours with your OS, but it also has a profound impact on your subconscious. By clicking I Agree to the terms and conditions, you are now forever a part of the Windows collective hive mind. When you unbox that sleek new MacBook, you unknowingly just join the cult of Apple. And the only way to break these proprietary shackles is to compile the Linux kernel from scratch to call yourself an open-source freedom fighter, who will be your supreme leader. Jobs, Gates, or Torvalds. In today's video, we'll look at the differences between Mac, Windows, and Linux from the perspective of a software engineer. For more than a decade, I've enjoyed the pleasure and pain of all three of these operating systems, and have realized that FreeBSD is superior to all of them, but I don't want that secret to get out. Many years ago, when I got my first real job, I was assigned a Windows machine, and got introduced to beautiful technologies like Java and Oracle Database. From my cubicle, I used these tools to build crappy websites for a failing Fortune 500 company. It sucked, but luckily through divine intervention, I was fired from that job, and started doing remote work full-time with my brand new MacBook Pro. This bad boy had a dual-core CPU and a full gigabyte of RAM. I traveled around the country from Starbucks to Starbucks, drinking sué lattes while developing Ruby on Rails applications on my MacBook. But eventually I realized that the real hardcore developers were using Linux. As fate would have it, my MacBook Pro stopped working right on schedule exactly two years after I bought it, so that's when I built my first PC from scratch and installed Ubuntu. Around this time, Richard Stallman called it Spyware, so I experimented with a bunch of other distros, but have mostly stuck with Debian. What I'm referring to as Linux is in fact GNU Linux, or as I've recently taken to calling it, GNU Plus Linux. The GNU Plus Linux system. Linux is not an operating system unto itself, but rather another free component of a fully functioning GNU system made useful by the GNU core libs, shell utilities, and vital system components comprising a full OS as defined by POSIX. What I've learned over the years is that there's no perfect OS. Like today, I use Windows, but use the Windows subsystem for Linux for development, and always keep a MacBook Pro along with my ski goggles available for traveling. Now when using three different operating systems, it's important to have an IDE that runs on all of them. And there's nothing better than JetBrains IDEs, the sponsor of today's video. Their legendary family of integrated development environments are used by millions of developers every day, and famous for their sophisticated code completion and integrated tooling. As a web developer, I'm a big fan of WebStorm, which contains everything you'll need for the craziness of JavaScript development, but can now understand and write code even faster thanks to the AI assistant. It's a programming-optimized model that can offer suggestions, describe your code, and write your code while understanding the context of a large project. But most importantly, the IDE is reliable and fun to use. It's got an intuitive minimal interface, but tons of power under the hood, so you don't need to install a bunch of plugins to start being productive. And best of all, you can try out JetBrains IDEs for your favorite programming language with a 30-day free trial. Use the link in the description. But now, let's talk about the pros and cons of developing on a Macintosh. Apple by far makes the best hardware, but to obtain it, you must pay a large tribute, like $1,000 just for a stand. In addition, another major drawback is that you can't upgrade these machines. If you want to add more RAM, storage, or GPUs, the upgrade options are extremely limited. On top of that, that ecosystem is designed to lock you in. If you want to build apps for iOS or the Apple Vision Pro, you'll almost certainly need to own a Mac. And if your hardware ever breaks, you'll find that the components are glued or soldered into place, which means it's impossible to repair without going to the Apple store. And there's been a lot of controversy around the right to repair, but nobody really wants to repair their old MacBook. By the time it breaks, there's going to be some awesome new thing that you'll just have to buy. But more important than the hardware is the software. And one thing that's really nice about macOS is that it's Unix-based. Unix has been around since the 70s and has a really nice file system design that uses forward slashes, and Mac comes with a bunch of good developer tools out of the box, like zShell, Git, Vim, and so on. In addition, you can use package managers like Homebrew to easily install and manage different development tools. The terminal experience on a Mac is nice, and tools in the GUI look really nice, although they can be pretty annoying to use. I'm looking at Ufinder, but most importantly, everything works out of the box with zero configuration. macOS prevents you from going down customization rabbit holes, spending days configuring pointless stuff on your machine instead of writing code that's actually useful. But if you want to get really good at computers, you'll need to learn Linux. On the server, Linux is king. The vast majority of servers running in the cloud powering the world's infrastructure run Linux, and that's because it's free, open source, and reliable. However, very few normies actually use it for their personal computers. Why is that? It has to do with complexity. To use Linux, you first need to choose a family, like Debian, Arch, Red Hat, Gentoo, and many others. Then you have to choose a distro in that family, like under Red Hat, you've got Enterprise Linux, Fedora, CentOS, Rocky Linux, and many others. Then you'll have to choose a desktop environment, like GNOME, KDE, and so on. Then finally, you'll need to open up the terminal, type in a bunch of commands to resolve dependencies, compile things from source, update file permissions, then a few weeks later, you should be good to go. Some distros are designed to be extremely user-friendly, like the Debian-based Linux Mint, but if you really want to be an Apex Alpha programmer, you'll likely want to go with something in the Arch family, allowing you to legally say, I use Arch, by the way. Not only is Linux free, but it offers you the most flexibility for customizing your machine. And in turn, you're likely to learn a lot more about how computers actually work when you use it. And if you really want to get into something like penetration, distros like Kali Linux are highly optimized for that activity. In addition, if you're deploying applications on Linux servers, you'll be much more familiar with the Linux ecosystem when you use it every day. And there's all kinds of amazing developer tools you can use on Linux that may have a higher learning curve initially, but can dramatically improve your productivity. But there are quite a few drawbacks. The support for commercial software like Adobe products and a large number of games, and drivers for hardware, is just non-existent. Linux only has a single-digit market share of personal computers, and many developers just choose to ignore it altogether. But Linux is not the only open-source kernel. If you're really brave, you can use other kernels like OpenBSD, Minix, or Redox, but then you'll really be on your own. And ultimately, when you have to configure a lot of things by hand, it makes the entire system more brittle, which means you'll eventually break something stupid, and end up spending two days debugging your bash profile, which is one of the leading causes of a neckbeard. Linux can be painful at times, but you need that pain to grow. You don't know real pain, though, until you've tried to develop on Windows. At first, you're going to need to charge your mom's credit card $199 for Windows Pro. Then when you install it, it's going to try and sell you a bunch of crapware, like Microsoft Office and OneDrive. Even if you decline, you'll still need to log into a Microsoft account, so it can spy on you in perpetuity, in order to resell you that same crapware every day for the rest of your life. When you boot it up, you'll find artificial intelligence everywhere. You'll need a co-pilot just to manage all your co-pilots. Now, if you're coming from Unix, you'll notice some weird things, like it uses backslashes for file paths, and every day or two, the system will shut down and update, to make sure you have the latest spyware installed. When it comes to open-source software development, Microsoft has some skeletons in the closet. In the 90s, it had a strategy to embrace open standards, extend them in incompatible ways, in order to extinguish them later on. And Balmer once called Linux a cancer. How much do you think this advanced operating environment is worth? But nowadays, things are different. Even though I hate Microsoft, I use Microsoft VS Code to write my Microsoft TypeScript code, then push it to Microsoft GitHub, and install my Microsoft NPM packages, then deploy it to Microsoft Azure from my Microsoft Windows machine. At some point, Microsoft realized the way to win over developers was to become less like Windows and more like Linux. And the killer feature for that is the Windows subsystem for Linux, which allows you to run a full Linux distro inside of Windows, not just an emulated one, which gives you the best of both worlds. You can use all your favorite Linux terminal apps, and even run Linux GUI apps like VLC and GIMP. In the past, I used to dual-boot Windows and Linux, but WSL has made that unnecessary. It's not perfect, and there are some random issues that come up. And WSL can be painfully slow at times, but it's a pretty awesome feature overall. And one huge benefit of Windows over macOS is that it's not kept in a walled garden. Windows is proprietary, but it can be installed on any hardware, which means you can easily upgrade your RAM, CPU, GPU, etc. But now that brings us to the final question, which tribe should you join? Well, I've created a handy flowchart to help you choose. The first question is, are you rich? If you answered yes, then the answer is pretty easy, macOS. But if you answered no, the next question is, do you have a girlfriend and or a life? If you answered yes, then Windows is the optimal choice. Then your final question should be, do I want an operating system that's designed by God himself? If you answered no, then Linux is your best choice. But if you answered yes, then the obvious choice would be TempleOS.