Interview Insights · Data Engineer
Why Every Data Engineer Should Practice Explaining Their Portfolio Aloud
Quick summary — DE portfolio
Interviewers rarely clone your repositories. They judge your portfolio from how you talk about it in the few minutes you are given. Most data engineering portfolios I see contain good work presented badly: too many projects, no clear order, no proof they run and no clarity about which parts came from a tutorial. A short, rehearsed tour fixes all four problems. You choose two or three projects that show different skills, open with the strongest, show one command that runs it and say clearly what you built yourself.
In this guide you will learn:
- How to choose and order projects for a spoken tour
- A 60-second opening script for your portfolio
- How to prove a project runs, using Docker Compose and tests
- How to answer 'is this from a tutorial?' honestly and well
- A worksheet to prepare your own tour
SECTION 01Choosing and ordering projects for a spoken tour
A portfolio tour is not a list of everything you have done. It is a short argument that you can do the job. For a data engineer, that usually means showing that you can move data reliably, model it sensibly and keep it correct. Two or three projects that each prove a different part of that argument are far stronger than six similar ETL scripts.
Order matters when speaking. Put your strongest, most complete project first, because interviewers often run out of time. Put smaller or older projects later, and be ready to skip them if the conversation goes deep on the first one.
| Project type | What it proves | What to say aloud | Weakness to avoid |
|---|---|---|---|
| Batch ELT with orchestration | Reliable scheduled loads | How reruns and backfills work | No schedule, just a script you ran once |
| dbt or SQL modelling layer | Modelling and testing skills | Grain of the main model and its tests | Models with no tests or documentation |
| Streaming ingestion | Event handling and latency | How late or duplicate events are handled | A copy of a quickstart with no changes |
| Cloud deployment | Infrastructure awareness | What runs where and what it costs to leave on | Hard-coded keys in the repo |
"I have three projects, and I will start with the one
I am most proud of.
The first is a batch pipeline that loads public taxi
trip data into Postgres every day using Airflow, with a
dbt layer on top. It shows orchestration, modelling and
testing.
The second is a small streaming project that reads
simulated order events from Kafka and keeps per-minute
totals. It shows how I handle late events.
The third is older: a Python script that cleans CSV
exports. I keep it to show where I started.
Shall I go deeper into the first one?"# NYC Taxi Daily Pipeline
## What it does
Loads daily taxi trips into Postgres and builds
fct_trips and dim_zones with dbt.
## Architecture
Source files -> Airflow DAG -> raw schema -> dbt -> marts
## Run it locally
make up # starts Postgres and Airflow
make backfill # loads one sample week
make test # runs dbt tests
## Design decisions
- Partition overwrite per day so reruns are safe
- Natural key trip_id is hashed from source columns
## What I built vs reused
- Reused: Airflow Docker setup from the official docs
- Built: DAG, dbt models, tests, data quality checks
## What I would improve
- Move from local Postgres to a cloud warehouse
The opening ends with a question. That is deliberate. It lets the interviewer choose what to explore, and it stops you from talking for ten minutes about the project they care least about.
SECTION 02Proving a project actually runs
One of the quiet questions in my head during a portfolio tour is: does this run, or is it a collection of screenshots? I do not need to see it run in the interview. I need to believe that it would. The fastest way to earn that belief is to say how someone else would run it, in one or two commands.
A Docker Compose file and a Makefile do this well for data projects. They show that you thought about another person setting it up, which is exactly what working in a team requires. Practise describing them in a sentence each.
| Evidence | What it shows | How to mention it | Red flag version |
|---|---|---|---|
| Docker Compose file | Anyone can start the stack | 'One command brings up Postgres and Airflow' | Works only on your laptop paths |
| Sample data and seed script | It runs without private data | 'A sample week is included for testing' | Needs a dataset that is not in the repo |
| Automated tests | Correctness is checked, not assumed | 'dbt tests run on every model' | Tests folder that is empty |
| CI workflow | Checks run on every push | 'Tests run automatically on each commit' | A badge showing a failing build |
services:
postgres:
image: postgres:16
environment:
POSTGRES_USER: etl
POSTGRES_PASSWORD: etl
POSTGRES_DB: warehouse
ports:
- "5432:5432"
volumes:
- pgdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U etl -d warehouse"]
interval: 5s
retries: 10
etl:
build: .
depends_on:
postgres:
condition: service_healthy
environment:
PGHOST: postgres
PGUSER: etl
PGPASSWORD: etl
PGDATABASE: warehouse
command: python -m pipeline.run --date 2024-01-07
volumes:
pgdata:up:
docker compose up -d postgres
run:
docker compose run --rm etl
test:
docker compose run --rm etl dbt test --project-dir dbt
down:
docker compose down -v
# Spoken version:
# "If you clone the repo, 'make up' starts Postgres,
# 'make run' loads one sample day and 'make test' runs
# the dbt tests. The ETL container waits for the database
# health check, so it does not fail on a cold start."
The health check detail is small but telling. Many local setups fail on the first run because the ETL container starts before the database is ready. Mentioning that you solved it shows you actually ran the project from scratch.
Keep passwords like these only for local demos. In your tour, say that real credentials would come from environment variables or a secrets manager. That one sentence prevents a security follow-up.
SECTION 03Answering 'did you build this, or follow a tutorial?'
Many good portfolio projects start from a course or a tutorial. That is fine. What hurts candidates is not the tutorial; it is pretending there was none. When I ask, I already suspect the answer, because tutorial projects tend to look alike. What I want to hear is what you changed, added or fixed after the tutorial ended.
Prepare this answer in advance and say it aloud a few times. It should be calm and specific: what came from the tutorial, what you added, and one problem you solved that the tutorial did not cover.
| Part of the project | Tutorial version | Your additions | How to say it |
|---|---|---|---|
| Data loading | Loads one fixed month | Parameterised by date, rerunnable | 'I made it load any day safely' |
| Models | One flat table | Fact and dimension models with a clear grain | 'I split it into a star for reporting' |
| Testing | None | Unique, not null, accepted values, relationships | 'I added tests after a duplicate bug' |
| Operations | Run by hand | Scheduled DAG with retries and alerts | 'It now runs daily without me' |
# dbt/models/marts/schema.yml
version: 2
models:
- name: fct_trips
description: One row per completed taxi trip.
columns:
- name: trip_id
tests:
- unique
- not_null
- name: payment_type
tests:
- accepted_values:
values: ['card', 'cash', 'no_charge', 'dispute']
- name: pickup_zone_id
tests:
- relationships:
to: ref('dim_zones')
field: zone_idQ: Is this from a course?
A: "Yes, the starting point was a course project that
loaded one month of taxi data into a single table.
After that I made three changes myself. I parameterised
the load by date so I could backfill any period. I split
the table into fct_trips and dim_zones with dbt. And I
added tests, because I found duplicate trips when I
reran a day.
The relationships test also caught trips with pickup
zones missing from the zone file, which I now map to
an 'unknown' zone."
This answer turns a possible weakness into a strength. It shows you can take existing code and make it production-like, which is most of what a junior data engineer does in the first year of a job.
SECTION 04Worksheet: build your three-minute portfolio tour
Complete this once, then rehearse the tour aloud every few days. Time it. If it runs over three minutes before follow-ups, cut a project rather than talking faster.
LIST ALL PROJECTS, THEN KEEP TWO OR THREE
Project | Skill it proves | Runs from README? | Tests?
________|_________________|___________________|_______
________|_________________|___________________|_______
________|_________________|___________________|_______
Keep projects that prove DIFFERENT skills.
Drop any that do not run from a fresh clone.
Order: strongest first.MY TOUR (fill in, then say aloud)
Opening line: "I have __ projects, starting with ____."
Project 1 in two sentences: __________________________
What it proves: _____________________________________
How to run it: ______________________________________
Project 2 in two sentences: __________________________
What it proves: _____________________________________
Closing question: "Which one would you like to explore?"THE DAY BEFORE
[ ] Fresh clone runs using only the README
[ ] No passwords, tokens or keys in the repo history
[ ] README has 'built vs reused' section
[ ] README has 'what I would improve' section
[ ] Pinned repos on profile match the tour order
[ ] I can explain every file in the main project
[ ] Tour timed at three minutes or less
SECTION 05Habits that make a portfolio tour memorable
Interviewers see many portfolios in a week. These habits help yours stand out for the right reasons.
- Use public, interesting data — Open datasets such as public transport or weather data make the project easy to discuss without confidentiality worries.
- Show one design decision — Pick a single decision per project, such as partition overwrite, and explain why you made it.
- Say what it costs to run — If anything runs in the cloud, mention how you keep it cheap or turn it off. It shows practical judgement.
- Remove dead projects — An unfinished repo with a broken README hurts more than having one fewer project.
- Keep one diagram ready — A simple architecture image in the README gives you something to share on screen during video interviews.
SECTION 06Interview Q&A — DE portfolio
Q1Walk me through your portfolio.
I would say how many projects I have and start with the strongest. For each one, I give two sentences on what it does, one on what skill it proves and one on how to run it. Then I ask which project the interviewer wants to explore, rather than going through everything.
Q2How do I know your project actually works?
The README has a short local setup using Docker Compose. One command starts the database, another loads a sample day and a third runs the dbt tests. I clone it into a fresh folder before interviews to make sure the steps still work.
Q3Which parts of this project did you build yourself?
I would separate them clearly. For example, the Docker setup for Airflow came from the official documentation and the first version of the loader came from a course. I added date-parameterised loads, the dbt star schema, tests and the daily schedule with retries.
Q4What would you improve in your best project?
I would name one or two realistic improvements, such as moving from local Postgres to a cloud warehouse, adding CI so tests run on every push, or replacing a full reload with incremental models. I would also say why I have not done it yet, such as cost or time.
Q5Why did you choose these projects for your portfolio?
Each one shows a different part of data engineering: scheduled batch loading, modelling with tests and handling streaming events. Together they cover most of what a junior data engineer does, and I can explain each of them in depth.
SECTION 07Test yourself — DE portfolio quiz
Five questions. No sign-up.
0 / 5Pick an answer to see why it is right or wrong.
SECTION 08Frequently asked questions
What projects should be in a data engineer portfolio?
A scheduled batch pipeline with rerunnable loads, a modelling layer with tests, and optionally a streaming or cloud deployment project. Each should have a clear README, sample data and a simple way to run it.
How do I present my GitHub projects in an interview?
Choose two or three, start with the strongest, describe each in a couple of sentences, say how to run it and what you built yourself, then invite the interviewer to pick one to explore.
Is it okay to have tutorial projects in a data engineering portfolio?
Yes, as long as you are honest about it and have added your own improvements, such as tests, scheduling, better modelling or handling of edge cases. Be ready to explain those additions.
Should a data engineer portfolio use Docker?
It helps a lot. Docker Compose lets a reviewer start your database and pipeline with one command, and it shows that you think about how others will run your work.
How long should I talk about my portfolio in an interview?
Aim for a tour of about three minutes before follow-ups. Interviewers usually want to go deep on one project, so a short overview gives them that chance.
Where can I practise Data Engineer interview answers with expert feedback?
Yes. Uncodemy's Data Science Training Course in Noida (classroom and online) includes live projects, one-to-one mock interviews and resume reviews, so you practise Data Engineer interview answers with trainer feedback before the real interview. You can book a free demo class from this page to see how the sessions work.
SECTION 09Related reads
Classroom & online · Noida
Build a data engineering portfolio worth touring
Our Data Science Training Course includes guided pipeline and modelling projects, Docker-based setups and spoken portfolio reviews so you can present your work with confidence.
Talk to a counsellor for current fees- Guided portfolio projects
- Docker and dbt practice
- README and GitHub review
- Mock project rounds