From manual memory management to the JVM — what 100+ days of Java taught me about ecosystem, productivity, and where C++ still wins.

For years, C++ was my comfort zone. Pointers, manual memory management, template metaprogramming — I loved the control. But when I started building real backend systems, the cost of that control became impossible to ignore.

Java surprised me. Not because it was "easier" — but because the ecosystem eliminated entire categories of bugs I used to fight daily. Spring Boot's auto-configuration, JPA's abstraction over SQL, Maven's dependency management... these aren't crutches. They're force multipliers.

That said, C++ taught me how the machine actually works. Understanding stack vs heap, cache locality, and object lifetimes made me a better Java developer. I know what the JVM is doing under the hood because I've done it manually.

The biggest lesson? Pick the right tool for the scale of the problem. For REST APIs, microservices, and database-backed applications, Java + Spring Boot is hard to beat. For systems programming, game engines, or latency-critical code, C++ remains king.

I still write C++ for fun. But for building products that ship, I reach for Java.