The role of the senior software engineer is an honorable one that should not be viewed as just a stepping stone on a path to CTO, architect, or another higher-level technical role in a career.
My friend and former colleague, Dave Copeland wrote a book titled “The Senior Software Engineer.” The book describes the role of the senior software engineer and teaches you the skills needed to best do that job, with the end goal of delivering valuable software to the business you work for. His intention is to teach the skills that surround the actual programming part of the job, the skills that are needed to actually get the job done in a real work environment.
The role that Dave describes is the most important role on a software team, and everyone who cares about delivering good software should strive to become the definition of an engineer that Dave describes. But people also want a “career,” and they see that as climbing up a ladder of roles. I argue that the role of a senior software engineer is a sufficient stopping place on a career trajectory; it is a title that an engineer should be proud to hold for the rest of his or her career. Here is why.
If you are doing the job effectively, you are contributing more to the actual value of your organization than almost anyone else. But there is no need to stop there, because in this role, you can always improve. You can continuously expand your capabilities and your effectiveness, and thus the value you contribute to the company. As you do this, you will also continue to do the work that you most likely fell in love with originally – the work that brought you to this field to begin with – writing code.
On the other hand, if you choose to move away from the senior software engineer role, your choices are limited and not necessarily likely to satisfy you in the same way. You can strive to become a CTO, an architect, or an equivalent higher-level technical contributor, but the reality of those roles is that you end up doing less technical work and move further away from delivering the core value of the company. The alternative path is to join the ranks of engineering management, which even more explicitly moves you away from technical contributions. Neither of these roles is bad in and of itself, but they are quite different from the pure technical role of a senior software engineer.
So if you cannot become a CTO, architect, or engineering manager, then are you just stuck in a dead-end career as a senior engineer? No. You should not be. You should be encouraged to stay in that role, and you should be incentivized to stay through increased compensation, increased technical responsibility, and increased influence. If you have learned the skills that Dave discusses, then responsibility and influence should come naturally, as they are the results of our meritocracy. As for the compensation side, I highly encourage engineering management to think of the senior software engineer as their most valuable asset and to treat them accordingly.