Download EPUB

Second-system effect

Wikimedia Foundation, Inc. Published 4 min read Original article
Summary
The second-system effect is when a successful, small first system is followed by an over-engineered, bloated second system. Fred Brooks coined the term in The Mythical Man-Month (1975), describing IBM's move from simple 700/7000 operating systems to the ambitious OS/360 for the System/360 (announced 1964). Designers of a first system are cautious and produce spare, clean work. The second is more dangerous because confidence grows and every deferred feature, option, and generalization gets added at once, creating something harder to build and evolve. Brooks also noted a variant: refining techniques that became obsolete after basic assumptions changed.

The effect often shows up in major rewrites. Brooks argued teams should expect to build a throwaway pilot to learn what is needed, a view echoed by Butler Lampson's advice to plan to throw one away. Martin Fowler's sacrificial architecture and the Strangler Fig pattern are common mitigations, along with incremental replacement. Brooks suggested resisting functional ornamentation, making resource costs visible per feature, and keeping experienced architectural leadership. Practical tactics include validated requirements, staged delivery, strict scope control, and architectural reviews that challenge speculative features.

From Wikipedia, the free encyclopedia

The second-system effect (also second-system syndrome) is the tendency for a successful first system (often small and relatively elegant) to be followed by a second system that becomes over-engineered or bloated. The effect is commonly attributed to increased confidence after the first success and to accumulated ideas that were deferred from the first system and then added en masse to the second.[1][2]

Fred Brooks introduced the phrase in The Mythical Man-Month (1975) while describing IBM's transition from relatively simple operating systems for the IBM 700/7000 series to the much more ambitious OS/360 for the IBM System/360 family (announced in 1964).[3]

Description

In Brooks's formulation, an architect's first system is often "spare and clean" because the designer is still learning and is cautious about uncertain generalizations. The second system is "the most dangerous" because the designer is more confident and is tempted to incorporate every previously deferred improvement, optional feature, and generalization, resulting in a successor that is harder to build, understand, and evolve.[4]

The effect is closely related to feature creep and to design over-generalization, where the second system attempts to anticipate too many future needs at once rather than serving current, validated requirements.[5]

Additional manifestation

Brooks also described a second variant of the effect that is not primarily about adding features: a tendency to refine techniques that have become obsolete because the system's basic assumptions have changed (for example, optimizing around an old hardware or operational model after the environment has shifted). He cited OS/360 as containing many examples of this kind of misapplied refinement.[6]

Relation to rewrites, prototypes, and planned replacement

The second-system effect is frequently discussed in the context of major rewrites (a "version 2" or second implementation), but it can occur in any second large-scale system built after an initial success.

In The Mythical Man-Month, Brooks separately argues that teams should often expect to build a pilot (or throwaway) system to learn what is actually needed; the management question is whether to plan for that throwaway in advance or to mistakenly ship it as the final product.[7] This view is echoed in later system-design literature: Butler Lampson recommends "plan to throw one away" and notes that if there is anything genuinely new about a system's function, the first implementation will likely need to be redone.[8]

As a result, some teams deliberately schedule a second implementation to remove early mistakes, false generalizations, and exploratory scaffolding from the first iteration. This "planned replacement" approach is sometimes framed as sacrificial architecture: accepting that parts or all of the current architecture will be replaced once the domain is better understood, and designing in ways that make replacement easier when the time comes.[9]

A common mitigation is incremental replacement (often described as the "Strangler Fig" approach), where new functionality is built around the legacy system and gradually replaces it, reducing the risk of a single all-at-once second system.[10][11]

Mitigation

Brooks suggested that avoiding second-system failure requires explicit discipline, including:

  • resisting "functional ornamentation" and unnecessary generalization,
  • making resource costs visible for small features (e.g., budgeting memory and performance costs per capability),
  • ensuring experienced architectural leadership (including architects who have already designed multiple comparable systems).[12]

In practice, mitigation strategies often include prioritizing validated requirements, staged delivery, strict scope management, and architectural review processes designed to challenge speculative features.

See also

References

  1. ↑ Brooks, Frederick P. Jr. (1975). "The Second-System Effect". The Mythical Man-Month: Essays on Software Engineering. Addison-Wesley.
  2. ↑ Raymond, Eric S. "second-system effect". The Jargon File. Retrieved 2026-01-26.
  3. ↑ Brooks, Frederick P. Jr. (1975). "The Second-System Effect". The Mythical Man-Month: Essays on Software Engineering. Addison-Wesley.
  4. ↑ "The Mythical Man-Month (PDF)" (PDF). Retrieved 2026-01-26.
  5. ↑ Raymond, Eric S. "second-system effect". The Jargon File. Retrieved 2026-01-26.
  6. ↑ "The Mythical Man-Month: The Second-System Effect (excerpt/quotes)". Retrieved 2026-01-26.
  7. ↑ Brooks, Frederick P. Jr. (1975). The Mythical Man-Month: Essays on Software Engineering. Addison-Wesley.
  8. ↑ Lampson, Butler W. (1983). Hints for Computer System Design (PDF). IEEE Software. Retrieved 2026-01-26.
  9. ↑ Fowler, Martin (2014-10-20). "Sacrificial Architecture". martinfowler.com. Retrieved 2026-01-26.
  10. ↑ Fowler, Martin (2024-08-22). "Strangler Fig Application". martinfowler.com. Retrieved 2026-01-26.
  11. ↑ "Strangler application pattern". microservices.io. Retrieved 2026-01-26.
  12. ↑ "The Mythical Man-Month (PDF)" (PDF). Retrieved 2026-01-26.

Report this article

Keep this one

14 days free, no card. Then $60 a year ($5 a month, billed yearly) or $10 a month.

Your saves stay readable and exportable, even if you stop paying.