All posts

Picking up React after five years of Spring Boot

What transferred from backend, what didn’t, and why TypeScript felt strangely familiar.

  • #react
  • #typescript
  • #frontend
  • #learning

After about five years living in Java and Spring Boot, I joined a team doing front-of-the-stack work in React and TypeScript. Suddenly I was the beginner in the room again — which, as someone who teaches, I think is a healthy place to visit regularly.

TypeScript felt like coming home

I’d braced for JavaScript’s reputation for chaos, but most teams now write TypeScript, and after Java its type system felt familiar fast. Generics, interfaces, union types — different syntax, same instinct: make illegal states hard to represent and let the compiler catch your mistakes before a user does.

The mental model had to flip

The hard part wasn’t syntax, it was the shape of the problem. Backend work is mostly request in, response out — a function runs, returns, and forgets. A React UI is the opposite: long-lived components holding state over time, then re-rendering as that state changes. I spent my first weeks reaching for request/response thinking and getting surprised by re-renders until the model clicked.

What transferred more than I expected

  • Separation of concerns. Keeping data-fetching, logic, and presentation apart is the same discipline as keeping controllers, services, and repositories apart.
  • Testing instinct. Backend taught me to test behaviour, not implementation; that maps cleanly onto component testing.
  • Small, honest units. A bloated React component smells exactly like a bloated service class.

What genuinely caught me out

The compiler doesn’t hold your hand the way the JVM and Spring do. There’s no framework quietly wiring dependencies for you; rendering is a model you have to learn, and hooks have rules you only appreciate after breaking them once.


Being a beginner again is uncomfortable in the best way. It rebuilds empathy for the people I train, and it’s a good reminder that “senior” is a measure of how you learn, not how much you already know.