Practical Linux, Windows Server and cloud guides for IT pros.

Switching to Windows as a Developer: Make It Feel Like Home

You’ve been handed a Windows machine — or bought one — and you’re a developer who lives in Terminal, uses brew, and thinks cmd.exe is a joke. Here’s the thing: Windows 11 + WSL2 is a genuinely good development environment. You just need to know where to find your tools. TL;DR — Switching to Windows…

Filed under

Published

Written by

Last updated

Windows 11 developer workspace showing WSL2, Windows Terminal and VS Code setup.

You’ve been handed a Windows machine — or bought one — and you’re a developer who lives in Terminal, uses brew, and thinks cmd.exe is a joke. Here’s the thing: Windows 11 + WSL2 is a genuinely good development environment. You just need to know where to find your tools.

TL;DR — Switching to Windows as a Developer

  • The Mental Model — WSL2 = real Linux kernel; your code runs there, Windows is just the UI
  • WSL2 — Install, configure, and understand the file system split
  • Windows Terminal — Your new iTerm2/Alacritty; configure it once and forget it
  • winget — Your new brew; same intent, different syntax
  • Git — Same tool, two quirks: line endings and credential manager
  • VS Code — Identical to Mac/Linux; one extension connects it to WSL2
  • What Windows Does Better — Hot take: a few genuine wins over macOS

Just arrived on Windows? Start with The Mental Model Shift — it is the one concept that makes everything else click.

TaskmacOSLinuxWindows + WSL2
Terminal appiTerm2 / TerminalGNOME Terminal / AlacrittyWindows Terminal
System package managerbrewapt / pacmanwinget
Linux CLI toolsbrew install Xapt install Xapt install X (WSL2)
Default shellzshbash / zshzsh or bash in WSL2
Run a dev servernpm startnpm startnpm start (WSL2)
Open VS Codecode .code .code . (WSL2)
SSH keys~/.ssh/~/.ssh/~/.ssh/ (WSL2)
Hosts file/etc/hosts/etc/hosts/etc/hosts (WSL2) or C:\Windows\System32\drivers\etc\hosts
Mac, Linux, and Windows+WSL2 tool equivalents reference table

1. The Mental Model Shift

The key insight: WSL2 runs a real Linux kernel in a lightweight VM. This is not a compatibility layer — that was WSL1. When you run node, python, or docker inside WSL2, you are running them on Linux.

Windows is the display layer. You interact with it for GUI apps (VS Code, browser, Slack) but your code lives and runs in Linux. The file system has two sides:

  • Linux side: /home/username/ — fast I/O, use this for all projects
  • Windows side: /mnt/c/Users/... — accessible from WSL2 but slow I/O — avoid for project files

Once this model is clear, the question for every tool becomes: “Does this run on the Windows side or the Linux side?” For dev tools: Linux side. For GUI apps: Windows side.

2. WSL2: Your New Terminal Home

Install WSL2 from PowerShell or Windows Terminal (run as admin):

wsl --install

This installs the Virtual Machine Platform, WSL2, and Ubuntu by default. After the required restart, open Ubuntu from the Start menu and set your username and password — these are separate from your Windows account.

Once inside, update immediately:

sudo apt update && sudo apt upgrade -y

If you use Oh My Zsh on your Mac or Linux machine, install it now — WSL2 is Ubuntu, so the exact same process applies:

The single most important performance rule: keep all project files in ~/ inside WSL2 — not in /mnt/c/. File I/O on the Windows-side mount is significantly slower. Your Linux home is accessible from Windows Explorer at \\wsl$\Ubuntu\home\username if you ever need to drag files in.

3. Windows Terminal: Your New iTerm2

Windows Terminal is your iTerm2 or Alacritty replacement. Install it via winget:

winget install Microsoft.WindowsTerminal

It detects your WSL2 distros automatically — Ubuntu (WSL2) appears as a profile out of the box. Set it as the default profile, and set the starting directory to //wsl$/Ubuntu/home/username so every new tab opens in your Linux home rather than C:\.

