WSL for Development — When and Why

I spent a long time going back and forth between native Windows and WSL before settling on a clear rule: if it touches a server or a terminal, use WSL. If it talks to Windows hardware, stay native.

The Decision

Use CaseEnvironmentWhy
Web dev (Django, Flask, Node)WSLMatches production. Dependencies just work.
Data Science / MLWSLInstalling TensorFlow on native Windows is pain. WSL is not.
DevOps, scripting, automationWSLgrep, sed, ssh, cron — the full Unix toolkit
Desktop GUI apps (Tkinter, Qt)Windows NativeYou’re building for Windows, test on Windows
Arduino / roboticsWindows NativeWindows-only drivers and upload tools

The Setup

The magic combo is WSL 2 + Ubuntu + VS Code with Remote-WSL extension. You get a full Linux filesystem, native Docker, all your terminal tools — and VS Code just opens files from the WSL side as if they were local.

From a WSL terminal, code . opens the current directory in VS Code. That’s it. No config, no friction.

See Also