An IDE is where most development happens — it’s your main interface for writing, running, debugging, and managing code. A well-configured environment saves time, reduces friction, and helps enforce best practices across projects.
## What I Look For in an IDE
- Fast startup and low memory overhead
- Strong support for Python, SQL, and/or notebooks
- Built-in or easily integrated linting and formatting
- Git integration for version control
- Extension ecosystem (testing, Docker, Jupyter, etc.)
## Commonly Used IDEs
- [[VS Code]] — My primary IDE for Python, dbt, and general scripting. Highly customizable.
- [[Jupyter Notebooks]] — Best for exploratory data analysis, prototyping ML models, and storytelling.
- [[PyCharm]] *(optional)* — When deeper Python refactoring or testing support is needed.
## Environment Setup Tips
- Use `.devcontainer` or `Dockerfile` for consistent environments across machines
- Define a `requirements.txt` or `pyproject.toml` for dependencies
- Set up a virtual environment (e.g., `venv` or `conda`) per project
- Add a `.env` file for secrets and runtime config — and make sure it’s `.gitignore`d
## Testing / Linting / Formatting (via Git Hooks or Extensions)
- Format code with `black`
- Lint with `flake8` or `ruff`
- Test with `pytest` (integrated into terminal or pre-commit hook)
> **Tip**: Set up your IDE to auto-format on save and highlight linting issues inline.
---
**Part of**: [[Building Data Products]]