The 2026 IT market: fewer jobs, a higher bar, and a lot more fake listings

Robin Park

Robin Park

September 18, 2026

The 2026 IT market: fewer jobs, a higher bar, and a lot more fake listings

I still open LinkedIn Recruiter a few mornings a week. Not because I miss agency life. Because friends keep forwarding me “urgent” roles that smell wrong, and I can usually tell in two minutes whether the requisition is a job or a prop.

The 2026 IT market is not a crash and it is not a boom. It is a thinner market with a louder front door. There are fewer real seats than the post-2021 muscle memory expects, the bar for those seats is higher in a specific and sometimes stupid way, and a disgusting share of what you see on Indeed, Wellfound, and Easy Apply is not a job at all.

If you are treating every green “We’re hiring” badge as a signal, you are volunteering for unpaid labor.

Fewer jobs, not fewer engineers

Headcount did not snap back. A lot of companies that cut in 2023 and 2024 discovered they could ship with a smaller platform team, a contractor for the mobile app, and Copilot on the boring glue. Some of that is real productivity. Some of it is deferred maintenance wearing a productivity costume. Either way, the requisition did not return.

When a seat does open, it is often a replacement, not a net-new squad. Replacement hiring is meaner. The last person who sat there left a production system and a Slack folklore. The hiring manager wants someone who can inherit both in six weeks. That is a senior-shaped ask even when the level on the Greenhouse form says “mid.”

I keep a private list of companies I used to place people into. In 2021 a Series B with a messy React/Node app would open three backend roles and a “full stack” that was actually CSS. In 2026 the same company, now cash-flow-conscious and slightly ashamed of its AWS bill, opens one “Staff-leaning senior” and a contract for the checkout rewrite. The work still exists. It is bundled into fewer humans.

Juniors got hit first and stayed hit. I am tired of the industry pretending this is mysterious. If you can paste a ticket into Cursor and get a passing Jest test, a manager under budget pressure will try that before they try a new grad. Sometimes they are wrong — the model does not know why the feature flag in LaunchDarkly is sticky for EU users — but they will be wrong for a quarter before they reopen the junior req. That quarter is your market.

The bar moved, and not only upward

The bar is higher in the ways that cost the company little and cost you evenings. Take-homes got longer, then got “optional,” then quietly became the filter. System design rounds assumed you have run Kubernetes in anger even for a role that deploys to a couple of ECS services. Hiring managers ask for “AI fluency,” which in practice means you can talk about evals and RAG without sounding like a keynote, and also that you did not let an agent invent a dependency the repo does not have.

What the bar is not is uniformly more rigorous. A lot of loops got worse. I have watched on-sites where four interviewers ran the same leetcode-adjacent problem because nobody owned the loop in Ashby. I have seen take-homes that were unpaid product work — “build us a small billing prototype against Stripe test mode” — dressed as assessment. That is not a higher bar. That is a company using candidates as a design studio.

The parts I actually respect:

  • A scoped take-home with a time box, a paid option, and a review that cites your choices. Rare. Real when it happens.
  • A pairing session on their repo or a sanitized slice of it. You learn the job. They learn you.
  • A hiring manager who can name the first three tickets you would own. If they cannot, they are shopping for a vibe.

The parts I tell people to walk away from: unlimited take-homes, “culture fit” as the only note after a strong technical screen, and any process that makes you sign an NDA before they will tell you the stack. The stack is not a secret. The secrecy is the tell.

A recruiter inbox and job board tabs open on a laptop at night

Fake listings: the taxonomy I use

Not every stale post is a scam. Not every scam looks stale. I sort the junk into five buckets. You will waste less year if you learn the buckets.

1. The evergreen req

The role has been on the careers page since last spring. The Greenhouse link still works. The hiring manager will take a call. They will not make an offer unless a unicorn walks in, because the headcount is “approved in principle” and frozen in practice. Finance has not signed. Recruiting is told to “keep the pipeline warm.”

Tells: the same job posted on a 30-day cycle; the description still mentions a product that the company sunset; the recruiter cannot name an interview week. Ask: “When did you last make an offer for this req, and is the start date funded this quarter?” If that question makes them vague, you are a pipeline metric.

2. The internal-already-decided

Labor law or an immigration process or a DEI scorecard required them to post externally. The person is already sitting in the seat on a contract-to-hire, or they are a referral from the VP’s last company. You can still interview. You cannot win. I used to run these. I did not enjoy it. I still posted them because legal said so.

Tells: unusually fast first screen and then a two-week blackout; a “we decided to go another direction” with no feedback after you were clearly qualified; a req that matches one LinkedIn profile in the company to an uncomfortable degree.

3. The brand advertisement

Some companies keep “we’re growing the platform team” live because it looks like momentum for customers, investors, and employees who are nervous. There is no req in Lever. There is a designer who updates the page. Engineering leadership finds out when candidates apply.

