This period was dedicated to consistent, autonomous practice in web development.
The goal was simple: code often, understand what I was doing, and improve through real projects.
On the frontend side, I worked on React interfaces: components, state and data rendering, user interactions, and API communication with the backend.
I also made significant progress in UI / UX.
My early interfaces were messy; over time, I learned how to structure pages, clarify user flows, and avoid overengineering.
On the backend, I mainly worked with Ruby and PostgreSQL.
APIs, business logic, authentication, email delivery, data management, and code organization.
This phase helped me truly understand how a web project works end-to-end: frontend, backend, and database.
I also practiced algorithmic exercises.
Technically interesting, but with little real-world impact outside interview contexts.
At that point, I had a solid enough technical level to work on real projects.
But the market was tough: Ruby + React in Toulouse, and very few junior opportunities in 2023.
I realized I needed to learn a more in-demand backend language (Node, Java, or Python).