This question came up in a chat with my team: “How do you think about different levels of experience?”. It led to a great discussion, and I think this perspective is worth sharing more widely.
In software engineering, experience isn’t just about how many years you’ve been in the game. I talked a bit about this in my previous post on The Quiet Power of Pattern Matching. Real experience shows in how you tackle problems, build solutions, and turn ideas into something that actually works.
Personally, I find it useful to think of experience in three broad stages: engineers with no experience, engineers with some experience, and engineers with extensive experience.
When you have a clear sense of which stage you’re in, it’s much easier to know what to work on next. It gives you direction and helps you grow faster by setting goals that actually match where you are right now.
Engineers with no experience
This is the stage where theory hits the real world.
Most beginners come in fresh, maybe from university, a coding bootcamp, or an online course. They’ve spent a lot of time absorbing ideas about how things should work, learning stuff like design patterns, clean code, best practices, and system architecture.
But knowing the theory is one thing. Putting it into practice is a whole different story.
And it’s totally normal to struggle here. Turning concepts into working code can feel overwhelming. You’ll make mistakes, probably a lot of them. That’s not the problem. The real problem is not learning from those mistakes.
At this stage, the goal is to learn fast. Figure out what went wrong, why it happened, and how to avoid doing it again next time.
Engineers with no experience will learn the paths that lead to mistakes and use this knowledge to prevent future errors.
Engineers with some experience
This is the stage where you need to build your experience bank.
Engineers with some experience have moved beyond theory and into the hands-on world of real projects. They’ve dealt with actual problems, started to notice recurring patterns, and built confidence in getting things done.
At this point, they’re pretty good at solving problems, but they might not always see the curveballs coming.
Foresight is still a work in progress. This stage is all about stacking up more experience, trying things, breaking things, fixing them, and learning along the way. It’s not just about avoiding mistakes they’ve made before, but also starting to spot and prevent the ones they haven’t seen yet.
Engineers with some experience can identify not only the paths that led to their own mistakes but also predict other paths that might lead to similar issues, allowing them to prevent a broader range of mistakes.
Engineers with extensive experience
This is the stage where you will think more about anticipating and preventing mistakes from happening.
What really sets experienced engineers apart is their ability to see problems before they happen. They’ve been through enough projects, some smooth, some rough, to build a kind of mental model of what works and what doesn’t. That instinct helps them avoid a lot of unnecessary pain, not just for themselves, but for the whole team.
But it’s not just about being good at solving problems. Extensively experienced engineers tend to take a step further. They guide others, spot patterns early, and help the team stay out of common traps. They’re always looking for better ways to do things. They ask questions like “Is there a simpler way to do this?”, “How can we do this better?”, etc.
Eventually, they move from just reacting to the issues to building systems that prevent the issues in the first place. They have a deep understanding of best practices and help embed them into the team’s habits. They know that building great systems isn’t a solo effort. It takes trust, collaboration, and a shared mindset of learning and growing together. That mindset doesn’t just improve the code, it helps to shift how the whole team thinks and solve problems.
Engineers with extensive experience can foresee potential issues from the starting point and implement strategies to prevent mistakes from occurring in the first place.
For leaders, this perspective allows you to better support your team. You can set the right expectations, give more targeted feedback, and offer opportunities that match each person’s level. It also helps you spot potential early and grow your people in the right direction.
For individual contributors, knowing where you are helps you focus. You can double down on the skills that matter most right now, instead of trying to learn everything at once. You’ll also be better equipped to ask for the right kind of support, take on suitable challenges, and track your own progress.
When everyone understands their stage and what comes next, the team grows together with clarity, purpose, and momentum.