- Ship wins (as defined by generally acceptable metrics.)
- Have someone in management or a PM who is good at selling your wins
Even here, though, you will run into problems. There is always a new VP or leader looking to make an impact. Because you maintain the current systems your team is engaging in WrongThink and new VP has shiny new RightThink (AI, etc). As soon as your code hits prod you have “legacy” code.
New VP can make promises of future, theoretical riches that you can’t compete with, as you maintain the boring, current reality. Reality is not sexy or interesting. You’re in the old guard now.
A lot simply boils down to patronage. Making your higher up VP look successful and being in a position to move with them to their new company.
I think you're absolutely correct and I think it goes one step higher level too.
As a staff engineer, it's very important to make sure people know you are not the code. The code is just a liability - as you said, it's legacy the second it hits prod.
I've found its best to position yourself not as on the side of the "code" but as a EQUAL PARTNER to leadership/product/whoever has power. It's often just a framing problem, too! You can do nearly the exact same things as if you were the BOFH. But just positioning yourself so that leaders see you as an ally in shipping product and impact, vs someone they have to bully to get approvals from on "just building the damn product." Makes it night and day.
>its best to position yourself not as on the side of the "code" but as a EQUAL PARTNER to leadership/product/whoever has power.
That sounds so utopian to me that it's practically ridiculous. Never in my 40+ years working in tech has any higher-up treated me or thought of me as anywhere near equal. I try to treat the people on my team that I manage as close to equal as I can, but the higher ups would really have zero compunction about "letting me go" in favor of the new hot whoever that someone introduced them to recently, or whatever. They very rarely listen to reason about any issue and it's rare that I'd even get to talk to them.
It's been like this at every startup and company I've ever worked for.
> - Have someone in management or a PM who is good at selling your wins
Looking back on my career, one of the single biggest changes I could have made to improve my success was escaping teams with bad PMs as fast as possible.
Great PMs improve everything, but they're hard to find. I spent too much time sticking around on teams where bad PMs were driving us in the wrong direction and failing to interface effectively with the rest of the management team. As soon as something changed that removed those PMs from the situation, everything improved.
Totally agree. Having good PMs (and good designers) is indeed life changing.
And I mean it, it's a change like "going home at 5PM instead of crunching to deliver every other day".
The planning and the selling of the feature make rework much less necessary, plus you can work together and define tasks in a way that are more appropriate for the current software, rather than being stuck in a hamster wheel of changes that don't really push the product forward.
This is why I almost gave up SWE. My skills, abilities, and output had little to nothing to do with my career trajectory, it's only about getting higher ups to sing praises about things that I might not have even done.
Add to that when a new/junior manager comes along, they're too busy trying to show everyone that they're the centre of the universe for any actual progress to be made.
Edits: typos and spellchecker being too smart so words injected that didn't make sense
> it's only about getting higher ups to sing praises about things that I might not have even done.
If a company is so broken that promotions are decided based on factually incorrect information, there's nothing to do other than escape to a different company.
I'm talking about companies that are functioning okay, but they let the PMs drive what the team works on. A bad PM will send the entire team in the wrong direction and waste your time.
In the most extreme example, our PM would get distracted from the goals set by management and want us to do side quests all the time, so the entire team was constantly producing things that management didn't want while missing all of the things they wanted us to do. If your PM is the link between management and the team's directions, a bad PM will sink the team.
> If a company is so broken that promotions are decided based on factually incorrect information, there's nothing to do other than escape to a different company.
To me, this means that every traditionally run company (top-down) must be broken by construction. And indeed, I have never seen or heard of truly fact-based management.
The entire challenge with multi-level management is that you always play a long game of telephone with increasingly less technical people, which are unable (due to lack of time and understanding) to grasp the ground-truth facts without simplification. Thus, management based on hard facts is impossible in this setting, though it is a great theoretical ideal many aspire to.
In practice, doing so is very hard and people are lazy, so the "facts" can become so twisted as to be entirely unrecognizable.
If everywhere you look stinks, it's time to look under your own shoe.
No company is perfect, no team is perfect, no person magically knows what's right to do and has a perfect vision. Even if you get somewhere with the right team, right vision and right priorities, and you stick with them, the world will change and one of those will end up incorrect.
I liked how you phrased that: "promises of future … you can't compete with". That happens so often, and strangely the argument that those promises have never become real the previous 26 times never works. The glorious future sure is amazing!
What would it look like if you were a staff software engineer whose job description didn't include theoretical work, but whose output consisted almost entirely of theoretical work?
That's not an issue of losing political battles, that's an issue of you getting fired very rapidly.
This advice is entirely premised on the idea that you can choose to do theoretical work if you want to, but that it will be a bad idea.
I have never heard of theoretical work but I have heard of shipping every day. I don’t know how often you think is often. But in other places I know people are shipping every day.
It’s not ideal to ship often IMO. How could someone ship something substantial in one day? I work on projects that generate the company additional revenue and if those projects took one day to complete they would fire me because they would really only need a software engineer for four days of the year.
This could not be more true, however the id like to add the patronage goes farther up the chain. They are all just saying want they need to to clear the checks. It an executive has ever actually invented a successful business model I have yet to meet one.
Oh they have invented a successful business model, it's just that it's successful for those in executive positions. The whole C-suite mentality is as successful for execs as it is cancerous for everyone else.
- Ship often to prod (don’t do theoretical work).
- Ship wins (as defined by generally acceptable metrics.)
- Have someone in management or a PM who is good at selling your wins
Even here, though, you will run into problems. There is always a new VP or leader looking to make an impact. Because you maintain the current systems your team is engaging in WrongThink and new VP has shiny new RightThink (AI, etc). As soon as your code hits prod you have “legacy” code.
New VP can make promises of future, theoretical riches that you can’t compete with, as you maintain the boring, current reality. Reality is not sexy or interesting. You’re in the old guard now.
A lot simply boils down to patronage. Making your higher up VP look successful and being in a position to move with them to their new company.