September 2, 2026 Read on martinfowler.com
3.8

Paracelsus Maxim

Technical LeadershipArchitecture

Fowler introduces the 'Paracelsus Maxim' — named after the 16th-century Swiss physician who observed that dosage alone determines whether a substance is medicine or poison — and applies it to software development. He argues that programming practices are rarely simple binaries of good or bad; they vary along two axes: context and dosage. Global data serves as his concrete programming example, where a small amount of immutable global state is useful while excessive global state becomes harmful. The post closes with a call for more nuanced thinking, always asking 'in what contexts' and 'in what doses' when evaluating any practice.

Programming practices aren't inherently good or bad — their value is determined by context and quantity, so every judgment should be qualified by 'in what doses?' and 'in what contexts?'
  • 6

    The difference between a medicine and a poison is dosage.

  • 3

    Few things are simple binaries.

  • 4

    All things are poison, and nothing is without poison; the dosage alone makes it so a thing is not a poison.

  • 3

    A little global data, especially when immutable, can be a handy way of propagating information that may needed anywhere in a program, but it quickly becomes dangerous if there is a lot of it about.

  • 3

    When thinking about when things are good or bad, we should always ask 'in what contexts' and 'in what doses'?

reflective, philosophical, didactic