Managing Your Development Environment
How to set up, understand, and maintain a local development environment — for data science students.
The Mental Model Bootstrap a Machine Bootstrap a Project Troubleshooting

The goal here is not to memorize commands, but to build a mental model of what lives where on your machine and why.
Who this is for
Students who can open a terminal but feel uncertain about:
- Where Python (or R, or Node) actually lives on their laptop
- Why one project’s packages break another project
- What an environment variable is and where to set it
- How to recover when “it worked yesterday”
Learning goals
By the end of this guide, you should be able to:
- Describe the layers of your environment: OS → shell → language runtimes → package managers → project environments → IDE.
- Install and switch between language versions without breaking your system.
- Create isolated, reproducible project environments.
- Manage secrets and configuration through environment variables.
- Bootstrap a brand-new machine in under an hour.
The mental model
Before installing anything, understand the stack:
Operating System (macOS / Windows / Linux)
└── Shell (zsh, bash, PowerShell)
└── System package manager (Homebrew, apt, winget)
└── Language runtimes (Python, R, Node, Julia)
└── Language package managers (pip, uv, conda, renv, npm)
└── Project environments (.venv, conda env, renv)
└── Editor / IDE (VS Code, RStudio, JupyterLab)
Each layer is replaceable, and better tools within each layer continually emerge. Problems usually come from confusing which layer you are working on.
Why Use a Shell?
A shell is the universal glue for open source tooling: nearly every data tool — Python, R, git, curl, jq, AWS CLI — reads text in and writes text out, and the shell lets you pipe them together into reproducible workflows. That text-first, composable model is what makes it possible to mix and match tools across projects instead of being locked inside one IDE or platform.
Going further
- Containers (Docker, Dev Containers) for fully portable environments
- Cloud notebooks (Colab, SageMaker, Posit Cloud) as fallbacks, not replacements
- Dotfiles repos for sharing your config across machines