What does the expression “Fail Early” mean, and when would you want to do so?

Essentially, fail fast (a.k.a. fail early) is to code your software such that, when there is a problem, the software fails as soon as and as visibly as possible, rather than trying to proceed in a possibly unstable state.

Fail Fast
by Jim Shore
edited by Martin Fowler
http://www.martinfowler.com/ieeeSoftware/failFast.pdf


Fortunately, there’s a simple technique that
will dramatically reduce the number of these
bugs in your software. It won’t reduce
the overall number of bugs, at
least not at first, but it’ll make
most defects much easier to find.

The technique is to build your
software to “fail fast.”

Immediate and
visible failure

Some people recommend making
your software robust by working
around problems automatically.
This results in the software “failing slowly.”
The program continues working right after an
error but fails in strange ways later on.

A system that fails fast does exactly the opposite:
when a problem occurs, it fails immediately
and visibly. Failing fast is a nonintuitive
technique: “failing immediately and visibly”
sounds like it would make your software more
fragile, but it actually makes it more robust.
Bugs are easier to find and fix, so fewer go into
production.


Also note the related concept of a fail-fast iterator – an iterator that, after certain modifications to the collection outside of the iterator, throws as soon as possible rather than proceed in a potentially unstable, or non-deterministic state.

Leave a Comment