Setting Up a Modern Development Environment
A complete guide to configuring a productive development setup with modern tools and sensible defaults.
Your development environment is where you spend most of your working hours. Let's make it count.
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:
# 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:
[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 = mainThe 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
{
"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:
- ESLint — Code quality
- Prettier — Formatting
- GitLens — Git insights
- GitHub Copilot — AI assistance
- 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 commandsThe Makefile is underrated. It documents and automates common tasks:
.PHONY: dev test build deploy
dev:
npm run dev
test:
npm run test
build:
npm run build
deploy: test build
./scripts/deploy.shNow 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.