Gone are the days when developers needed to dual-boot Linux or settle for a subpar development experience on Windows. With modern tools and the right setup, Windows can be transformed into a robust development platform that rivals any Unix-based system.
This guide will walk you through creating a professional-grade development environment on Windows, combining the best of both worlds: Windows' user-friendly interface and Linux's powerful development tools.
What You'll Learn
- Setting up WSL2 for a native Linux experience
- Installing and configuring development tools
- Managing multiple programming language versions
- Creating an efficient coding environment
- Running containerized applications seamlessly
Prerequisites
- Windows 10/11 (Pro)
- At least 8GB RAM (16GB recommended)
- 50GB free disk space
- Administrator access
1. Windows Subsystem for Linux (WSL2)
WSL2 provides a full Linux kernel and seamless Windows-Linux integration. It's the foundation of our development environment.
Why WSL2?
- Native Linux system calls
- Full system call compatibility
- Excellent filesystem performance
- Seamless integration with Windows tools
Installation Steps
Just open a new PowerShell or Windows Command Prompt in administrator mode and enter the wsl install command.
# Install WSL
wsl --install
The --install command performs the following actions:
- Enables the optional WSL and Virtual Machine Platform components
- Downloads and installs the latest Linux kernel
- Sets WSL2 as the default
- Downloads and installs the Ubuntu Linux distribution (default)
Note: You will need to restart your machine during this installation process.
Once the process of installing your Linux distribution with WSL is complete, open the distribution using the Start menu.
You will be asked to create a Username and Password for your Linux distribution. This username and password is specific to each separate Linux distribution that you install and has no bearing on your Windows username.
2. Terminal Setup
Now that we have Linux running inside Windows we can configure our distribution and terminal to our liking.
We can install Oh My Zsh, change the prompt, install plugins, etc.
For a detailed guide on terminal customization, check out my previous post: My Terminal Setup for 2025 🚀
3. Development Languages with ASDF
A development environment needs... development tools, right?
You'll probably want to install runtimes or compilers. For example, I want to install NodeJs.
ASDF provides a single tool for managing multiple language runtime versions.
Benefits of ASDF
- Single tool for all languages
- Project-specific runtime versions
- Easy version switching
- Plugin-based architecture
Setup Process
# Download asdf
git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.15.0
# Add the following to ~/.zshrc
. "$HOME/.asdf/asdf.sh"
# Optional: Completions are configured by either a ZSH Framework asdf plugin
# or by adding the following to your .zshrc:
fpath=(${ASDF_DIR}/completions $fpath)
autoload -Uz compinit && compinit
Installing NodeJS becomes straightforward:
# Add NodeJS plugin
asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git
# Install desired version
asdf install nodejs latest
# Or specify version
asdf install nodejs 22.14.0
My favorite part is that we can set the node version globally or locally. For example we could have latest globally but set specific projects to the LTS version.
# Set global version
asdf global nodejs latest
# Configure project-specific version
asdf local nodejs 22.14.0
Unlike nvm, asdf extends beyond Node.js, supporting Elixir, Erlang, Ruby through official plugins, and Python, Java through community contributions.
4. Visual Studio Code
_Photo by Mohammad Rahmani in unsplash_
VSCode delivers exceptional development experience through WSL integration.
Key Features to Configure
- Remote WSL Development
- Essential Extensions
- Settings Sync
- Integrated Terminal
Installation and Setup
- Install the VSCode App (For Windows, not Linux) from the official site
- Install WSL Extension Pack
That's it! Projects in your Linux distribution open directly in VSCode:
# From project directory
vscode .
Check out my previous post: My Favorite VSCode Extensions for Modern Development
5. Docker Desktop Integration
Docker Desktop with WSL2 backend offers native container performance.
Why Docker Desktop?
- Native WSL2 integration
- Kubernetes support
- GUI for container management
- Resource optimization
Setup Instructions
- Download and Install Docker Desktop for Windows from Official Site
- Enable WSL Integration during installation
- Restart your system
- Verify installation:
docker --version
6. Extras
DeepSeek R1
DeepSeek's R1 model emerges as a powerful competitor to OpenAI's leading models. Let's integrate it using Ollama:
# Install Ollama
curl -fsSL https://ollama.com/install.sh | sh
# Verify installation
ollama -v
# Run R1 model
ollama run deepseek-r1
Explore all R1 versions on Ollama Official Site
For a graphical interface, OpenWebUI integrates seamlessly through Docker:
docker run -d -p --network=host \
-v open-webui:/app/backend/data \
-e OLLAMA_BASE_URL=http://127.0.0.1:11434 \
--name open-webui \
--restart always \
ghcr.io/open-webui/open-webui:main
If everything works well, we should be able to access the interface from http://localhost:8080
VSCode Integration
We just search and install the Continue extension from the marketplace
As we already have Ollama installed, we just need to select it as Provider, choose DeepSeek as model and that's it
Note: If the extension does not detect the selected DeepSeek model you can use Autodetect
You will now be able to interact with DeepSeek from the chat interface
Why Local AI Tools?
Development in 2025 isn't just about coding - it's about leveraging AI effectively. Running models locally offers:
- No API costs
- Full privacy
- Offline capability
- Lower latency
Curious about DeepSeek's potential? Read my full analysis: DeepSeek R1 Will Change the World: Advanced AI Accessible to Everyone
Conclusion
With this setup, you'll have a development environment that combines Windows' compatibility with Linux's development power. The key is choosing the right tools and configuring them properly.
Remember: A well-configured development environment is an investment in your productivity. Take the time to customize it to your needs.
What's Next?
- Fine-tune your terminal configuration
- Set up language-specific tools
- Configure cloud development environments
- Explore advanced WSL features