What is fail fast?
Fail fast is a philosophy that values extensive testing and incremental development to determine whether an idea has value. An important goal of the philosophy is to cut losses when testing reveals something isn't working and quickly try something else, a concept known as pivoting.
Fail fast is often associated with the lean startup methodology, which businesses use when they want to develop products and services faster and with less financial risk than traditional approaches to product development. The concept of failing fast is also associated with Agile software development.
An important goal of the fail fast philosophy is to avoid the sunk cost effect, which is the tendency to continue investing in something that clearly isn't working because it's human nature for people to want to avoid failure.
The philosophy can also be called fail early, fail better, test early or fail cheaply.
How does fail fast work?
Failing fast seeks to take the stigma out of the term failure. It emphasizes that by learning from a failed attempt, an organization increases the probability of eventual success.
A company that embraces the fail fast philosophy develops products and services incrementally. It continually checks customer satisfaction to make sure the product or service meets customers' needs before investing more time and money in further development. Fail fast is based on iteration and an iterative approach, which refers to a product design process that is improved by repeated review and testing.
The term is characterized as "fail fast, fail often." This points to the benefit of identifying varied points of failure to streamline the innovation process and succeed faster.
To use fail fast successfully, companies should do the following:
- Facilitate a culture of safe failure by removing the negative connotation from failing.
- Acknowledge that most decision-making is reversible.
- Understand a bug before fixing it.
- Track assumptions against experiments.
- Encourage quick, brief objections to proposals instead of nuanced opinions.
- Establish clear criteria for determining whether an incremental development is a failure.
- Invest in flexible assets and people.
Four key steps involved with failing fast are the following:
- Check demand. Verify that your stakeholders or customers actually want what you're planning to develop.
- Be flexible. Consider a variety of ideas when defining the characteristics and features of the product or service under development; avoid preconceived ideas.
- Deal with biggest risk upfront. Develop and test the riskiest part of the process first to fail sooner rather than later and speed the process along.
- Take small steps. Work on small pieces of the development process and check points of failure as you go.
What is a fail fast culture?
A fail fast mentality is a mindset where individuals or organizations quickly identify failures, rather than letting them persist or be discovered later in a development process. By failing fast, developers learn what won't work and can quickly move on to a better approach.
To fail fast effectively, an organization must reframe failure as a positive. Failure should be seen as a necessary input for change and innovation.
In a culture of failure, which is also called a blameless culture, failures are quick and safe. Leaders create a self-organized environment where employees can freely experiment and come up with ideas. Managers also moderate the challenges that employees have to work through. They shouldn't be so easy that no failure occurs, but they also shouldn't be so difficult that a failure discourages innovative thinking.
What is fail fast in Agile development?
Fail fast is considered the driving principle behind the Agile software development methodology. The incremental nature of Agile allows for many small, low-cost failures instead of risking a costly big failure.
Agile development anticipates the need for flexibility during the development process. Code is written in small chunks and shared in a quick, iterative way with other programmers.
Agile focuses on the delivery of individual parts of software instead of delivery of the entire application at once. This approach enables teams to release pieces individually and test the performance of those pieces as they're released. If an incremental release does poorly, team members can recognize it and change or abandon it without sacrificing the entire project.
Agile is outlined in 12 core principles. Several of them relate to fail fast concepts, including the following four:
- Satisfy customers through early and continuous delivery of valuable work. Many quick failures let teams find out what is and isn't valuable.
- Reflect at regular intervals so that teams can determine whether something is failing.
- Break big initiatives into smaller tasks that can be completed fast. Smaller increments create less risk and more opportunity to experiment.
- Measure progress by the amount of completed work. Failing fast creates more individual, measurable increments that can be tallied toward overall progress.
What are the benefits and challenges of fail fast culture?
Some of the benefits of failing fast are the following:
- Low cost. The longer that defects in a project go unnoticed and unchecked, the more they compound and cause damage. Bugs that are incorporated into a finished product are more costly to fix than catching them early in incremental releases.
- Fast feedback. As failures occur, feedback can be incorporated quickly in the continuing development process.
- Innovation. Failing fast celebrates continuous learning, innovation and continuous improvement.
- More options. In highly uncertain environments such as pharmaceuticals or venture capital, it's beneficial to try many different things and fail at most of them as a path to success.
Some of the challenges of failing fast include these:
- Encourages mediocrity. Tolerating and celebrating quick failure can cause teams to try things that are destined to fail if there are no consequences. Instead of iterating with purpose and intention, employees race to complete something, fail and move to the next thing without incorporating the value of the failure. Teams might not give new products room to succeed.
- Requires more cohesion than some teams have. Teams must be on the same page for fail fast to work. They have to review the failed experiments and agree on the value of the failure, as well as determine the next steps to take.
- Spurring adoption can be difficult. It can be initially challenging to train teams to accept failures as a positive. Critics of the philosophy often acknowledge the validity of cutting losses early, but they point out that a philosophy with failure in the name should be avoided because the word has such an undesirable connotation.
Fail fast examples
Amazon has used the fail fast strategy; founder Jeff Bezos is a proponent of the approach. In a 2015 letter to shareholders, he wrote that "failure and invention are inseparable twins. To invent you have to experiment, and if you know in advance that it's going to work, it's not an experiment." In a 2018 letter to shareholders, he doubled down on that sentiment: "As a company grows, everything needs to scale, including the size of your failed experiments. If the size of your failures isn't growing, you're not going to be inventing at a size that can actually move the needle."
Netflix's Chaos Monkey program is another example. The company induces or simulates failure to find ways to improve resiliency and processes. For instance, Netflix has randomly disconnected production services to test the company's ability to recover from infrastructure problems. This practice is known as chaos engineering.
A third example is Mark Zuckerberg's motto for Facebook until 2014: "Move fast and break things." It acknowledges that making mistakes is a natural outcome of a creative, innovative process.
Fail fast vs. fail safe
Fail fast and fail safe are two compatible ideas in systems design, software development and project management.
Fail fast encourages multiple failures at a quick pace. It aims to find new opportunities through rapid trial and error.
Fail safe is a mentality that ensures experiments are safe to fail. That is, when a feature is deployed, stakeholders can rest assured knowing the feature won't crash entire systems or apps.
In Java programming, the terms fail fast and fail safe are opposite iterator types. An iterator in Java is an object that can be used to loop through collections and retrieve elements. The terms work the same way in programming as they do in project management. When a fail fast iterator encounters a modification error when looping a collection, it stops the program. When a fail safe iterator encounters the same thing, it doesn't.
Failing fast embraces small failures as a normal part of a larger undertaking, such as a digital transformation project. Learn why a fail fast approach doesn't always work with digital transformation.