A bug fix this week opened up bigger conversations about UX tradeoffs, first principles, and system design.
What started as a fix turned into 3 key milestones — each one clarifying what matters most in the product.
The bug was around state being lost in our front-end app. The fix was straightforward – re-fetch the data from the API.
1. Data may not be available anymore.
The API is returning JSON blobs from a model, being produced every minute. Refetching might mean that the data is gone.
– If we cache it, the data may be stale.
– One first principle: data must be real-time and useful.
We considered redirecting the user back to the landing page to restart the flow.
2. Not great UX?
– Redirecting users without explanation isn’t ideal.
UX and I talked about adding more copy about what happened and giving context.
– We settled on clear, simple copy to keep the UI clear.
3. Could users miss out on data?
UX was front-of-mind at this point, I wondered if a user was missing out on data?
– We debated changing the model or storing the data differently.
– We could flatten the data and store it sequentially.
– But that would impact internal calculations and they were vital.
We decided to keep the existing data architecture.
Lessons learned:
– Tradeoffs deserve time. Rushing decisions often means missing hidden costs.
– Technical choices ripple into UX and product – talk early, not under pressure.
– First principles matter. They keep decisions honest.
If you’re designing flows like this, I’d love to hear what worked for you.