Навыки и стек для джуна-DE
Прошлый урок был про ландшафт «снаружи». Этот — про тебя: что должен знать и уметь джуниор-DE, чтобы пройти собеседование. Без воды и без «надо знать всё».
Hard skills: минимум для входа
Это минимум. Дальше — углубление и расширение.
SQL — главный навык
Без SQL не возьмут даже на стажировку. Уровень джуна:
- SELECT, WHERE, ORDER BY, LIMIT — это база.
- JOIN’ы — INNER, LEFT, RIGHT, FULL OUTER. Понимать, что такое cartesian product.
- GROUP BY и HAVING — агрегации.
- Subqueries и CTE (WITH … AS) — структурирование сложных запросов.
- Window functions — ROW_NUMBER, RANK, LAG/LEAD, partition by. Это отличает джуна от стажёра.
- UNION / UNION ALL — объединение результатов.
- CASE WHEN — условная логика.
Что должно быть на автомате:
-- Топ-3 покупателя по сумме заказов за каждый месяц
SELECT
customer_id,
month,
total_amount,
rank_in_month
FROM (
SELECT
customer_id,
DATE_TRUNC('month', order_date) AS month,
SUM(amount) AS total_amount,
ROW_NUMBER() OVER (
PARTITION BY DATE_TRUNC('month', order_date)
ORDER BY SUM(amount) DESC
) AS rank_in_month
FROM orders
GROUP BY 1, 2
)
WHERE rank_in_month <= 3
ORDER BY month, rank_in_month;
Если этот запрос пугает — садись за SQL. Без него дальше тяжело.
Углубление: sql-fundamentals -> sql-internals.
Python — второй главный
DE-Python не такой, как у бэкенда. Тебе нужны:
- Базовый синтаксис: типы, функции, классы (минимум), модули, исключения.
- Pandas — DataFrame, чтение CSV/JSON/Parquet, базовые операции (filter, groupby, merge). Для ad-hoc.
- Стандартная библиотека:
os,pathlib,json,datetime,logging,subprocess. - HTTP-клиент:
requests(для API). - БД-коннекторы:
psycopg2(Postgres),sqlalchemy(универсальный),snowflake-connector-python. - Тестирование:
pytest(хотя бы базово). - Виртуальные окружения:
venvилиpoetry/uv.
Не нужно (для джуна):
- Async / await (пока не понадобится).
- Django / Flask / FastAPI (это бэкенд, не DE).
- Метаклассы, дескрипторы (overkill).
Git — обязательно
В команде ты будешь работать через GitHub / GitLab. Минимум:
git clone,git add,git commit,git push,git pull.- Ветки:
git checkout -b,git merge,git rebase. - Pull requests и code review.
- Решение конфликтов (хотя бы простых).
.gitignore.
Если ты ни разу не делал PR — сделай прямо сейчас на любом своём проекте.
Docker / Linux
Чтобы поднимать локально Airflow, dbt, базы данных:
docker run,docker ps,docker logs.docker-compose up,docker-compose down.- Базовый Linux CLI:
ls,cd,cat,grep,find,chmod, переменные окружения. - SSH (для доступа на сервера).
Не нужно (для джуна): писать свои Dockerfile с нуля, разбираться в network namespaces, оптимизировать слои.
Один cloud DWH
Выбери один и углубись:
- Snowflake — самый популярный, удобный UI, документация хорошая.
- BigQuery — если ты на GCP.
- Redshift — если ты в AWS.
Понять:
- Как загрузить файл из S3/GCS.
- Как написать SQL и посмотреть план выполнения.
- Как создать роль, дать grant.
- Что такое compute warehouse / slot / cluster.
- Партиции и кластеризация (на уровне «знаю, зачем»).
Один трансформ-инструмент
Главные кандидаты — dbt и Airflow:
- dbt — если идёшь в analytics engineering или маленькую/среднюю команду.
- Airflow — если идёшь в platform engineering или крупную компанию.
В идеале — оба. Минимально — один полноценно.
Soft skills (не недооценивай)
Минимальный стек для входа
Если у тебя 3 месяца на подготовку — вот миnimum viable stack:
| Категория | Что учим |
|---|---|
| Язык 1 | SQL (PostgreSQL диалект) — глубоко |
| Язык 2 | Python 3.12 — базовый + Pandas |
| Версионирование | Git + GitHub (PR, merge) |
| Инфра | Docker (запуск контейнеров) + Linux CLI |
| DWH | Snowflake или BigQuery (free tier для практики) |
| Трансформации | dbt Core (локально с DuckDB) |
| Оркестрация (опционально) | Airflow (через docker-compose) |
| Pet-project | 1-2 проекта в портфолио на GitHub |
С этим стеком ты готов к собеседованию на джуна в большинстве компаний.
Не учи всё подряд. Бери одну тему за раз. SQL — 3 недели. Python — 3 недели. dbt — 2 недели. Airflow — 2 недели. Pet-project — 2 недели. Это 12 недель = ~3 месяца. Реалистично, если не отвлекаться.
Что НЕ нужно (для джуна)
Чтобы не паниковать от вакансий с 30 требованиями:
Не нужно для джуна:
- Spark, Flink, Kafka — желательно знать «что это и зачем», но писать на них — не для джуна.
- Kubernetes — приятно, но необязательно. DevOps в команде поможет.
- ML / DS — не твоя зона. Можно объяснить разницу — этого хватит.
- Алгоритмы и LeetCode — DE-собесы редко требуют. Базовая сложность (O(n), O(log n)) — да, hard-задачи на DP — нет.
- Системный дизайн уровня senior — на джуна не спросят архитектуру Netflix.
Эти темы для middle и senior. Не пугайся, что в вакансии «junior» написано «опыт Spark/K8s/Kafka» — половина компаний завышает требования.
Чек-лист готовности
Перед интервью:
- Решил 30+ SQL-задач (LeetCode SQL, SQLZoo, Hackerrank SQL).
- Написал свой Python-скрипт, который читает API и пишет в Postgres.
- Сделал dbt-проект с 5+ моделями и тестами.
- Запустил Airflow локально, написал DAG.
- Имею GitHub с pet-проектом и хорошим README.
- Могу объяснить разницу OLTP/OLAP, ETL/ELT, batch/streaming за 60 секунд каждое.
- Прочитал «Fundamentals of Data Engineering» (Reis & Housley) или эквивалент.
Если все галочки — ты готов. Иди на собеседования.
Попробуй сам
- Открой 3 разных DE-вакансии «джуниор». Выпиши все технологии в столбик. Поставь напротив каждой: знаю / слышал / не знаю. Это твой план обучения на ближайшие 3 месяца.
- Сделай аккаунт на GitHub, если ещё нет. Создай репозиторий
data-engineering-learning— туда будешь складывать pet-проекты и заметки по курсу.