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 FowlerThe "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.
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".
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.