Reproduce the affected journey

Record the action, the data involved, and the conditions under which it becomes slow. Note whether the problem affects every user, a particular workflow, or only a large account.

Separate a consistently slow operation from intermittent delay. A single fast test does not disprove a problem that appears under load or after the application has been running for a long period. Preserve enough context to compare observations fairly.

Break down the waiting time

Inspect the stages involved: browser work, network transfer, application processing, dependency calls, and any queue between acceptance and completion. Use measurements that correspond to the actual path rather than assuming the database is responsible.

Look for changes in work performed as data grows. A page that retrieves or renders every record may need a different boundary, while an external request may be waiting on a supplier. The appropriate fix depends on which stage dominates the experience.

Change one hypothesis at a time

State what you expect a proposed change to improve and how you will check it. Compare representative conditions before and after, including the cases that previously exposed the delay.

Check that the change preserves correctness and does not simply move the wait somewhere less visible. Returning quickly while an unbounded background queue grows is not necessarily an improvement in the complete workflow.

Keep the evidence with the change. It helps future maintainers understand why the optimization exists and whether its assumptions still apply. The result should be a better understood application, not only a faster demonstration of one carefully selected request.

Illustrative scenario

A practical example.

Users report that opening an account is slow, but the homepage still responds quickly. Start with the affected action and its timing rather than assuming the whole service needs more capacity. Compare a typical account with one containing a long history.

Trace where the time is spent: browser work, network transfer, application processing, a database query, or another service. Change one plausible cause at a time and repeat the same representative measurement. A smaller test dataset can make an ineffective change look successful, so keep the workload and conditions explicit. After an improvement, check the slow cases and the normal ones. Record the evidence that supports the diagnosis so the team can recognize a recurrence.

Put it into practice.

  • Define the slow action and a repeatable representative workload.
  • Measure boundaries before choosing an optimization.
  • Compare before and after under similar conditions, including difficult records.

Working through a similar decision?

Tell us about your project