← Blog

Tại sao tôi khuyên dev dùng MacBook thay vì Windows — sau 8 năm code trên cả hai

macOS là Unix. Server bạn deploy là Linux. Sự đồng bộ giữa máy local và server là lý do chính dev chọn Mac — không phải Apple aesthetic. Đây là 6 lý do thực dụng.

Tôi đã code 4 năm trên Windows, 4 năm trên macOS. Cả hai đều có thể làm được công việc. Nhưng câu trả lời cho “anh khuyên junior dev nên mua máy nào?” với tôi đã ổn định: MacBook, gần như không có ngoại lệ.

Lý do không phải Apple đẹp. Không phải fanboy. Là 6 lý do thực dụng dev sau khi làm việc với cả Windows + Linux server thật sẽ tự hiểu — và bài này dành cho dev junior đang cân nhắc, hoặc senior đang cân nhắc đổi.

1. macOS là Unix. Server của bạn cũng là Unix.

Đây là lý do số 1, và là lý do tự đã thuyết phục được tôi.

Production server của 95% project là Linux (Ubuntu, Debian, CentOS, Alpine). Khi bạn ssh vào server, bạn gõ:

ls -la
ps aux | grep nginx
tail -f /var/log/app.log
chmod 755 deploy.sh
find . -name "*.log" -mtime +7 -delete

Trên macOS, bạn gõ y nguyên những lệnh đó. Cùng output, cùng flag, cùng pipe behavior. macOS có nhân Darwin (BSD-based Unix) — cùng family với Linux. Bash, Zsh, các Unix utility (grep, awk, sed, find, curl, ssh, rsync) đều native.

Trên Windows, bạn cần một trong 3 layer:

  • WSL (Windows Subsystem for Linux): chạy Linux thật bên trong Windows. Hoạt động được, nhưng có gotcha về filesystem (/mnt/c/... chậm hơn ~/...), về network forwarding, về Docker integration.
  • Git Bash / Cygwin: emulate Unix bằng Win32. Một số lệnh thiếu, một số behavior khác.
  • PowerShell: hoàn toàn khác paradigm — object-oriented thay vì text streams. Code/script sang Linux không tái sử dụng được.

Khi bạn debug production lúc 2h sáng trên server Ubuntu, mỗi giây tâm trí phải dịch “lệnh trên máy mình → lệnh trên server” là một giây bạn có thể fail. Mac → server: zero translation. Windows → server: luôn có translation, dù WSL đã giảm 80%.

2. Docker chạy native trên Linux. Mac gần native. Windows phải ảo hoá kép.

Docker là chuẩn hiện nay cho dev environment. Docker chạy trên Linux kernel.

  • Linux (server): Docker chạy thẳng trên kernel host. 0 overhead.
  • macOS: Docker Desktop chạy 1 lớp VM nhẹ (LinuxKit/Virtualization.framework trên Apple Silicon). Có overhead nhưng tích hợp deep — file mount, network, GPU đều smooth.
  • Windows: Docker Desktop dùng Hyper-V hoặc WSL2 backend → bạn đang chạy Linux VM bên trong Windows, rồi container bên trong Linux VM đó. 2 lớp ảo hoá.

Hệ quả thực tế trên Windows tôi đã gặp:

  • Bind mount source code từ C:\projects\app vào container chậm hơn Mac/Linux 5–10x do filesystem layer (9P cho WSL2, hoặc CIFS).
  • Docker Desktop trên Windows ăn 4–8GB RAM cho VM ngầm. MacBook M-series ăn ~1.5GB cho cùng workload.
  • Container restart khi sleep/wake laptop → Windows thường rớt network bridge, phải wsl --shutdown rồi restart Docker.

8 tháng làm dự án Laravel + MySQL + Redis + Mailhog (5 container) trên Windows = ngày ngày chờ docker-compose up ~45 giây. Cùng project chuyển sang Mac M2: ~12 giây.

