The Unpaid Consulting Epidemic
About 25% of companies now use take-home assignments in their data engineering loops. The stated expectation is 2 to 8 hours. The reality is different. Assignments routinely demand full pipeline implementations: multi-source ingestion, dimensional modeling, test suites, CI config, documentation, and a "present to the team" follow-up. Candidates report 10 to 20 hours of real work to do these properly.
The industry consensus is clear: anything over 4 hours indicates poor scoping or deliberate extraction. Anything over 6 hours is unpaid consulting. Yet 40% of hiring managers admit they don't trust take-homes as a predictive measure but continue using them because "everyone else does." That's not a hiring strategy; it's a cargo cult.
The privilege filter is brutal. Engineers with caregiving obligations, multiple jobs, or visa sponsorship timelines cannot absorb 20 hours of unpaid labor per company. If you're running three interview loops simultaneously (which is standard advice), that's 60 hours of free work on top of your day job. This systematically filters out senior practitioners who should pass but literally cannot afford the time cost.
And the follow-up? Companies ghost after submission. Fifty percent of job seekers strongly dislike take-home assignments and drop out of pipelines after learning about them. The ones who stay invest 15+ hours building production-grade pipelines and receive templated rejections with zero technical feedback.
If a take-home assignment takes more than 2 to 3 hours of your time, you should consider dropping it. That's not a signal about your qualifications. It's a signal about the company's hiring maturity.
Here's what a reasonable take-home looks like versus what's actually being assigned:
-- Reasonable: model one business domain, 2-3 hours
-- "Design a fact table for order events"
CREATE TABLE fct_orders (
order_id BIGINT PRIMARY KEY,
customer_id BIGINT NOT NULL,
product_id BIGINT NOT NULL,
order_ts TIMESTAMP NOT NULL,
quantity INT NOT NULL,
unit_price NUMERIC(10,2) NOT NULL,
discount_amt NUMERIC(10,2) DEFAULT 0,
order_total NUMERIC(12,2) NOT NULL
);
-- Grain: one row per order line item
-- Done. Defensible. Two hours tops.
Now compare that to what candidates are actually receiving:
-- Actual take-home from a Series B startup (anonymized):
-- 1. Ingest from Postgres, S3 CSV, and a REST API
-- 2. Build staging, intermediate, and mart layers in dbt
-- 3. Implement SCD Type 2 for customer dimension
-- 4. Write data quality tests (uniqueness, freshness, referential integrity)
-- 5. Add CI pipeline with linting
-- 6. Document all modeling decisions
-- 7. "Present to the team" (45 min + Q&A)
-- Estimated time: "about 8 hours"
-- Actual time: 18 hours
That second one is a consulting engagement. If you're going to ask for 18 hours of work, pay for it.