Cascadia Code ships with Windows Terminal and works well for powerline prompts. One difference from iTerm2: there are no native split panes — use tmux inside WSL2 if you need them, or use VS Code’s integrated terminal instead. Settings are stored as JSON, so you can back them up the same way you would dotfiles.

4. winget: Your New brew

The mental model is identical to brew: you tell it what you want, it installs and manages it. The syntax differs slightly:

Key difference: winget installs Windows apps. For Linux CLI tools — git inside WSL2, node inside WSL2, any language runtime — use apt from inside your WSL2 terminal, exactly as you would on any Ubuntu machine.

Rule of thumb: GUI apps (Slack, Chrome, VS Code) via winget from PowerShell. CLI dev tools via apt from inside WSL2.

5. Git: Same Tool, Two Quirks

Git works identically inside WSL2. Two things to be aware of:

Line endings. Windows uses CRLF, Linux uses LF. If your code runs on a Linux server, set this inside WSL2:

git config --global core.autocrlf input

This means: accept whatever line endings come in, but never convert LF to CRLF on checkout.

Credentials. On macOS, Git uses the keychain automatically. Inside WSL2, set up SSH keys — the exact same process as on Mac or Linux:

Everything else — branching, rebasing, stashing, hooks — works exactly as you’d expect.

6. VS Code: Identical — Just Add One Extension

If you use VS Code on Mac or Linux, your transition here is: install it, sign in, done. Settings Sync will pull all your settings, extensions, themes, and keybindings.

One additional step: install the Remote WSL extension (ms-vscode-remote.remote-wsl). Then open projects from your WSL2 terminal:

VS Code opens connected to Linux. The integrated terminal runs bash or zsh. Linters, formatters, and language servers run in Linux context. There is no practical difference from working on macOS.

One thing that does not transfer: keyboard shortcuts on Windows use Ctrl instead of Cmd. Two minutes with the keybindings editor and you’re back to muscle memory.

7. What Windows Actually Does Better

This is the hot take section. If you’ve made it this far and your setup is working, here’s what you’ll likely notice over the next few weeks:

  • Hardware variety and price. The Mac range is narrow and premium. Windows machines at the same spec cost significantly less, and there is genuine choice in form factor.
  • Gaming. If you game at all, this is not a competition.
  • WSL2 memory limits are configurable. macOS VMs for Docker have hard memory limits. WSL2 lets you set [wsl2] memory=16GB in .wslconfig — it uses what it needs and releases it back to Windows.
  • Windows Terminal is genuinely excellent. It caught up to iTerm2 faster than expected.
  • GPU access from WSL2. CUDA and GPU-accelerated ML workloads work inside WSL2 via WDDM — something macOS does not support at all for NVIDIA.
Elsewhere On TurboGeek:  Automation in 2026: Build Workflows That Run Themselves With AI and Scripts

Related: Windows 11 Developer Setup: The Complete Guide From a Fresh Install — the setup sequence that gets you here from a clean machine.

Related: Is Your Windows Dev Environment a Mess? Here’s How to Fix It — if your existing setup has gaps, this article diagnoses and fixes them.

Frequently Asked Questions

Do I have to use WSL2 or can I install dev tools directly on Windows?

You can, but WSL2 removes almost every compatibility headache. If you are used to a Unix environment, stay in Unix — WSL2 gives you that without leaving Windows.

Will my dotfiles work inside WSL2?

Yes. WSL2 is Ubuntu (or your distro of choice). Your .bashrc, .zshrc, SSH config, and git config all work as-is. Clone your dotfiles repo into ~/ and you’re home.

Is Docker Desktop still needed on Windows?

For most developers, yes — Docker Desktop manages the WSL2 integration and gives you the GUI. Alternatively, install Docker Engine directly inside WSL2 without Docker Desktop, which some developers prefer for performance and to avoid the licence requirements.

Leave a Reply

Your email address will not be published. Required fields are marked *

Find more on the site

Keep reading by topic.

If this post was useful, the fastest way to keep going is to pick the topic you work in most often.

Want another useful post?

Browse the latest posts, or support TurboGeek if the site saves you time regularly.

Translate »