Performance Engineering

Fast by Default

Build Fast, Stay Fast
The Philosophy

Fast by Default is a software development model created by Den Odell. It treats performance as a first-class requirement, shaping decisions in architecture, code, testing, deployment, and team habits. The goal is to build systems where speed and responsiveness emerge naturally from everyday work instead of being retrofitted in a rescue mission after users complain.

"Fast by Default is not a tool or framework. It is a disciplined way of building software that stays fast as it grows."

Fast by Default breaks the Performance Decay Cycle—the predictable loop of shipping, complaining, panicking, patching, and repeating that plagues most engineering teams. Instead of treating speed as something to fix later, it becomes a natural outcome of how the team builds software every day.

A System Is Fast by Default When:

  1. 1The architecture leaves room for speed by steering clear of designs that will inevitably be slow.
  2. 2Developers can see how their work affects performance while they are still writing the code, not weeks after it ships.
  3. 3Automated budgets and checks catch slowdowns before they reach production.
  4. 4Decisions are guided by data from real users, so the team focuses on the problems that actually affect people.
  5. 5The whole team shares responsibility for speed, working together to keep the software responsive for every user, device, and location.

The Seven Principles

I

Design for Speed Before You Write Code

Treat performance as a requirement from the start, during planning and architecture, rather than leaving it until later when problems are harder to fix.

II

Make Performance Visible During Development

Give developers tools and workflows that show how their changes affect speed, so they can spot slow or blocking operations while they are still working on the code.

III

Protect the Experience with Clear Budgets

Set clear limits on the things that slow users down, such as response times, payload sizes, and startup costs, then enforce those limits automatically.

IV

Optimise Complete User Flows

Users experience complete journeys through your software, not isolated screens, so test and improve the full flow including transitions and the moments between actions.

V

Use Real-World Data to Guide Decisions

Let real user experience guide your priorities by tracking what actually happens in production, from response times to errors on the devices your users really have.

VI

Treat Performance as a Shared Responsibility

Speed is something the whole team creates together. Everyone has a role to play, whether they work on the backend, frontend, design, testing, or infrastructure.

VII

Prevent Decay Through Regular Cleanup and Review

Performance tends to decline as software ages, so set aside time to review dependencies, remove unused code, and check that your most important flows still perform well.

Start Here

If you do nothing else, start with these three moves.

One principle

Think about speed before you start coding, treating performance as something you plan for rather than fix later.

One practice

Make performance visible while you work, so developers can see slow operations and resource costs as they write code.

One check

Set a simple budget for something that matters, like response time or payload size, and have your build process enforce it automatically.

Taken together, these three actions move a team out of the performance decay cycle and into the Fast by Default mindset.

The Fast by Default Cycle

Fast by Default uses a simple recurring loop that keeps systems fast as they grow.

Fast by Default cycle diagram

Measure

Start by understanding what users actually experience, then work out where speed matters most and what performance issues are costing you.

Build

Design and write systems that perform well under the conditions your users will actually encounter.

Own

Keep checking performance through automated tests, budgets, and tools that make slowdowns visible before they reach users.

Maintain and Refine

Watch how real users experience your software in production, then use what you learn to guide your next round of improvements.

The cycle repeats continuously. Teams that follow it do not wait for problems to appear before acting—speed stays healthy because the loop runs as part of how they normally work.

The Five Practical Steps

Hands-On Actions Inside the Cycle

These are the day-to-day actions that bring the Fast by Default Cycle to life. Together they form a repeating loop that keeps your systems fast even as they grow in size and complexity.

Fast by Default practical steps

Architect

Begin with designs that leave room for speed by keeping dependencies simple, thinking about caching early, and avoiding structures that will inevitably slow things down.

Implement

Write code with performance feedback close at hand, so developers can see when something is slow or blocking while they are still working on it.

Verify

Check performance automatically as part of your build process, using budgets and tests that catch slowdowns before they reach production.

Observe

Measure what real users experience once your software is live, tracking response times, errors, and slow operations across different devices and locations.

Refine

Take what you learn from real usage and feed it back into your designs and code, fixing the problems that matter and removing unnecessary complexity along the way.

These steps repeat in sequence as part of the larger Fast by Default Cycle, making sure that performance remains a natural part of how your team works every day.

Is Your Team Fast by Default?

Use this quick self-check to see where your team stands today.

Answer yes or no to each question:

  1. 1Do you catch performance problems during development rather than after release?
  2. 2Are performance budgets defined and enforced automatically in CI?
  3. 3Do you use real user data to decide which performance issues to fix first?
  4. 4Do developers see the performance impact of their changes as they work?
  5. 5Do you run a regular cleanup cycle that removes dead code and unnecessary complexity?

If you answered no to more than two questions, your team is probably working inside the performance decay cycle.

The Fast by Default model offers a way out by making performance part of everyday work instead of emergency work.

Fast by Default Checklist

Here is how to put the model to work in your team.

Architecture

Development

Code Review

CI and Budgets

Testing

Observability

Team Habits

Fast by Default is a model you apply every day, not a tool you install. When teams design for speed, verify continuously, and respond to real users, performance becomes the natural outcome of how you work.

More on the Way

Practical guides, starter templates, and tooling for Fast by Default are coming soon. These resources will help you put the model into practice on real projects.

Join the newsletter below to get updates as new content becomes available.

Newsletter

A monthly email from Den Odell with behind-the-scenes thinking on performance engineering, updates on Fast by Default, and more.

One email per month, no spam.