Engineering degrees: the full working
Everything behind the engineering numbers — how the population was defined, how the age window was chosen, what every figure means, and how large the sample is at each step. Written slowly and in order, because every number here is downstream of a choice that had to be made explicitly.
The general rules live in METHOD.md; this note is engineering worked end to end.
1. Who is counted
Section titled “1. Who is counted”PLFS calendar_2025, first visit only, weighted by weight_annual.
| Filter | Value | Effect |
|---|---|---|
gedu_lvl = '12' |
“Literate: graduate” | Completed a UG, has not completed a PG. '13' is “postgraduate and above” and is excluded. |
tedu_lvl = '03' |
“Technical degree in engineering/technology” | Degrees only. Engineering diplomas ('08', '13') are a separate bucket. |
age 21–34 |
The working-age range for this analysis. |
Sample: 4,734 people, representing 5.42 million.
Two things this definition does deliberately.
Postgraduates are held out. Someone who has finished an M.Tech has gedu_lvl='13' and is not
here. This matters because it is a selection: 13.1% of engineering-degree holders go on to complete
a postgraduate degree, so this population is the other 86.9%. Engineering has the lowest
progression rate of the six buckets — other technical degrees run to 41.9% — so its tables are the
least affected by this exclusion, but it is not zero.
Someone currently doing a master’s is still gedu_lvl='12', because they have not finished it.
They appear under “studying”. That is why studying, in a population that already holds a degree,
reads directly as postgraduate study without needing any separate definition.
Diplomas are excluded, and it matters. An engineering diploma holder reaches formal work at 40.0% (graduate-level diploma) or 30.2% (below-graduate), against 52.6% for the degree. Folding them in would have dragged engineering down by roughly 9–10 percentage points.
2. How the recent-graduate window was chosen
Section titled “2. How the recent-graduate window was chosen”This is the choice everything else rests on, so here is the full working rather than the answer.
The problem
Section titled “The problem”A college reports its placement figures at graduation. To compare national data against that, the national cut has to describe people at the same moment. But measure too early and most of the cohort has not entered the labour market yet; measure too late and wages have grown, so you are comparing a fresh offer against someone four years into a career.
The evidence: when does studying stop?
Section titled “The evidence: when does studying stop?”Engineering graduates by single year of age. The fall column is the drop in the share still
studying from the previous year — the rate at which the cohort stops emptying into education.
| Age | n | Still studying | Fall | In formal work | Unemployed |
|---|---|---|---|---|---|
| 20 | 49 | 57.8% | — | 2.5% | 26.7% |
| 21 | 164 | 38.0% | 19.8pp | 11.5% | 36.6% |
| 22 | 354 | 24.2% | 13.8pp | 25.1% | 35.7% |
| 23 | 344 | 14.9% | 9.3pp | 38.5% | 29.1% |
| 24 | 344 | 11.0% | 3.9pp | 40.6% | 33.1% |
| 25 | 475 | 7.6% | 3.4pp | 48.9% | 24.5% |
| 26 | 342 | 1.4% | 6.2pp | 56.1% | 10.5% |
| 27 | 374 | 1.1% | 0.3pp | 57.1% | 9.6% |
| 28 | 427 | 1.3% | −0.2pp | 57.5% | 10.5% |
| 29 | 346 | 0.4% | 0.9pp | 63.6% | 5.6% |
| 30 | 483 | 0.8% | −0.4pp | 61.0% | 6.6% |
And the same evidence as candidate three-year windows:
| Window | n | Avg still studying | Fall across window | Avg in formal work |
|---|---|---|---|---|
| 21–23 | 862 | 25.7% | 23.1pp | 25.0% |
| 22–24 | 1,042 | 16.7% | 13.2pp | 34.7% |
| 23–25 | 1,163 | 11.2% | 7.3pp | 42.7% |
| 24–26 | 1,161 | 6.7% | 9.6pp | 48.5% |
| 25–27 | 1,191 | 3.4% | 6.5pp | 54.0% |
| 26–28 | 1,143 | 1.3% | 0.1pp | 56.9% |
| 27–29 | 1,147 | 0.9% | 0.7pp | 59.4% |
What stabilisation actually says, and why we did not follow it
Section titled “What stabilisation actually says, and why we did not follow it”Studying stabilises at 26–28, where the share is 1.3% and the fall across the window is 0.1pp — flat. That is genuinely where the cohort has finished emptying into education.
We did not use 26–28. By then formal employment has reached 56.9%, and — measured separately — the median wage has risen from ₹25,000 to around ₹35,000 and the share clearing ₹50,000 a month has gone from 11.2% to roughly 40%. A window chosen for a clean denominator would have imported four to six years of wage growth into a figure meant to describe a starting salary. That is exactly the error that, in earlier work, made unranked colleges appear to out-place ranked ones.
The window is 22–24: three years from engineering’s normal completion age of 22 — a four-year degree entered at 18. The same rule gives medical 24–26 (MBBS is 5.5 years including internship) and three-year degrees 21–23, so it is one rule applied consistently, not a per-bucket judgement.
The cost of that choice, stated plainly
Section titled “The cost of that choice, stated plainly”At 22–24, 16.7% of the cohort is still studying. They are in the denominator and they have not entered the labour market. This is a real limitation of the window and it pushes the formal employment rate down.
It is nonetheless the right denominator for comparing against a college, because NIRF’s placement rate uses the same one: placed divided by students graduating in minimum stipulated time, a denominator that also includes everyone who went on to higher study. Both sides carry the continuing students. Removing them from ours alone would break the comparison.
The wage-growth problem the late window would have caused is instead solved separately, by measuring progression on tenure rather than age — see section 5.
3. What a recent engineering graduate is doing
Section titled “3. What a recent engineering graduate is doing”Ages 22–24. Sample: 1,042 people, representing 1.16 million. Five categories, mutually exclusive, summing to 100.
| Share | |
|---|---|
| Formal work — salaried, paid, with a contract or social security | 34.6% |
| Informal wage work — salaried without either, plus casual labour | 2.9% |
| Self-employed, earning | 2.5% |
| = working for money | 40.0% |
| Studying — i.e. postgraduate study | 16.7% |
| Neither | 43.3% |
Read this carefully. Four in ten are earning anything at all. One in six is still studying. The remaining 43.3% are doing neither — but that is not 43.3% idle. It splits into people actively looking for work and people outside the labour force altogether, and for engineering it leans heavily toward the former: unemployment runs 29–36% across ages 22–24, against 7.8% in domestic duties across the wider stock. Engineering graduates queue for jobs rather than leaving the queue.
For contrast, the same cohort measured across the whole working-age range:
| Ages 21–34 | Share |
|---|---|
| Formal work | 52.6% |
| Informal wage | 4.3% |
| Self-employed | 7.8% |
| = working for money | 64.7% |
| Studying | 6.0% |
| Neither | 29.2% |
Sample: 4,734 people, 5.42 million.
These two tables answer different questions and must never be mixed. 34.6% is what a graduating engineer walks into. 52.6% is where engineers who have been working for years have got to. The difference is time, not disagreement.
4. What counts as “formal work”
Section titled “4. What counts as “formal work””pas = '31' -- regular salaried/wage employeeAND ern_reg > 0 -- actually paidAND (job_pas IN ('2','3','4') -- has a written contract OR ssec_pas NOT IN ('8','9')) -- OR has some social securityAll code meanings verified against the table’s own label columns, not assumed.
pas='31'— usual principal activity over the last 365 days, not a snapshot of last week. Excludes the self-employed, casual labour and unpaid family workers.ern_reg > 0— 97% of salaried workers clear this; the rest report no wage and are dropped.job_pas—1no written contract;2/3/4written contract of ≤1yr / 1–3yr / >3yr.ssec_pas—1–7are combinations of PF/pension, gratuity and health/maternity benefits;8“not eligible for any”;9“not known”, treated as not formal, the conservative reading.
| Route | All graduates | Engineering only | ||
|---|---|---|---|---|
| Share | Median | Share | Median | |
| Both contract and benefits | 53.8% | ₹28,500 | 75.9% | ₹39,600 |
| Benefits only, no contract | 13.7% | ₹22,000 | 15.1% | ₹35,000 |
| Contract only, no benefits | 5.9% | ₹14,000 | 2.5% | ₹21,000 |
| Neither → classed informal | 26.7% | ₹12,000 | 6.6% | ₹16,000 |
A known weakness — and it bites at the bottom of the education distribution, not here. Across all graduates the contract-only group earns ₹14,000 median, barely above the ₹12,000 of those classed informal: a written contract alone is a weak marker. For engineering graduates the sign reverses — contract-only earns ₹21,000 against the informal ₹16,000, and is 2.5% of the salaried rather than 5.9%.
An earlier version of this table published the all-graduates figures under an “engineering
graduates” heading, which made the weakness look far worse here than it is. It is real, and it is
concentrated at low education levels: see
../ASSUMPTIONS.md C1, where
contract-only admissions are 24% of the bottom rung’s formal count and earn less than the informal
group.
Requiring social security would cut engineering’s formal rate from 52.58% to 51.20%. The current rule is kept because it matches how PLFS-based formality is conventionally measured, and the alternative is one line of code away.
5. What they earn, and how it grows
Section titled “5. What they earn, and how it grows”Progression is measured on tenure — dur_pas, duration in the present principal activity
status — not on age. Tenure measures time in work directly: it assumes nothing about when anyone
graduated, and it separates a fresh entrant aged 30 from a thirty-year-old with eight years behind
them. Pooled across ages 21–34, because tenure cells inside 22–24 alone are too thin.
Monthly wage in formal work:
| Tenure | n | p25 | Median | p75 | p90 | ≥₹50,000 |
|---|---|---|---|---|---|---|
| Under 1 year | 182 | ₹20,000 | ₹25,000 | ₹35,000 | ₹50,000 | 11.2% |
| 1 to 3 years | 762 | ₹25,000 | ₹34,500 | ₹45,000 | ₹65,000 | 24.4% |
| Over 3 years | 1,216 | ₹30,000 | ₹42,000 | ₹60,000 | ₹80,000 | 42.9% |
The median rises 1.68× and the share clearing ₹50,000 a month goes from 11.2% to 42.9%. Two things follow. An entry salary is a poor guide to a career, and any comparison against a college’s reported placement salary must use the entry row, not the others.
The tenure codes are inferred, not documented. dur_pas has no codebook in our schema, so the
ladder was validated against people who cannot have long tenure: among graduates in salaried work,
code 3 peaks at age 22–23, code 4 at 25, code 5 from 27. That fits the standard NSS ladder — under
6 months, 6–12 months, 1–2 years, 2–3 years, 3+ years.
Two caveats. Tenure measures time in the activity status, not with an employer, so changing jobs while staying salaried keeps the clock running. And it is blank for anyone not working, so it says nothing about the unemployed.
6. The ₹6 lakh figure, and the check on it
Section titled “6. The ₹6 lakh figure, and the check on it”₹6 lakh a year is ₹50,000 a month. Among recent engineering graduates in formal work it sits at roughly the 90th percentile, so it is a genuinely top-decile fresher outcome.
Headline: 4.42% of the 22–24 cohort is in formal work earning ≥₹6 lakh. That is 34.6% in formal work × 12.76% of them clearing the threshold.
The 22–24 window admits people at any tenure, and a 24-year-old can already have three years
behind them. Since wages nearly double over that span, the window could be importing growth into a
number meant to describe people at the start. Engineering is the only bucket with the sample to
test this, so it was tested rather than assumed — check_entry_wage.py, bootstrapped over
first-stage units (the village or urban block PLFS sampled), 2,000 draws: resample 916 units
with replacement, take every person in each drawn unit, recompute the weighted share, then read off
the 2.5th and 97.5th percentiles.
How much the clustering actually matters here: very little. PLFS is stratified multi-stage and the schema warns that treating people as independent understates the standard error by 3.5 to 4.7× — but that applies to whole-population estimates, where each unit yields about twelve households. Engineering graduates aged 22–24 are sparse: 1,042 people across 916 units, 1.14 per unit, with only 110 units holding more than one. There is almost nothing to cluster, and the measured design effect is 1.14×, not 3.5×.
The width comes from somewhere else, and it is worth knowing which:
| Method | Interval | Width |
|---|---|---|
| Cluster bootstrap (used) | [2.19%, 7.19%] | 5.01pp |
| Person bootstrap | [2.42%, 6.73%] | 4.31pp |
| Wald from the raw count, unweighted | [3.17%, 5.67%] | 2.50pp |
n=34 in the numerator sets the scale, and survey weights nearly double the width beyond that. The Wald interval is half as wide only because it ignores the weights; a handful of high-weight respondents genuinely move this estimate. The cluster bootstrap is kept because it is correct whether or not clustering bites and costs nothing, not because clustering is doing the work here.
Share of those in formal work clearing ₹6 lakh:
| Cut | n | FSUs | Estimate | 95% CI |
|---|---|---|---|---|
| Aged 22–24, any tenure (headline) | 304 | 279 | 12.76% | [6.58, 20.08] |
| Aged 22–24, under 1 year in (strict) | 101 | 94 | 10.34% | [2.54, 21.24] |
| Any age, under 1 year in | 182 | 168 | 11.19% | [4.50, 18.78] |
Verdict: the window is not measurably contaminated. The gap to the strict reading is 2.4 percentage points and the intervals overlap heavily. It reads slightly high, meaning the headline is generous toward whatever it is compared against — the conservative direction here.
Carried through to the cohort figure:
| Wage rate applied to the 34.6% formal rate | ≥₹6L rate | Cohort share |
|---|---|---|
| Same window, any tenure (headline) | 12.76% | 4.42% |
| Aged 22–24, entry tenure | 10.34% | 3.58% |
| Any age, entry tenure | 11.19% | 3.88% |
Every alternative is lower, so 4.42% is the generous end of a 3.6–4.4% range. State that wherever it is compared against a college’s reported placement salary.
The strict cut was not adopted: n falls from 304 to 101 and the interval widens from 13.5pp to 18.7pp. A noisier estimate of the same number is not an improvement.
7. Moving the threshold
Section titled “7. Moving the threshold”₹6 lakh is a parameter, not a finding. Share of engineering graduates in formal work at entry (under 1 year, n=182) earning at or above each monthly threshold:
| ₹15k | ₹20k | ₹25k | ₹30k | ₹40k | ₹50k | ₹60k | ₹75k | ₹100k |
|---|---|---|---|---|---|---|---|---|
| 87.1% | 78.9% | 66.1% | 39.7% | 17.6% | 11.2% | 7.0% | 2.2% | 0.0% |
The full grid for every bucket and tenure step is in output/wage_threshold_grid.csv.
Use the grid, not a curve. A log-normal was fitted to every cell so intermediate values could be
interpolated, then checked against the exact shares before use — and it fails at low thresholds by
up to 14.9 percentage points, because reported wages heap on round numbers (₹15,000, ₹20,000,
₹25,000) and that is exactly where those thresholds sit. share_above() therefore reads the
empirical grid and refuses to answer below ₹15,000 rather than returning a bad number. The fit
is used only above ₹40,000 and only to extrapolate past the top of the grid.
One result worth carrying elsewhere: the fit sits below the true share at ₹50,000 in 29 of 42 cells. The real right tail is fatter than log-normal, so any analysis modelling Indian salaries that way is understating the top.
8. Sample sizes, in one place
Section titled “8. Sample sizes, in one place”| Cut | n (people) | Weighted |
|---|---|---|
| Engineering degree holders, 21–34 | 4,734 | 5.42m |
| Recent graduates, 22–24 | 1,042 | 1.16m |
| — of whom in formal work | 304 | |
| — in formal work and ≥₹6 lakh | 34 | |
| Formal workers, tenure under 1 year | 182 | |
| Formal workers, tenure 1–3 years | 762 | |
| Formal workers, tenure over 3 years | 1,216 | |
| First-stage units behind the 22–24 window | 916 |
The binding constraint is the ≥₹6 lakh cell at 34 people. Every statement about how many recent engineering graduates clear ₹6 lakh rests on it, which is why that figure carries a bootstrapped interval — [2.19%, 7.19%] on the cohort share — and why the interval, not the point estimate, should govern any conclusion drawn from it.
Single years of age inside the window are thinner still: 354 at 22, 344 at 23, 344 at 24. Nothing here should be read at single-year resolution.
This constraint is why the analysis was re-run pooled across four PLFS years —
POOLED.md. That takes the ≥₹6 lakh cell from 34 to 91 and the interval from 5.01pp
to 3.73pp, a 26% improvement, with the estimate moving 4.42% to 5.59% once deflated. It confirms
every figure in this note. It does not remove the constraint: 91 is still the smallest number in
the analysis and still governs what can honestly be claimed.
9. What this does not tell you
Section titled “9. What this does not tell you”No causation. People who study engineering differ from people who do not, in ways this cannot see. These figures describe who holds which jobs, not what produced them.
One year, nominal. CY2025 only, no deflation, no trend. The pooled cross-check in
POOLED.md covers CY2022–25 with a deflator and agrees; it is a robustness check
rather than the headline, because a pooled figure is no longer current.
No branch detail. PLFS records “technical degree in engineering/technology” and nothing finer. There is no computer-science-versus-mechanical split anywhere in this data.
Postgraduates excluded, which is 13.1% of engineering-degree holders — the lowest exclusion of any bucket, but not nothing.
Clustered sampling. Point estimates in the tables above are not accompanied by intervals except where stated. Anything leaning on a small cell should be bootstrapped over first-stage units first, as section 6 does.