3. Đồng nhất với CI / production = ít bug “chỉ chạy trên máy tôi”

Workflow dev hiện đại:

laptop dev → push code → CI runner (Linux) → deploy → production (Linux)

3 trên 4 môi trường là Linux. Nếu laptop là Mac → 3.5/4 môi trường Unix-family. Nếu laptop là Windows → 3/4 + 1 môi trường khác họ.

Bug typical “chỉ chạy trên máy tôi” hay xuất hiện ở:

  • File path: Windows \ vs Linux /. Code Node.js không dùng path.join() → Windows pass, Linux fail.
  • Line endings: Windows CRLF, Linux LF. Git bị config lệch → script .sh lên server không chạy (/bin/bash^M: bad interpreter).
  • File case: Windows case-insensitive, Linux case-sensitive. Import ./Header thay vì ./header → local pass, prod 404.
  • Env vars: Windows %VAR%, Linux $VAR. Script setup khác nhau.

Mac (Unix) chia sẻ phần lớn quirks với Linux → lúc dev đã catch được hầu hết bug này. Windows → chuyển môi trường mới thấy.

4. Package manager + dev tooling chuyên dụng cho Mac

Trong 8 năm dev, đa số tool tôi dùng có “Mac-first” experience:

  • Homebrew (brew install postgres): package manager cho dev. Cài Postgres, Redis, MySQL, Node, Python — đều 1 dòng. Windows tương đương là Chocolatey/Scoop, hoạt động, nhưng community + tool coverage nhỏ hơn nhiều.
  • iTerm2 + Alacritty + Warp: terminal emulator chất lượng. Windows Terminal đã rất tiến bộ, nhưng iTerm2 vẫn dẫn đầu về features (split panes, profiles, search history, integration với shell).
  • TablePlus, Postico, Sequel Ace: GUI cho database. Windows có DBeaver (cross-platform, ổn) nhưng các tool Mac-native cảm giác light + responsive hơn.
  • Proxyman, Charles: HTTP proxy debug. Cả 2 đều có Windows version, nhưng UX trên Mac mượt hơn.
  • Apple Silicon optimized: Node, Python, Rust, Go, Java đều có native ARM64 build. Build time nhanh hơn 30–50% so với Intel laptop cùng giá.

Đây không phải tool độc quyền Mac — nhưng ecosystem Mac dày hơn. Khi gặp vấn đề, Stack Overflow, GitHub issue, blog tutorial mặc định Mac.

5. Apple Silicon — perf/watt ratio không có đối thủ trong 2026

Từ 2020 (M1) đến 2026 (M4 Max), Apple Silicon đã định nghĩa lại “laptop developer”.

Numbers from my own benchmark (cùng project — Next.js + 12 microservice qua Docker Compose):

MáyRAMBuild time next buildRAM idlePin 100% → 20%
Dell XPS 15 (Intel i7-12700H)32GB87s6.2GB4h
MacBook Pro M2 (2022)16GB41s4.1GB9h
MacBook Pro M3 Max (2024)36GB22s3.8GB11h

Build time gấp đôi trên Mac. Pin gấp 2.5 lần. RAM idle thấp hơn → ít swap → ít thermal throttle.

Đỉnh cao: tôi viết bài blog này tại quán café, MacBook M2 đã unplugged 4 tiếng, vẫn còn 67% pin. Cùng task trên XPS: đã cắm sạc từ phút thứ 90.

6. Trải nghiệm “just works” cho non-OS việc

Đây là phần khó cân đo nhưng quan trọng:

  • Sleep / wake: Mac mở nắp → 0.5s usable. Windows: 3–10s, đôi khi mất WiFi, đôi khi audio không kêu.
  • External monitor: Mac plug HDMI → tự nhận, tự sắp xếp. Windows: lúc nhận, lúc không, đôi khi monitor secondary set thành primary, drag windows về vẫn ở monitor cũ.
  • AirDrop: gửi file giữa máy + iPhone trong 2 click. Windows tương đương: email gửi cho chính mình, hoặc Discord, hoặc USB cable.
  • Touchpad: MacBook trackpad là chuẩn 8 năm liền. Windows laptop trackpad có cái tốt (Surface, ThinkPad), đa số khác — chấp nhận được.

