This is the first of a series of posts on the non-technical challenges of senior software developers.
In Becoming A Technical Leader, Gerald Weinberg describes skill growth as a series of plateaus, ravines, and leaps. After plateauing for a while, progress requires that you think beyond your existing strategies and tactics, and try something new. But stepping out of your comfort zone means fumbling your way through false starts (and trying things that might not work at all!). So your effective skill level necessarily drops for a while, before you find and master a new set of approaches which eventually cause your overall skill to leap up.
In my experience, this "ravine" can be particularly acute for senior engineers who are trying to advance to even-more-senior levels. For your entire career, you've overcome new technical challenges, pressing through modest ravines associated with learning a new programming paradigm or working at a different level of the stack. And now you're an accomplished engineer, a model for others, and you want to know how to get promoted to "staff" or whatever the next level on the engineering ladder is.
But you've run into some problems:
Nobody will tell you what to do to get to the next level. Instead they say cryptic things like "if I have to spell it out for you, you're not doing it", or "everyone's path is different".
You're used to thinking of growth as technical growth, but now you have to grow in other ways—your boss keeps using words like "leadership", "leverage" and "alignment"—which may be foreign to you, or at least not as comfortable.
People expect you to solve problems you didn't create, even when others seem to be directly getting in the way of solving those problems.
You may not be placed in an official "leadership role", so instead of having a title that makes others respect you, you're expected to show informal leadership and "influence without authority".
This isn't a ravine, it's a chasm!
This is part of the reason why, at many companies, "senior engineer" is considered a "career level". In other words, at this level there's isn't "up or out" pressure from your boss to get promoted—there's a recognition that "staff engineer" (or whatever the next level is called in your org) is a bit of a different ballgame.
So if you are happiest when you are writing software with your own hands—or if it just doesn't sound appealing to focus your professional growth on relational skills and business strategy—that's fine! There are plenty of jobs for you (probably including the one you currently have). Companies need senior engineers. It might be time to stop assuming that you have to get promoted, and look for other ways to gain more recognition, compensation, or whatever it is you want that "getting promoted" might be a proxy for.
But if you want to grow your leadership skills to multiply your impact—then get ready to feel uncomfortable. Expect that, for a while, you may not even understand what's being asked of you. You're in the ravine of the senior engineer. It's dark in here, and the only one who can find the way out is you.
(I will try, however, to shine a little bit of light. That's what this series of posts is about.)
Just remember that there is a leap after the ravine!
Next post in the series: Why your ideas aren’t getting traction