3.1. Choosing an Operating System
Table of Contents
Key Criteria When Choosing an Operating System
For backend development, you can build almost anything on any modern operating system: Windows, macOS, or Linux. However, they feel very different, and some will make your life much easier.
Think of this chapter as a practical buyer’s guide. You will learn:
- What really matters when choosing an OS for backend work
- The strengths and weaknesses of Windows, macOS, and Linux
- Concrete recommendations for different situations
You do not need to become an OS expert now. You only need to choose a good environment to learn and work in, and understand why that choice makes sense.
What Matters for Backend Development
When you pick an OS as a backend developer, you mainly care about:
- Command line and scripting support
Most backend tools are built to work well in a terminal. You want: - A powerful shell
- Easy scripting
- Access to common tools like
ssh,curl,git,python,docker - Package management
You will install: - Programming languages (Python, Node.js, etc.)
- Databases (PostgreSQL, Redis)
- Tools (Git, Docker, editors)
A good OS gives you:
- A package manager that can install most of these with one command
- Similarity to servers
Production servers that run your code are almost always: - Some Linux distribution (Ubuntu, Debian, CentOS, etc.)
If your development OS is similar to your server OS, then:
- Fewer “it works on my machine” problems
- Easier debugging of production-like issues
- Simpler deployment and scripting
- Tool support
Your OS should support: - Docker
- Databases like PostgreSQL and Redis
- Your chosen editor or IDE (VS Code, PyCharm, etc.)
- Stability and performance
- Few random crashes
- Good memory and CPU usage
- Can run several heavy tools at once (IDE, database, browser, Docker)
- Your comfort and hardware
- What OS are you already familiar with?
- What does your laptop support well (drivers, battery life)?
- Do you need specific software that only runs on one OS?
Keep these criteria in mind as we compare options.
Overview of the Main Options
Here is a quick comparison of the three main choices.
| OS | Main strength | Main weakness | Typical servers? |
|---|---|---|---|
| Linux | Closest to production servers, very flexible | Hardware / driver setup can be confusing for beginners | Yes |
| macOS | Unix-based, friendly UI, great dev tools | Expensive hardware, only on Apple devices | No (but very similar to Linux) |
| Windows | Widely used, supports many desktop apps | Historically weaker Unix-like environment, more friction | No |
For backend development, Linux and macOS are usually the best fit. Windows is workable, especially with extra tools, but often adds complexity.
Linux for Backend Development
Linux is the most common OS on servers, and many backend developers also use Linux on their own machines.
Why Linux Is Great for Backend Work
- Same family as your servers
Most production servers run a Linux distribution. When you use Linux locally: - Commands like
ls,cp,mv,grep,chmodbehave the same - You can install the same packages as on the server (for example
apt install postgresql) - Shell scripts you write locally often work unchanged on servers
- Powerful command line and tools
Linux gives you: - Bash or other shells (zsh, fish)
- Standard Unix tools (
ssh,curl,wget,sed,awk,tar, etc.) - Easy automation with shell scripts
- Package managers
Different Linux distributions use different package managers, for example:
| Distribution | Package manager | Example command |
|--------------|-----------------|------------------------------------------|
| Ubuntu | apt | sudo apt install python3 |
| Debian | apt | sudo apt install postgresql |
| Fedora | dnf | sudo dnf install git |
| Arch Linux | pacman | sudo pacman -S docker |
This makes installing development tools very simple.
- Perfect match for backend stack
On Linux, you can easily install: - Python, Node, Go, Java
- PostgreSQL, MySQL, Redis
- Docker and Docker Compose
- Nginx, systemd services, and more
These are exactly the tools you will use for backend development and deployment.
Downsides of Linux
- Hardware and drivers
- Some laptops need extra steps for Wi-Fi, graphics, or sleep features.
- Brand new hardware sometimes has fewer drivers available at first.
- Software availability
- Some commercial desktop software is missing or limited on Linux, for example Microsoft Office, Adobe suite.
- Some games or proprietary tools might not work natively.
- Learning curve
- If you come from Windows or macOS, the Linux desktop can feel unfamiliar.
- Understanding distributions and their differences can be confusing at the start.
Which Linux Distribution Should You Choose?
For beginners, pick a stable and popular distribution. Three good beginner-friendly options:
| Distribution | Why choose it |
|---|---|
| Ubuntu (LTS) | Very popular, lots of tutorials, good hardware support |
| Linux Mint | Based on Ubuntu, user-friendly desktop, familiar feel |
| Pop!\_OS | Polished, good for developers, based on Ubuntu |
To install software on Ubuntu, for example:
sudo apt update
sudo apt install git python3 python3-venv docker.ioThese simple commands are one reason Linux is so popular with backend developers.
When Linux Is the Best Choice
Linux is a great fit if:
- You want your environment to match production servers
- You like working in the terminal
- You do not depend heavily on Windows or mac-only desktop software
- You are willing to learn a new system a bit more deeply
If you have an older laptop and want to turn it into a focused development machine, a light Linux distribution can be an excellent choice.
macOS for Backend Development
macOS combines a Unix-like core with a polished desktop and runs only on Apple hardware.
Why macOS Works Well for Backend Work
- Unix-based system
macOS is built on top of a Unix-like system, so you get: - A familiar shell (
bashorzsh) - Standard Unix tools
- A terminal environment that feels close to Linux
This makes it easy to follow Linux-oriented tutorials and run similar commands.
- Good hardware and drivers by default
Since Apple controls both hardware and software:
- Drivers and hardware support are usually well integrated
- Sleep, sound, Wi-Fi, display scaling work out of the box
You spend less time dealing with hardware issues.
- Great development tool support
On macOS you can easily install:
- VS Code, JetBrains IDEs, Docker Desktop
- Package manager
Homebrew, which fills the gap for command line tools
Example with Homebrew:
# After installing Homebrew
brew install python postgresql redis- Close enough to Linux
While not identical to Linux, macOS is close in many ways:
- Many commands and tools are the same or very similar
- Many scripts can be shared with little change
Downsides of macOS
- Cost and hardware lock-in
- You must buy Apple hardware, which is often more expensive than similar non-Apple laptops.
- You cannot install macOS on most non-Apple hardware legally.
- Some differences from Linux
For example:
- Some system commands or locations differ (
/usr/local, differentsedbehavior in some cases). - Package management is external (Homebrew) rather than built in, so you must install it first.
- Limited upgrade / customization
- Many modern Macs have non-upgradeable RAM or storage.
- You often must choose your hardware specs carefully when buying.
When macOS Is the Best Choice
macOS is a strong option if:
- You already own a MacBook or Mac desktop
- You prefer a polished UI but still want a strong Unix-like terminal
- You want minimal hardware setup effort
- Your budget allows Apple devices
For many professional backend developers, a MacBook running Docker, Python, and a text editor is a very common setup.
Windows for Backend Development
Windows is very common on personal and office computers. Historically, it was less friendly for Unix-style backend development, but this is changing.
Traditional Challenges with Windows
- Different environment from Linux servers
- Command line tools are different, like
dirinstead ofls. - Scripting is often done with PowerShell or batch files, which are different from bash.
- Tooling differences
- Some tools assume a Unix-like environment and may not work the same way on Windows.
- pathlib and file paths differ (
C:\Users\Namevs/home/name), which can create subtle issues. - Docker and virtualization
- Docker runs under extra layers on Windows, which can use more resources and add complexity.
Modern Solutions on Windows
To make Windows more suitable for backend development, many developers use:
- Windows Subsystem for Linux (WSL)
WSL lets you run a Linux environment inside Windows without a full virtual machine.
With WSL you can:
- Install a Linux distribution, such as Ubuntu, from the Microsoft Store
- Use a real Linux terminal and package manager (
apt) - Install and run backend tools and servers in that Linux environment
For example inside WSL (Ubuntu):
sudo apt update
sudo apt install python3 python3-venv postgresqlYou can then access code files stored on Windows or Linux paths.
- Docker Desktop
- Lets you run Docker containers on Windows.
- Can integrate with WSL2 so containers run on a Linux kernel under the hood.
- Good editors
- VS Code works extremely well with WSL and Docker.
- You can edit files from Windows but run code inside WSL.
When Windows Is a Reasonable Choice
Windows might be the right choice if:
- You already use Windows and do not want to change OS immediately
- You rely on Windows-only software for other tasks
- You are comfortable setting up WSL and using a Linux terminal inside Windows
In that case, a practical setup is:
- Windows as the main OS
- WSL2 with Ubuntu for development tools
- VS Code with the “Remote – WSL” extension
This gives you a Linux-like development environment while staying on Windows.
Example Scenarios and Recommendations
Here are some typical situations and matching recommendations.
Scenario 1: You want the most “server-like” environment
- You run code on cloud servers that use Linux
- You want the fewest differences between development and production
Recommendation:
Use Linux on your main machine, for example Ubuntu LTS.
Use the same distribution or a similar one on your servers.
Scenario 2: You already have a MacBook
- You like the UI and it works well for your daily tasks
Recommendation:
Use macOS with:
- Homebrew as package manager
- Docker Desktop for containers
- A good editor like VS Code or PyCharm
This will serve you well throughout your backend learning and beyond.
Scenario 3: You have a Windows laptop and cannot change OS
- You need Windows for other software (work, school, games)
- You want to learn backend development efficiently
Recommendation:
Stay on Windows, but:
- Install WSL2 and a Linux distribution such as Ubuntu.
- Use VS Code with the WSL integration.
- Run databases and servers inside WSL or Docker.
You get a Linux development experience without losing your Windows setup.
Scenario 4: You are buying a new computer mainly for backend work
Ask yourself:
- Do you prefer full control and a free OS, and are you okay with some learning curve?
- Then consider a Linux laptop or installing Linux on an existing machine.
- Do you want a polished system with minimal maintenance and have the budget?
- Then consider a MacBook.
The technical capabilities for backend work are excellent on both. Your choice can mostly be based on budget and personal preference.
Practical Checklist for Your Decision
Use this checklist to pick your OS setup. Answer “Yes” or “No”:
- Do I already have an OS I am comfortable with?
- Am I willing to learn a new OS from scratch?
- Do I need any software that works only on one specific OS?
- Is my main goal to match Linux servers as closely as possible?
- Do I have the budget for a Mac, or do I prefer using free / existing hardware?
Then follow this simple rule:
Rule of thumb for backend OS choice
- If you already own a Mac and like it, use macOS.
- If you are comfortable changing OS or buying a new device and want to be closest to servers, use Linux.
- If you must stay on Windows, use Windows with WSL2 and develop inside the Linux subsystem.
Any of these paths can lead to success. What matters most is that:
- You have a terminal and package manager you are willing to learn
- You can run Python, databases, and Docker
- You can follow along with the course examples without constant OS-related problems
Once you decide, stick with your choice for a while. Consistency will help you learn faster than constantly switching environments.
Views: 10
KAHIBARO