There’s no agreed-upon definition of a senior software engineer. Titles are company-specific, often arbitrary, and calibrated against entirely different benchmarks depending on where you work. A senior at a startup might be a mid-level at a large tech company, and vice versa.

This ambiguity frustrates people, especially early in their careers when they’re trying to understand what they’re aiming at. But I think the ambiguity is actually informative: seniority is about judgment, and judgment doesn’t fit cleanly into a job description.

What seniority is not

It’s not years of experience, though experience is correlated. You can accumulate years without accumulating wisdom β€” spending a decade doing the same thing is not the same as spending a decade growing.

It’s not knowing more languages, frameworks, or tools. Technical breadth is useful, but it’s table stakes at a certain level. The senior engineer in the room often knows fewer current technologies than the newer engineers and compensates with something harder to acquire.

It’s not confidence, though seniority often produces genuine confidence as a byproduct. False confidence β€” performing certainty you don’t have β€” is a liability at any level.

What seniority actually is

Judgment about what to build. Junior engineers tend to solve the problem as specified. Senior engineers question whether it’s the right problem. They’ve been burned enough times by technically correct solutions to problems nobody actually had.

Comfort with uncertainty. Inexperienced engineers often freeze when the requirements are unclear or the codebase is unfamiliar. Senior engineers have learned to make progress in ambiguous conditions β€” to create structure where none exists, to ask the right questions, to move forward while holding the possibility of being wrong.

Understanding consequences. Every technical decision has downstream effects. Senior engineers have made enough decisions β€” and lived through enough of their consequences β€” to think ahead. They know which short-cuts create long-term debt and which pragmatic compromises are fine.

Ability to communicate complexity. One of the hallmarks of genuine seniority is being able to explain a complex technical situation to a non-technical stakeholder without losing the important nuances. This is harder than it sounds and requires understanding both the technical reality and the stakeholder’s actual needs.

Raising the floor. Exceptional individual contribution matters, but senior engineers also improve the people around them. They write code that’s easy to extend, documentation that answers the next question, and reviews that teach rather than just approve or reject.

How it develops

Deliberately. That’s the only honest answer.

You need to put yourself in situations where your judgment is tested β€” where the answer isn’t clear, where the stakes are real, and where you’ll find out if you were right. You need to work with people better than you and pay attention to what they do differently. You need to ship things, watch them fail or succeed, and update your mental models accordingly.

The engineers I’ve seen develop genuine seniority fastest are the ones who treat every project as a learning opportunity, not just a delivery vehicle. They’re curious about why things work the way they do, not just that they work.

That orientation β€” curiosity plus feedback loops plus time β€” is how judgment gets built.