The career level in the software engineering industry represents a promotion level where one has no expectation to promote further and can comfortably remain put. At most engineering companies, this level is called “Senior Software Engineer” and follows after Junior and Mid-level promotions. The career level marks the end of the typical software engineer career ladder.
Reaching this level feels very personally rewarding and fulfilling. Starting at junior engineer level, promotion to this level typically takes years and may not be a linear path. In some sense, promotion to the career level means you’ve “made it” and have proven yourself worthy of being a competent, independent engineer. It’s like a graduation, where your diploma is the status of the career level title, representing your personal accomplishments and skills built throughout the promotion journey.
I personally felt very proud when I reached Senior Software Engineer. I considered this the most important milestone in my career: I felt like I finally built the career I had always dreamed of and was working toward. I felt confident and validated in my skills to be a software engineer, and I could finally just enjoy and be fulfilled by my job. What I enjoyed most is the lack of promotion pressure. I didn’t feel any pressure to prove myself anymore and could enjoy my paychecks. Instead of being driven by career progress and a form of imposter syndrome, I felt that I was actually good enough to remain as is for once.
Being at the Career Level
After reaching the career level, an engineer faces a real emotional tension between job stability and novelty.
The career level represents a very simple and straightforward work lifestyle. You are effective enough to deliver without the pressure for professional growth. This is the level where I’d argue you can treat it as a job and nothing more. As Will Larson describes in Staff Engineer, there is no company expectation to promote past senior engineer, not without having to pivot into management or technical leadership. You have already succeeded in climbing the mountain, and any future work will entail climbing a similar sized mountain.
Entering the career level introduces a vague sense of stagnation, given the lack of pressure to move upward. Expectations are always the same: simply complete the assigned work based on business needs. The same Jira board will fill up with tickets for the coming sprint and gradually burn down in the coming days, only to refill in a couple weeks. The cycle never stops, and you go through the motions as this becomes your entire routine. You may even become a “lifer” or someone who spends their remaining career at the same company at the same level.
It’s perfectly reasonable to feel comfort and stagnation simultaneously: they define the career level mentality. But this conflict makes it difficult to make meaningful career choices. Unlike the career ladder climb from junior to senior software engineer, there is no clear guidance past the career level. What should one pursue next?
Exploring Career Directions
For some outside perspective, let’s look at current academic research into career direction. Socioeconomic researcher Meng-Chi Chen describes three “Axes of Success” that describe career trajectories in three dimensions:
- Wealth: capital accumulation and economic optionality
- Autonomy: control over task selection, temporal allocation, strategic direction
- Meaning: social impact, problem important, personal replaceability
Without seeking change, the career level offers a very reasonable balance of all three dimensions. There are many practical reasons to remain at this level without further career progress:
- Software engineers are generally paid very well
- Career level engineers have the expertise and autonomy to make architectural choices within their domain, a source of career fulfillment
- Software engineering can be a source of passion and a means to an end for other life matters (raising a family, funding a side hobby, etc)
On the other hand, remaining at the career level can atrophy your skills if you don’t continually improve. Stagnation can feel very boring and demotivating, and some wish for some novelty. This can take the form of a new company, industry, job role, or other forms of side-gigs. Every person values each dimension differently, but for those pursuing a transition, there are ways to achieve each of these in the tech industry:
- Switch companies to a higher paying competitor or industry
- Pursue a technical or leadership promotion to gain more scope
- Join a mission-focused startup where you will meet like-minded people
Any career change can feel rewarding, just like the career level promotion. The tech industry has a very career driven mindset where all careers and companies should be progressing and evolving in some way, and career change helps break the stagnation induced by the career level. On the flip side, building a professional career can be exhausting, frustrating, and yield unsuccessful. Your previous graduation to senior software engineer now becomes the starting line, and you have to repeat a similar yet much more arduous process once again, on top of the Jira tickets you are still expected to complete. There is merit to the comforts of the career level.
Whether to remain or make a transition is entirely a personal choice. But regardless of your day-to-day career level, there are still other avenues to achieving long-term fulfillment.
The Career Engineer Mindset
I believe it essential to remember what made you reach the software industry career level. The practices, principles, and mindset that taught you to get that far should not be thrown away but be continually refined and applied.
I define a career engineer as one comfortable with the craft of software engineering.
Software engineering encompasses a variety of dimensions, technical and personal. There is the technical aspect represented by the software development lifecycle: best practices around testing, deploying, monitoring, and incident handling define the core of developing good software, and this is the baseline expectation of any software engineer.
There are intrapersonal skills expected of an engineer, centered around technical growth and mastery. Integrating a new library, developing in a new language, trying out a new toolchain or IDE, these are all part of engineering culture but require a developer’s personal curiosity and capacity for growth. The software industry regularly evolves and innovates. The very same task, such as standing up a full stack website, gets more and more streamlined and abstracted over time as technology improves and evolves. It is essential for the career engineer to follow along with the industry and embrace the novelty that comes with it. Jira tickets become a proxy for professional development and experimentation.
Interpersonal skills are also required at the career level. Being able to work with your boss, a product manager, a coworker, and other stakeholders are basic skills that don’t go away. Soft skills like communication and mentorship take practice but are still essential to the software engineer job (Tanya Reilly refers to this as “glue work”).I don’t think one ever “learns” how to do all this, but one simply gets better at it over time. You will never be perfect at it, so you always enjoy every improvement you make.
The Career Engineer’s Purpose
In my eyes, the career engineer can be a software engineer, manager, product lead, or a multitude of other roles. Regardless of the role, within the career engineer is a personal purpose at stake. Purpose comes in a variety of shapes:
- Passion for building software
- Ambition over career prestige and status
- Desire for economic freedom
- Self-determination to grow a business
A career engineer’s purpose may be multidimensional and even change over time, but it’s important to have some personal motivation to sustain a long term career. Put differently, purpose is your career direction, and it can bring both stability and novelty that you seek as a career engineer.
Since programming as a child, I have always had a passion for building software, regardless of age, job, educational status, or language or tooling used. This continues into my professional career. I may be a “Senior Software Engineer” today, but whether I change roles or get promoted in the future, this remains true to me.
Building a long-term career in the software industry requires a mental shift from the external factors (title, compensation, career progress) to the internal mindset (motivation and growth). You must cultivate a personal identity, the career engineer, and respect the craft of software engineering to be fulfilled in this industry.
