5 exercises — these adjective–noun pairs are fixed technical terms where choosing the wrong adjective marks you as a non-native speaker. The right word is often counterintuitive to learners.
Fixed collocations in this set
breaking change — not "damaging" or "destructive"
technical debt — not "development" or "programming debt"
tight coupling — not "hard coupling"; opposite is loose coupling
single point of failure — SPOF; always "point", never "source" or "element"
legacy code — the professional term for inherited, hard-to-maintain code
0 / 5 completed
1 / 5
Complete the collocation: "This update will introduce a ___ change — it removes the deprecated v1 endpoint entirely." Which adjective is the established technical term?
Breaking change is the standard term in software engineering. It refers to any change to a public API, interface, or system behaviour that is not backward-compatible and requires clients to update their code. Examples: removing a parameter, renaming a method, changing a return type. You will see it everywhere: in changelogs (BREAKING CHANGE: in conventional commits), release notes, semver discussions (triggers a major version bump), and PR descriptions. "Damaging" and "destructive" are not used in this technical sense. "Critical" means "urgent/important" and is a separate concept (e.g., critical bug). Collocations to learn: introduce a breaking change, ship a breaking change, is this a breaking change?, backward-incompatible (synonym).
2 / 5
A tech lead writes in a backlog comment: "We need to reduce our ___ debt — it's slowing down every new feature." Which word correctly fills the blank?
Technical debt is the only established collocation here. Coined by Ward Cunningham, it describes the implied cost of additional rework caused by choosing a quick solution instead of a better, longer-term approach. It is a metaphor: just as financial debt accumulates interest, technical debt accumulates in the form of slower future development, increased bug rates, and maintenance burden. Common contexts: "we're accruing technical debt", "pay down technical debt", "technical debt backlog item", "high-interest technical debt". Note: "infrastructure debt" (no -al) is sometimes used informally but is not a standard collocation. "Development debt", "programming debt", and "infrastructural debt" are not used by native speakers.
3 / 5
Which of the following is NOT a natural collocation in professional software engineering English?
"Hard coupling" is not a standard collocation — the correct term is "tight coupling" (and its opposite: "loose coupling"). Tight coupling means two components are highly dependent on each other's implementation — a change to one forces a change in the other. This is a core software design concept related to SOLID principles, modularity, and testability. The other three are all natural and common: edge case = an unusual input or condition at the extreme ends of operating parameters; race condition = a bug where system behaviour depends on uncontrolled timing of events; legacy code = old, often undocumented code that is hard to change. Remember the pair: tight coupling ↔ loose coupling, never hard coupling.
4 / 5
An architect writes: "The authentication service is a single ___ of failure — we need to add replicas." Which word fills the blank to form the established technical term?
Single point of failure (SPOF) is a fixed phrase and acronym in systems engineering, reliability, and DevOps. It refers to a component that, if it fails, causes the entire system to stop working. SPOFs are addressed by adding redundancy: replicas, failover mechanisms, load balancers, and distributed architecture. The phrase always uses "point" — no other word fits. You will encounter it in architecture reviews, reliability discussions, disaster recovery planning, and SRE documentation. Collocations: identify a single point of failure, eliminate the SPOF, this creates a SPOF, no single point of failure (used as a design goal). Related: high availability (HA) systems are specifically designed to eliminate SPOFs.
5 / 5
A team wants to describe old, hard-to-maintain code that dates back to a system from 2008. Which adjective forms the correct IT collocation: "___ code"?
Legacy code is the standard and only professional collocation. In software engineering, "legacy" specifically describes inherited systems, codebases, or components that are still in use but are difficult to modify — often because they lack tests, use outdated technologies, or rely on undocumented assumptions. The term is neutral-professional, not derogatory (unlike "old code" or "ancient code"). Key distinction: legacy code is not necessarily old — it is code that is hard to change safely, regardless of age. Michael Feathers' definition: code without tests is legacy code. The others — antique, vintage, ancient — are not used in professional engineering contexts. Common collocations: maintaining legacy code, working with a legacy codebase, legacy system, legacy migration.