Part 3: The Developer Toolkit - WSL2, Terminal & Productivity

Set up a professional-grade development environment on Windows. WSL2, Docker Desktop, VS Code configuration, terminal customization, and productivity automation.

Part 3: The Developer Toolkit - WSL2, Terminal & Productivity

← Back to Master Index


1. Why a Proper Developer Toolkit Matters

In 2026, the difference between a junior and senior engineer often comes down to tooling efficiency. A well-configured development environment can save 2-3 hours per week, which compounds to months of productivity over a career. This guide will help you set up a professional-grade toolkit that scales with your skills.


2. WSL2 (Windows Subsystem for Linux 2)

What is WSL2?

WSL2 is a virtualization platform that runs a real Linux kernel on Windows 10/11. It provides a native Linux environment without the overhead of traditional virtual machines.

Installation Steps

  1. Enable WSL2 via PowerShell (Admin):
wsl --install
wsl --set-default-version 2
  1. Install a Linux Distribution:

    • Ubuntu 22.04 LTS (Recommended for beginners)
    • Debian (Lightweight)
    • Kali Linux (For security work)
  2. Initial Setup:

# Update packages
sudo apt update && sudo apt upgrade -y

# Install essential tools
sudo apt install curl git vim nano htop jq build-essential -y

# Set up SSH keys
mkdir -p ~/.ssh
chmod 700 ~/.ssh

WSL2 Best Practices

PracticeBenefit
Use WSL2 for Linux-native toolsDocker, Redis, PostgreSQL
Keep Windows for IDE/UIVS Code, browser debugging
Use wsl --shutdown when doneFree up memory
Mount Windows drives via /mnt/c/Access project files

3. Terminal Customization

Windows Terminal Setup

  1. Install Windows Terminal:
winget install Microsoft.WindowsTerminal
  1. Install Oh My Zsh (in WSL2):
sudo apt install zsh -y
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
  1. Essential Zsh Plugins:
# Install plugins
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-autosuggestions.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

# Add to ~/.zshrc
plugins=(git zsh-syntax-highlighting zsh-autosuggestions)

Essential Terminal Tools

ToolPurposeInstall Command
tmuxTerminal multiplexersudo apt install tmux
htopProcess monitorsudo apt install htop
fzfFuzzy findersudo apt install fzf
ripgrepFast grep alternativesudo apt install ripgrep
batCat with syntax highlightingsudo apt install bat
exaModern ls alternativesudo snap install exa

Tmux Configuration

# ~/.tmux.conf
set -g mouse on
set -g history-limit 10000
bind r source-file ~/.tmux.conf \; display-message "Config reloaded"

4. Docker Desktop Setup

Installation

  1. Download Docker Desktop for Windows
  2. Enable WSL2 backend:
# In Docker Desktop Settings → Resources → WSL Integration
# Enable integration with your WSL2 distro

Essential Docker Commands

# Basic operations
docker ps                    # List running containers
docker images                # List images
docker build -t app .        # Build from Dockerfile
docker run -d -p 3000:3000 app  # Run with port mapping

# Useful shortcuts
docker exec -it container_name bash  # Enter running container
docker logs container_name           # View logs
docker-compose up -d                 # Start services

Docker Best Practices

PracticeReason
Use .dockerignoreReduce image size
Multi-stage buildsSmaller production images
Use official base imagesSecurity updates
Tag images properlyVersion control

5. VS Code Configuration

Essential Extensions

ExtensionPurpose
PythonPython development
PylanceIntelliSense for Python
Bracket Pair ColorizerVisual bracket matching
GitLensEnhanced Git integration
DockerDocker file support
GitHub CopilotAI pair programming
Error LensInline error highlighting
Auto Rename TagHTML/XML tag renaming
PrettierCode formatting
Git HistoryVisual commit history

VS Code Settings (settings.json)

{
    "python.defaultInterpreterPath": "/usr/bin/python3",
    "editor.formatOnSave": true,
    "editor.defaultFormatter": "esbenp.prettier-vscode",
    "git.autofetch": true,
    "git.confirmSync": false,
    "terminal.integrated.shell.linux": "/bin/zsh",
    "files.autoSave": "afterDelay",
    "files.autoSaveDelay": 1000
}

Remote Development

Use Remote - WSL extension to develop directly in WSL2 from Windows VS Code.


6. Development Environment Architecture

Windows 11 (Host OS)
├── WSL2 Ubuntu 22.04 (Development Environment)
│   ├── Python 3.11+
│   ├── Node.js 20+
│   ├── Docker Engine
│   ├── Redis
│   ├── PostgreSQL
│   └── VS Code Server
└── Windows Apps
    ├── VS Code (UI)
    ├── Browser (Chrome/Firefox)
    └── Communication (Slack, Teams)

7. Resource Directory: Developer Toolkit

Best Books

BookAuthorPriceKey Topics
The Linux Command LineWilliam ShottsFreeLinux fundamentals
Docker Deep DiveNigel PoultonPaidContainerization
The Practice of Cloud SecurityVariousPaidCloud tooling

Best Udemy Courses

CourseInstructorPrice (INR)Key Topics
Linux Command Line BasicsJohn Purcell₹399-799Shell, commands
Docker & KubernetesNigel Poulton₹1,999-2,999Containers, orchestration
The Complete Linux Training CourseLazaro Diaz₹999-1,499System admin

Best O'Reilly Resources

ResourceTopicAccess
Learning WSLMicrosoft LearnFree
Docker FundamentalsO'ReillyPaid
Linux BibleChristopher NegusPaid

Best LinkedIn Learning Courses

CourseInstructorAccess
Linux for DevelopersShaun WassellPaid
Docker Essential TrainingArun GuptaPaid
Learning the Linux TerminalScott SimpsonPaid

Free Resources

PlatformResourceLink
Microsoft LearnWSL2 Documentationdocs.microsoft.com/wsl
Docker DocsOfficial Docker Guidedocs.docker.com
GitHub CLICommand line toolscli.github.com
Awesome ShellShell tools listgithub.com/aleizawitz/awesome-shell

8. Productivity Automation

Shell Aliases

# Add to ~/.zshrc
alias gs='git status'
alias ga='git add'
alias gc='git commit'
alias gp='git push'
alias ..='cd ..'
alias ...='cd ../..'
alias ll='ls -la'
alias python='python3'

Useful Scripts

# Quick project setup
#!/bin/bash
# new-project.sh
mkdir $1 && cd $1
git init
code .

Development Workflow Automation

# Daily setup script
#!/bin/bash
# morning-setup.sh
tmux new-session -d -s work
tmux new-window -t work -n server
tmux new-window -t work -n client
tmux new-window -t work -n notes
tmux attach -t work

9. Part Navigation

Previous Parts

Part 2: Git & GitHub

Next Parts

Part 4: Python Mastery · Part 5: Async Python & FastAPI


Proceed to Part 4: Python Mastery →

Comments

Comments are powered by giscus. Set PUBLIC_GISCUS_REPO_ID and PUBLIC_GISCUS_CATEGORY_ID in your environment to enable them.