Mỗi “just works” = vài phút mỗi ngày. Cộng dồn 1 năm = vài tiếng đồng hồ. Trong career 10 năm = vài tuần lao động ròng.

Khi nào dev nên chọn Windows?

Để fair, tôi liệt kê các trường hợp Windows đúng hơn:

1. Bạn dev game

Unity, Unreal Engine, Steam testing → Windows ecosystem mạnh hơn nhiều. Gaming hardware (GPU, controller, VR) cũng compatibility tốt hơn.

2. Bạn dev .NET / Visual Studio (full IDE)

VS Code chạy mọi nơi, nhưng Visual Studio (full) chỉ Windows native + Mac Preview giới hạn. Nếu bạn làm legacy ASP.NET Web Forms, MFC, WPF → Windows thực dụng hơn.

3. Ngân sách hạn chế

MacBook M-series mới nhất 30 triệu ($1200). Một laptop Windows gaming-grade chip Intel/AMD + GPU tương đương performance cho dev workload có thể chỉ 18–22 triệu. Nếu ngân sách quan trọng hơn ergonomics → Windows + WSL2 là lựa chọn hợp lý, không phải lựa chọn tệ.

4. Bạn cần touchscreen / 2-in-1

Surface, Lenovo Yoga, HP Spectre — Mac không có. Nếu workflow của bạn dùng pen + touch (designer hybrid hay note-taking nhiều) → Windows thắng.

Reality check: nếu bạn đang dùng Windows + WSL2 và không khó chịu

Đừng vì bài này mà đổi. Sự thật là WSL2 đã thu hẹp khoảng cách 80%. Nếu bạn:

  • Đã quen Windows
  • Workflow dev của bạn đã bao gồm WSL2 + Docker Desktop + VS Code Remote
  • Bạn không khó chịu rõ rệt

→ Mac chỉ là “improvement”, không phải “transformation”. Đợi đến lúc thay laptop tự nhiên thì hãy cân nhắc.

Nhưng nếu bạn đang cân nhắc lần đầu mua laptop dev, hoặc đang khó chịu với Windows behavior — tôi khuyên Mac. Cụ thể: MacBook Air M3 16GB/512GB (~28 triệu, $1100) cho student/junior, hoặc MacBook Pro M3/M4 36GB+ cho senior workload nặng.

Lời cuối

Sự khác biệt giữa Mac và Windows cho dev không phải “Mac đẹp hơn” — là “Mac giống server hơn”. Server Linux. macOS Unix. Windows = paradigm khác. Đây là argument practical, không phải tribal.

Tôi không khuyên bỏ Windows nếu bạn đang dùng và happy. Nhưng nếu hỏi tôi “khuyên junior dev mua máy nào để học backend / DevOps / cloud trong 5 năm tới?” — câu trả lời ngắn vẫn là MacBook. Lý do duy nhất: ít thứ phải học hai lần (một cho local, một cho server).

8 năm code đã dạy tôi rằng: tool nào ít friction nhất với production environment → tool đó thắng dài hạn. Mac là tool đó cho dev backend trong 2026.

Nguồn tham khảo

Các con số benchmark + kiến trúc tôi nhắc trong bài có thể cross-check qua:

Benchmark Next.js + Docker trong bảng tôi tự đo trên 3 máy mình từng dùng (Dell XPS 15 cá nhân, MacBook Pro M2 work, MacBook Pro M3 Max work hiện tại). Số có thể khác máy bạn — nhưng tỷ lệ tương đối giữa Intel laptop và Apple Silicon thường giữ.