Software Engineering · Chapter 21 of 31
Which language, and what the interview actually tests in each
What 659 job descriptions actually name, why the usual percentages are wrong, and the trap each language sets in an interview.
Two thirds of the arguments about programming languages are really arguments about which industry someone works in. The corpus settles the frequency question; the more useful half of this chapter is what each language's interview actually tests, because that differs far more than the syntax does.
Why the short names break, and why it matters
“Go”, “C” and “R” are ordinary English. “go live”, “go to market”, a bullet labelled (c), an initial, a unit. A regular expression for \bGo\b matches all of them.
The correction is cheap: require the token to appear within about forty characters of another named language, which is what a skills list looks like. Go falls from 52.5% to 36.0%, C from 19% to 9.1%, and R falls to zero — every single match in 659 documents was noise.
Note what the undercount would have been too: searching only for “golang” gives 8.5%, which is just as wrong in the other direction. Most postings write “Go”.
This is the general lesson, not a language one: any percentage taken from job-posting text needs a check that the token means what you think it means. Guides that publish a “Go is in half of all postings” figure have not run that check.
How many languages a posting actually names
| Languages named | Postings | Share |
|---|---|---|
| None at all | 110 | 16.7% — the job is described by domain, not by stack |
| Exactly one | 221 | 33.5% |
| Two | 185 | 28.1% |
| Three or more | 143 | 21.7% |
| Six or more | 5 | 0.8% — the “must know everything” posting is rarer than its reputation |
Half the market names one language or none. That is the argument against collecting languages: the modal posting wants depth in one, and the second most common thing it wants is for you not to care. The 22% naming three or more are mostly platform, infrastructure and data roles where the languages do different jobs — Go for the service, Python for the tooling, SQL for the data — rather than employers wanting a polyglot.
What each one is actually hired for
| Language | The segment that hires it | What it is competing against |
|---|---|---|
| Python 38.7% | Data, ML, platform tooling, automation, backend at startups. The default second language everywhere | Nothing, in its niches. It is the lingua franca and the interview rarely tests the language itself |
| Go 36.0% | Infrastructure, networking, cloud-native services, anything CNCF-adjacent. Kubernetes is written in it, and that pulled an entire ecosystem | Rust for systems, Java for enterprise backend |
| Java 32.6% | Enterprise backend, banking and BFSI, large-scale services, Android. Enormous installed base and a very long tail of maintenance work | Kotlin on the JVM (Java Virtual Machine), Go for new services |
| TypeScript 22.0% | Frontend, full-stack, increasingly backend at product companies. Note it outranks JavaScript 22% to 14% — the untyped job is the smaller market now | JavaScript, which it has largely replaced in hiring language |
| C++ 18.5% | Trading and low latency, games, embedded, browsers, databases, anything where a garbage collector is unacceptable | Rust, increasingly, and losing ground for new work |
| Rust 15.8% | Systems, infrastructure internals, security-sensitive components, some blockchain. Higher than JavaScript in this corpus | C++ for new systems work |
| C# 3.0% | Microsoft-shop enterprise, Unity games. Under-represented here because this corpus skews to product companies and startups | Java, in practice |
The number people misread is TypeScript against JavaScript.
22.0% versus 14.1%. Postings that say “JavaScript” without TypeScript are now the minority of the front-end market in this corpus — which means an untyped JavaScript portfolio reads as dated even to teams whose codebase is still untyped, because they are hiring for where they intend to be.
And Rust above JavaScript is a sampling artefact worth naming honestly: this corpus over-represents infrastructure and platform employers. It is evidence that Rust hiring is real, not that Rust is more in demand than JavaScript across the whole market.
What the interview actually tests, by language
This is the part that transfers. The coding round is nominally about algorithms, but the follow-up questions are language-specific and they are where people lose.
| Language | What the follow-ups actually probe | The common failure |
|---|---|---|
| Python | Whether you know where the abstraction leaks — the GIL and what it does and does not prevent, mutable default arguments, generators versus lists on memory, when NumPy is doing the work and when your loop is | Writing Python that is correct and quadratic. Interviewers ask about the data volume for exactly this reason |
| Go | Concurrency correctness, not concurrency syntax. Goroutine lifetime and leaks, context cancellation, channel closing rules, when a mutex beats a channel, and why the race detector exists | Spawning goroutines with no path for them to stop. It is the single most common Go interview failure |
| Java | The memory model and the collections you chose. Garbage-collection pauses and which collector, equals/hashCode contracts, why HashMap is not thread-safe, and streams versus loops on readability and cost | Reciting design patterns. The JVM questions are the ones that separate candidates |
| TypeScript | Whether you use the type system or fight it. any as an escape hatch, structural typing, narrowing, and that types are erased at runtime — so validation at the boundary is still your job | Believing a type annotation validates external data. It does not, and this becomes a security question |
| C++ | Ownership and lifetime. RAII, move semantics, where a copy happens that you did not intend, undefined behaviour, and which of the smart pointers costs what | Manual new/delete in 2026, and not being able to say what UB means for the optimiser |
| Rust | Whether you can model the problem so the borrow checker agrees, rather than fighting it. Ownership, lifetimes, when Rc<RefCell<T>> is right and when it is a design smell, and what unsafe actually promises | Reaching for clone everywhere, or for unsafe, to escape a design problem |
Does the choice matter for your career?
Less than the arguments suggest, and not in the direction people assume. The language rarely decides whether you get hired; it decides which industries call you. Go and Rust route you toward infrastructure. Java routes you toward enterprise and BFSI, which in India is the largest employer segment by a wide margin. C++ routes you toward trading and embedded. Python routes you everywhere and therefore differentiates you nowhere.
The move that actually pays is depth in one plus fluency in a second that covers a different layer — a compiled service language and a scripting language, or a backend language and SQL. That is what the two-language postings, 28% of the corpus, are describing. Collecting a sixth language is not on the evidence a thing employers ask for: 0.8% of postings name six or more.
And 16.7% name no language at all. Those postings describe a domain, a scale or a system, and they are disproportionately the senior ones — which is the clearest signal in this data about what stops being interesting as you get more senior.
Check yourself