One thing that has stayed constant throughout my career in software engineering is the habit of building side projects.
No matter what I was doing professionally, I usually had something running in parallel. Sometimes it was small, sometimes more ambitious, but the reason was always the same: side projects have been one of the most valuable ways for me to learn.
They give me a space to experiment with new tools, test ideas, and explore approaches in a hands-on way. More importantly, they give me experience. And that experience matters. In technical discussions, planning sessions, or product conversations, I have found it far more valuable to speak from things I have actually built, tested, and struggled through than from theory alone.
Just as importantly, side projects help me stay curious. Professional work naturally focuses on delivery, priorities, and execution. Side projects create room for exploration. They let me follow an idea simply because it is interesting, and that has been one of the best ways for me to keep learning over the years.
Declarative Forms
My most recent example of that is Declarative Forms.
It started as a simple experiment inspired by modern form platforms. I wanted to explore what it would look like to build forms declaratively through YAML, with definitions living in a GitHub repository and the platform rendering them while handling submission flows such as webhooks.
What began as a small project quickly became a much broader learning experience. It gave me room to experiment with React patterns, dynamic component systems, and AI coding agents as part of the development process. Over time, it evolved into a larger monorepo setup with a studio experience and a visual editor for building forms more interactively.
That journey reinforced something I find true of many good side projects: they rarely stay as simple as they first appear.
Beyond Implementation
As the project grew, it pushed me to think beyond implementation. Dynamic forms turned out to be a much more interesting challenge than I expected. Localization introduced important architectural decisions. Documentation became its own discipline, requiring a very different mindset from writing code. I also spent time working with Mintlify during that process and found it to be a useful tool for shaping a clearer documentation experience.
Why It Still Matters
That is ultimately why I still build side projects.
They help me learn in a way that feels practical and real. They sharpen my instincts, expand the way I think about products, and keep me connected to the craft of building. Declarative Forms is simply the latest example of that for me.
If this kind of approach resonates with you, or if config-driven forms sound interesting, take a look at Declarative Forms. It is still evolving, and I would genuinely welcome feedback.