One of the first major bugs I hit as a junior developer looked simple at first.
My React frontend refused to talk to my Express backend. The terminal kept throwing errors, the browser showed failed requests, and after a few hours I was convinced I had fundamentally misunderstood how APIs worked.
At first, I did what I think a lot of beginners do: randomly changed things until something worked.
Bad idea.
Eventually I stopped, took a breath, and approached it the same way I used to approach problems in scientific environments: isolate variables and identify root causes.
I started using a simple “5 Whys” approach.
Problem: Frontend couldn’t connect to backend.
Why?
→ The request was failing.
Why?
→ The API endpoint returned a CORS error.
Why?
→ Express wasn’t configured to allow requests from the Vite frontend.
Why?
→ I never added CORS middleware.
Why?
→ I didn’t fully understand how frontend/backend communication actually worked yet.
That single debugging session changed how I think about…