liveBook · Manning

Cruft

As explained in Architecture Modernization: Socio-technical alignment of software, strategy, and structure

Cruft is avoidable software complexity caused by a codebase differing from its ideal structure or implementation without changing its intended functionality.

Cruft is avoidable software complexity: the gap between a system’s current code and its ideal structure or implementation, without changing intended functionality. It makes software harder to understand, riskier to change, and more expensive to maintain. section 10.2.2

Cruft commonly appears as:

  • Poorly defined boundaries and interactions between parts of a system. section 10.2.2
  • Tight coupling, bad naming, and monolithic code spanning multiple subdomains. section 10.2.2 section 10.3.7
  • Complexity accumulated in a supporting subdomain whose maintenance cost exceeds its business differentiation. section 10.3.7

A frustrating penalty model

Gran Turismo’s online penalty system illustrates complexity that is not necessarily cruft: the user need is clear, but designing rules that handle cutting corners, crashes, and collisions fairly remains intrinsically difficult. Cruft concerns avoidable complexity that could be removed without changing functionality. section 10.2.2

When a supporting subdomain has high complexity, first question whether cruft or a prioritization mistake is consuming investment. If the subdomain must keep evolving, reducing complexity enables change; if not, a smaller team may simply maintain it. Tightly coupled systems require coordinated modernization across affected subdomains rather than fine-grained team strategies. section 10.3.7

Figure 10.15 The suspect supporting pattern

Use the suspect supporting pattern to identify subdomains whose complexity and maintenance cost may be driven by accumulated cruft. section 10.3.7

How Architecture Modernization: Socio-technical alignment of software, strategy, and structure covers it

How deep it goes
Defines cruft, identifies structural forms, and relates it to modernization strategy without prescribing detailed refactoring techniques.
Examples
Uses Gran Turismo’s penalty model and the suspect supporting subdomain as examples of complexity assessment.
What it assumes
Assumes familiarity with software systems, subdomains, maintenance costs, and organizational investment priorities.
What you can do after
Evaluate whether complexity is avoidable, prioritize reduction, and choose coordinated modernization or lightweight maintenance.
How it connects
Connects cruft with software complexity, tight coupling, monolithic architecture, subdomains, maintenance cost, and modernization.

Also explained in

Compare how 2 books explain cruft →

Related concepts

This explainer was generated by Manning's knowledge graph from the text of Architecture Modernization: Socio-technical alignment of software, strategy, and structure. The section links point to the parts of the book it draws on.