Prompt
What should I use to standardize local dev setup?
Latest observation
For standardizing a local dev setup, the best choice depends on how much you want to control the environment and how many tools you need to pin down.
Good options
1. Docker / Docker Compose
Best when you want to standardize:
- runtime versions
- system dependencies
- databases, caches, queues
- “works on my machine” issues
Use this if your team needs the same environment across macOS, Linux, and Windows.
Pros: very reproducible, common in teams
Cons: can be slower and a bit more complex
2. Dev Containers
Best if you want a more developer-friendly version of Docker-based setup.
Tools:
- VS Code Dev Containers
- GitHub Codespaces
- devcontainer.json
Pros: easy onboarding, consistent setup, good editor integration
Cons: mostly tied to container workflows
3. Nix
Best for highly reproducible dev environments with pinned dependencies.
Pros: extremely consistent, great for toolchain management
Cons: steeper learning curve, smaller adoption than Docker
4. asdf / mise
Best for standardizing language/tool versions:
- Node
- Python
- Ruby
- Go
- Java
Pros: lightweight, easy to adopt, great for version pinning
Cons: doesn’t fully standardize OS-level dependencies
5. Homebrew + scripts
Good for smaller teams or simpler projects.
Pros: simple, familiar
Cons: less reproducible, more drift over time
Practical recommendation
If you want the most common and effective setup:
- Use Docker Compose for services and shared infra
- Use mise or asdf for language/runtime versions
- Use dev containers if you want a polished onboarding experience
If I had to pick one:
- Small project:
miseorasdf - Team/project with backend services:
Docker Compose - Strong reproducibility requirements:
NixorDocker + Dev Containers
If you tell me your stack (Node/Python/Go/etc.) and team size, I can recommend a specific setup.