Tells: apply via a Typeform that is not connected to an ATS; no recruiter name; the same four roles listed for every office. Search the company on Blind or Teamblind and you will often find an employee asking “are we actually hiring this.”

4. The data-harvest and the visa fish

Easy Apply is a gift to people who want résumés. Some “startups” exist to build a candidate database they can sell, or to look busy for a staffing arrangement. Some posts are written to attract people who will pay for a relocation “service.” If the only interview is a WhatsApp call and a request for your passport scan before you have met a hiring manager, stop.

I am not being precious. I have seen the passport version more than once since 2024. The market being tight makes people less picky about the first conversation. That is what the fishers are counting on.

5. The AI sludge

This one exploded. A generator writes 80 near-identical “Senior Full Stack Engineer (React, Node, AWS, AI)” posts, sprays them across Indeed and LinkedIn, and a commission-only recruiter hopes one of them sticks. The salary band is a fantasy or missing. The company name is a holding LLC. If you apply, you get an automated screen that asks you to record a one-way video in HireVue for a role that may not have a manager.

Tells: the JD lists every fashionable noun; “10+ years of Rust” at a two-year-old company; the LinkedIn job poster’s account is three weeks old and has 11 connections. Reverse-image the company logo if you have to. I have.

Printed job descriptions and a red pen marking stale requisitions on a table

How I sanity-check a role in fifteen minutes

I do this for friends. You can do it for yourself.

  1. Find the req in the company’s own ATS — Greenhouse, Lever, Ashby, Workable — not only on a job board. If it does not exist there, it is a reprint or a ghost.
  2. Check the posting date and the last bump. LinkedIn lets companies bump. A nine-month-old role that was “reposted 2 days ago” is a smell, not a fresh seat.
  3. Look at engineering headcount on LinkedIn over 12 months. Flat or down, plus a pile of open roles, is a story. Ask them to tell it.
  4. Read the last three engineering blog posts or GitHub activity. A company that has not shipped a public word in a year but is “aggressively hiring 12 backend engineers” is selling a slide.
  5. Ask for the name of the hiring manager and look at their team. If the manager has twelve direct reports already and the role is “to build a new platform org,” you are hearing a hope.

None of this is cynicism as a personality. It is filter design. Your time is the scarce resource. The market is counting on you not to treat it that way.

What still works when the listings lie

Warm paths beat boards. That has always been true. It is more true when the boards are polluted. A former teammate who will drop your name in a Slack the hiring manager actually reads is worth more than forty Easy Apply clicks. I say this as someone who used to live on those clicks.

Specific proof beats generic seniority. “Senior engineer, 8 years” is a commodity sentence. “I migrated our billing webhooks off a cron onto Temporal and cut Stripe dispute-time pages by half” is a reason to talk. In a thin market, anecdotes that smell like production get meetings. Tool lists do not.

Narrow the target. Applying to every “backend” role is how you become a résumé that looks desperate to an ATS keyword pass. Pick a slice — payments, data infra, mobile, SRE — and write the first two paragraphs of your LinkedIn like that slice is the only job you want. You will get fewer inbound messages. The ones you get will be less fake.

Talk to recruiting like they are people who might also be trapped. A good recruiter knows which reqs are theater. A blunt, polite question — “Is this funded, and did you hire against it this quarter?” — will sometimes get you an honest no. An honest no is a gift. It returns your week.

The higher bar I would actually train for

If you have limited study time, I would not spend it collecting another language. I would spend it on the parts of the job that models still make a mess of and that hiring managers still cannot fake-evaluate well:

  • Debugging a system you did not write. A take-home that is a broken repo is more honest than a greenfield TODO app.
  • Writing a short design that names the failure mode. Not a 12-page RFC. A page that says what happens when the webhook is delivered twice.
  • Showing judgment about AI. “I used Claude to draft the test list and I threw out the ones that asserted implementation details” is a 2026 answer. “I pair with ChatGPT on everything” is a 2023 answer and interviewers are tired.

Leetcode still appears. I would not pretend otherwise. I would also not let it be the only story you tell yourself about why you are not getting offers. In a market this noisy, silence after an application is usually a ghost job or a résumé that never reached a human. It is not a verdict on your binary trees.

What I tell people who think they are crazy

You are not imagining the fake listings. You are not imagining that “entry level” now wants two years of production on-call. You are not imagining that some companies are running a hiring brand and a hiring freeze in the same quarter.

You should also not invent a conspiracy that nobody is hiring. Real roles exist. They are fewer, they hide behind people you already know more often than they hide behind Easy Apply, and they go to candidates who can talk about a system they have already hurt themselves on.

Treat the job board as a rumor mill. Treat the ATS page, the hiring manager’s name, and a funded start date as the job. If you cannot get those three, you do not have a process. You have content.

I would rather you apply to six real reqs this month than sixty ghosts. The market is already wasting enough of your optimism. Do not donate the rest of it to a listing that was never a chair.

More articles for you