Get this right once and stop thinking about it. The goal is not to use the fanciest tool. It's to remove friction between you and the data.
| Tool | Best for | Tier |
|---|---|---|
| VS Code (recommended default) | Everyone: flexible, a huge extension ecosystem, and free | Junior to Senior+ |
| PyCharm | Data engineers writing serious Python: best-in-class debugging, dbt Core integration | Mid to Senior+ |
| DataGrip / DBeaver | SQL-heavy work across multiple databases. DBeaver is free; DataGrip is JetBrains-paid | Junior to Senior+ |
| Jupyter / JupyterLab | Exploratory analysis and notebooks: still the default for ad-hoc work | Junior to Senior+ |
| Cursor | AI-native editing, genuinely useful once you can already judge whether the AI's output is right | Mid to Senior+ |
If you only pick one: VS Code. Add the SQL formatter, Python, Jupyter, GitLens and dbt Power User extensions, and you've covered 90% of both tracks.
This isn't optional for analysts any more either (see the Skill Guide: Data Analyst (2026) doc). The minimum bar:
.gitignore (never commit credentials or large data files)Junior: learn the commands above on a personal repo. See the Git & GitHub Cheatsheet for the exact commands.
Mid: comfortable with rebasing, resolving merge conflicts, and writing a PR description someone else can review from.
Senior+: sets branching conventions and review standards for a team.
<aside> ⚠️
Stop installing packages globally. It will eventually break something.
</aside>
| Tool | Take |
|---|---|
venv |
Built into Python, fine as a starting point |
| Poetry | Popular, and handles dependency locking well |
| uv (recommended) | Astral's fast, modern package and environment manager. Increasingly the 2026 default because it's dramatically faster and replaces pip, venv and Poetry-style locking in one tool |
uv installed, one project scaffolded with a locked environment