Which operating system is best for you?

Should you use Windows, Linux (Ubuntu) or Mac?

This is one of those questions I see getting asked every couple of days in the Learning to Code Facebook group. And in my experience, which I'll talk about in this blog post, it does matter which OS you use. 

Before I open up about my experiences with these operating systems (OS's) I should give you some background context about me as a developer. 

My History Is With Windows

I grew up with Windows 95 and XP. Windows 7 was OK, Windows Vista was the worst thing to ever happen, Windows 8 was an attempt at being more like Apple and Windows 10 is the successor to all of them. And I've used them all since I was a child. From game development to computer programming and web development... I've done it all with Windows, and I'll never do it again. More to come on this in a bit. 

2 years ago I moved to Ubuntu 16 (Linux). It was the best decision I could have made. 

Everything was good until I started having to use Virtualenvs and Docker. Prior to this, I used Vagrant for my VM's for local development. It was a bit slow, but it worked very nicely. Then the world moved to something better: Docker. And my Windows 10 (Home, not Pro edition) couldn't run it. There were many other problems, which I'll talk about later, but basically I installed Ubuntu 16.04 LTS on my Windows 10 laptop and started web development on there. 2 years ago I moved to Ubuntu 16 (Linux). It was the best decision I could have made. 

Is Ubuntu For You?

To switch to Ubuntu was easy for me. I was already familiar with the command line since all my servers, startups, and just-for-fun projects were already using Ubuntu. But there is a learning curve. It's graphic user interface (GUI) was similar enough to Windows that it didn't feel awkward. The OS is a bit unpolished compared to paid operating systems like MacOS or Windows, but I didn't care about that. I just wanted a fast development computer. It needed to run Docker, SASS, NPM, Node, Python, PHP, MySQL, Postgres, etc. quickly.. and had to be much faster than Windows. And it was! It was at least 200%faster than running Windows 10 on the same hardware. For web development, I couldn't have been happier. Ubuntu turned my old Windows 10 laptop into a race horse. 

But it also has it's drawbacks. I'll talk more about these later in this article, but basically it's not great for media. 

Then I Bought A Macbook Pro

I finally bit the bullet. All my coworkers (except for one) are either using Linux, or more commonly, Macbooks. I wasn't certain if this was what I wanted... the return on investment (ROI) for a laptop that's over 5x more expensive than my typical laptop was very very low. People kept saying "you can't measure the ROI of a Macbook, it just makes you feel better". So I thought, "Hey, why not give it a try? If it's not for me, I'll return it."

Well, I didn't return it! I actually love it. It does 95% of same stuff Ubuntu did for me, plus it handles media. The downside: this laptop is worth more than my car. 

Pros and Cons

Here are the pros and cons of each OS (in my opinion; your experiences may vary). 

Windows

I grew up with it, I was familiar with it, and standard Windows laptops are cheap. I've never had one die on me in less than 3 years. But the downsides for development are: it's slow. Like, very slow, comparatively speaking. And once you start getting into the depths of development and programming, you'll run into pathing issues. And Windows 10 Home (not sure if it's still like this) didn't support Hyper-V, which Docker needed to run. 

Ubuntu

Very fast and very light weight. Your 4gb, 8gb or 16gb of RAM in your computer will go so much further with Ubuntu. But there's a steep learning curve. You don't typically install programs like you do on Windows or Apple computers. There's no .exe, and no .dmg or .app files. Typically you install everything from the terminal application (command line) called Bash. Once you're familiar with that, life gets REALLY easy. Things just work. I've literally never had any major problem with Ubuntu since I've started using the desktop version. At least not when it comes to web development. 

Media is a different story. You can still edit photos and videos, record videos and watch movies. But editing a photo means using a program called Gimp, which is probably the second best graphic design tool, right after Photoshop. And it's incredibly terrible. I'd restart my computer in Windows-mode just to use Photoshop for a 2 minute task. Editing videos was a nightmare. And rendering videos was 50% good and 50% bad (it was fast, but if the settings weren't right the videos turned out quite blurry). I needed something that could do it all: it needed to run like a Linux OS, but handle media like a pro. 

MacOS

For me, there was a big learning curve when I got my Macbook Pro. The keyboard was absolutely tiny, the command button is not a drop-in replacement for the control button, I now have 4 meta keys (options, fn, command, and control). 5 keys if you count shift. That's incredibly annoying, and slow for your fingers to get used to. But the OS is smooth, it looks nice, it runs fairly fast, handles Docker, Node, NPM, PIP, Python and PHP beautifully. And anything it doesn't handle too well (like local databases) I'm just using Docker containers for anyway. So it handles all my coding needs nicely. 

For media... it's by far the best. It records beautifully, it edits 4k video pretty well, and I can open Photoshop in about 3.5 seconds (that's fast!). 

The downside is the cost. This thing cost me more than my current car. If you want half decent programs, you'll need to pay for them. It feels like everything is "a la cart". I needed 2 USB dongles. Both were $25/each.

Here's My Advice

If you need to do more advanced web development and Windows is taking too long, consider dual booting Ubuntu. Then you can flip back and forth and use what you need, when you need it. 

If you're just learning to code HTML, CSS, JavaScript, PHP, or basic Python... stick with what you have. You don't need fancy compilers for any of that. If you're on Windows, stick with it and defer upgrading for a while. 

If you need to code and handle media files like I do (ie. creating coding courses, like my Learn JavaScript course), you can stick with Windows still, or if you have the money then buy a Mac.

I love my new Macbook Pro, but my next computer won't be another Mac — it'll be another Ubuntu computer. For the same price as a this Macbook Pro, I could probably get 2x the hardware in a Ubuntu computer.

And the reason I wouldn't go back to Windows: it's too bloated. It's slow, I'm worried about my privacy with Windows OS, and for the same price as a Surface, I might as well get a stacked Ubuntu laptop or a Macbook.

What's Best For You?

I don't know the answer to this. I'm hoping my experience and this article will help provide some clarity for you. But here's what I did and I'm happy with this decision:

I used Windows for as long as I could. Then I used a Windows/Ubuntu mix for as long as I could. 

But if you need to edit media or graphics in any form, consider a Macbook. It's the best of both worlds. But if you cannot afford a Macbook, then please, don't buy one. It won't make your life better or easier — instead, buy a Windows computer and dual boot Ubuntu. 


This is what's worked well for me over the years. But I also record videos and work on some light graphics. I work with a couple of devs who use their laptops as terminals, and code everything in the cloud. And I also work with designers who absolutely required a Mac. 

Sign up for the newsletter!

Sign up for my free newsletter. No spam, all dev talk and only awesome articles. Opt out at any time, no hard feelings.





About the author

Kalob Taulien

Full stack developer. Entrepreneur and dev teacher. Over 100,00 students world wide.

I started making websites long before CSS had rounded corners, before JavaScript was more popular than oxygen and videos could only be played through Macromedia Flash. 

Today I'm a full stack LAMPP (PHP and Python) developer that enjoys teaching web development and working with startups. 

Connect with me: