Back to posts

Setting Up a Modern Development Environment

A complete guide to configuring a productive development setup with modern tools and sensible defaults.

toolsproductivityterminal
Setting Up a Modern Development Environment

Your development environment is where you spend most of your working hours. Let's make it count.

A clean terminal setup
A clean terminal setup

The Terminal

The terminal is the backbone of modern development. Here's my setup:

Shell Configuration

I use Zsh with a minimal prompt. Here's my .zshrc essentials:

bash
# Prompt - keep it simple
PROMPT='%F{blue}%~%f %F{magenta}❯%f '

# History
HISTSIZE=10000
SAVEHIST=10000
setopt SHARE_HISTORY
setopt HIST_IGNORE_DUPS

# Better directory navigation
setopt AUTO_CD
setopt AUTO_PUSHD
setopt PUSHD_IGNORE_DUPS

# Aliases that matter
alias ll='ls -la'
alias g='git'
alias dc='docker compose'
alias k='kubectl'

The key is keeping your configuration minimal. Every alias should earn its place through frequent use.

Git Configuration

A well-configured Git setup saves hours over time:

bash
[user]
    name = Your Name
    email = you@example.com

[core]
    editor = nvim
    autocrlf = input

[alias]
    co = checkout
    br = branch
    ci = commit
    st = status
    unstage = reset HEAD --
    last = log -1 HEAD
    visual = !gitk

[pull]
    rebase = true

[init]
    defaultBranch = main

The pull.rebase = true setting alone prevents countless messy merge commits.

Editor Setup

Your editor should stay out of your way while providing just enough assistance.

VS Code Settings

json
{
  "editor.fontSize": 14,
  "editor.fontFamily": "JetBrains Mono",
  "editor.lineHeight": 1.6,
  "editor.minimap.enabled": false,
  "editor.renderWhitespace": "boundary",
  "editor.bracketPairColorization.enabled": true,
  "editor.formatOnSave": true,
  "workbench.colorTheme": "GitHub Dark Default",
  "workbench.activityBar.visible": false,
  "window.titleBarStyle": "custom",
  "terminal.integrated.fontSize": 13
}

The activity bar is hidden—keyboard shortcuts are faster anyway.

Essential Extensions

Keep extensions minimal:

  1. ESLint — Code quality
  2. Prettier — Formatting
  3. GitLens — Git insights
  4. GitHub Copilot — AI assistance
  5. Error Lens — Inline errors

That's it. Five extensions. More than that and your editor becomes sluggish.

Project Structure

Every project should have a consistent structure:

project/
├── src/           # Source code
├── tests/         # Test files
├── docs/          # Documentation
├── scripts/       # Build and utility scripts
├── .github/       # CI/CD workflows
├── .env.example   # Environment template
├── README.md      # Project overview
└── Makefile       # Common commands

The Makefile is underrated. It documents and automates common tasks:

makefile
.PHONY: dev test build deploy

dev:
	npm run dev

test:
	npm run test

build:
	npm run build

deploy: test build
	./scripts/deploy.sh

Now anyone can run make dev without knowing your specific toolchain.

Conclusion

A good development environment is:

  • Fast — Slow tools break flow
  • Predictable — Same behavior every time
  • Minimal — Less to configure and maintain
  • Documented — Others can replicate it

Invest time in your setup. The compound interest is real.