My recent job titles say things like “full-stack developer,” “software engineer,” “web developer.” Useful labels, sure, but I’ve never felt fully at home in any of them.
I get why titles matter. They help people make sense of us on a crowded spectrum. But if you’ve read any of my previous posts, you know I’m not big on labels. My work has rarely been about staying in my lane. It's always been about showing up where I’m needed most and learning fast enough to be useful once I get there.
That instinct didn’t come from a formal role. It’s just who I am. I tend to wander. I ask questions. I plug holes. I follow problems until they’re solved, or at least until I understand them better. That tendency has served me well. It’s made me learn faster than I probably had any right to. It’s helped me connect with teammates who were better than me in some area and pick up what I could. It’s shaped the kind of developer I’ve become.
If I had to pick a home base, it would be the frontend, especially component-driven libraries and reactive frameworks. That’s where I’m most at ease. Long before job listings mentioned React, I was coding in my spare time, turning design files into functioning interfaces. Some of my closest friends are designers, and I’ve learned to translate their vision into code they don’t have to apologise for. I know what makes their skin crawl and what makes them say “that’s it.” This is where I started. As a WordPress intern, converting PSDs into custom themes, getting wrecked by feedback, and iterating until it clicked. That rhythm, translating messy ideas into clean, functional frontends, has never left me. It’s still the way I work. It taught me to be precise. To welcome feedback. To collaborate, not just code.
But frontend alone didn’t stay enough.
Over time, I started integrating APIs. Then building them. Then debugging databases. Suddenly I was tweaking SEO settings, dealing with deployments, running PPC tests, handling hosting. Not all of it was glamorous. Most of it wasn’t in any official job description. But I liked understanding how things worked around me and then figuring out how I could make them better.
Eventually, I got lost in it.
I wasn’t even sure I was a developer anymore. I was running my own business, delegating most of the actual dev work, and handling high-level stuff like strategy and direction. At some point I realised I had become a generalist. I didn’t love that. I didn’t feel like an engineer, I felt like a tech guy. I found myself at a crossroads: double down on being an entrepreneur, or go back to becoming the kind of web developer I wanted to be. It wasn’t a hard choice.
I went all in on learning again. Studied obsessively. Dug into everything I’d missed. Rebuilt my foundation. And this time, I didn’t abandon the frontend. I built on top of it. I started taking on roles that required full-stack skills: managing databases, writing and testing APIs, handling releases and infrastructure. At first I felt out of my depth. But I stayed with it. Made mistakes. Learned. Improved.
I’ve brought that mindset into every role since.
So, am I a full-stack developer? I don’t know.
I feel more fluent in the frontend world, but I’m comfortable in backend and infrastructure conversations too. I don’t know exactly where I sit on the developer spectrum. Sometimes I feel too frontend to belong in a full-stack room, and too “scattered” to keep up with frontend purists.
But honestly? I don’t regret a thing.
I followed my strengths and tackled my weaknesses. I stayed open-minded and curious. I kept moving forward,even if the path didn’t always look neat. That made me easier to work with, quicker to adapt, and better at seeing the big picture.
Could I have grown faster by picking one lane and sticking to it? Maybe. But regrets don’t write better code.