Menu
Martin Fowler·September 2, 2026

The Paracelsus Maxim: Dosage in System Design

This article introduces Paracelsus's Maxim, "The dose makes the poison," applying it to programming and system design. It highlights that many architectural patterns and practices aren't inherently good or bad, but their utility and potential harm depend on context and the extent of their application (dosage). The core idea emphasizes thoughtful decision-making beyond simple binaries in software architecture.

Read original on Martin Fowler

The "Paracelsus Maxim," originally from a 16th-century physician, states that "All things are poison, and nothing is without poison; the dosage alone makes it so a thing is not a poison." Martin Fowler applies this profound concept to software development and system design, suggesting that few architectural choices are simple binaries of 'good' or 'bad'. Instead, their effectiveness and potential drawbacks are heavily influenced by the *context* in which they are used and the *dosage* or extent of their application.

Applying the Maxim to System Design

In system design, this maxim encourages a nuanced perspective. Rather than rigidly adhering to or outright rejecting certain patterns or technologies, architects should evaluate them based on specific project requirements, team capabilities, and operational constraints. Over-applying a "good" pattern can lead to unnecessary complexity, while a controlled, judicious use of a seemingly "bad" pattern might be the most pragmatic solution in certain scenarios.

📌

Global Data as an Example

The article uses global data as a prime example. While often vilified, a small, immutable piece of global data can be a convenient way to propagate information across a program without cumbersome explicit passing. However, excessive mutable global state quickly introduces significant challenges like race conditions, difficult debugging, and reduced testability. The "poison" of global state is in its unregulated "dosage".

Considerations for Architectural Decisions

  • Context Matters: A solution optimal for a small startup might be detrimental to a large enterprise, and vice-versa. Performance requirements, scale, team size, and regulatory compliance all define the context.
  • Balance and Trade-offs: Every architectural decision involves trade-offs. The maxim reminds us that these aren't always binary choices between 'right' and 'wrong' but often about finding the right balance for a given system.
  • Evolutionary Design: Systems evolve. What might be an acceptable dosage of a particular pattern at one stage might become problematic as the system scales or requirements change. This necessitates continuous re-evaluation.

Understanding the Paracelsus Maxim helps architects move beyond dogmatic approaches to design. It fosters a mindset of critical thinking, where every decision is weighed against its specific context and the potential impact of its extent, leading to more resilient and adaptable systems.

architectural patternsdesign principlestrade-offsdecision makingsoftware architecturescalabilitycomplexity management

Comments

Loading comments...