> One caveat: my experience comes mainly from working on infrastructure and developer tools at large companies, on teams where engineers have a lot of bottom-up autonomy to influence their roadmaps. In a more top-down environment, there may simply be less room to work this way.
I wonder if the overall trend in tech is that engineers are experiencing less bottom-up autonomy and more top-down controlled environments. I would be curious to see how many tech companies (or the average engineer's experience) have changed from being tech led where engineers have autonomy to being more product management led. My suspicion without evidence is that the overall engineering autonomy has decreased over the years as the culture of tech has (in my opinion) shifted away from tech focus to more business, management, product focus with engineers just as the widgets who are tasked with fulfilling the goals of business, management, product.
all hypothesis, only anecdata
Even outside projects and general work condition it is worse. 10 years back I could just decide when to work from home, or do a few interesting projects show to managers get approval afterwards. Today I have to explain myself to managers and get proper approvals for same thing. And I have been in same place for quite some time so it is not even the case that I have to prove to my new employers first.
Being not much ambitious I use to think after these many years and multiple successful project my win is to be a kind of made guy in that same mid-level position. Supporting , fixing project which I delivered over years and just take it easy, start day late, leave early until retirement.
Turns out things I assumed, don't exist. And even if they do they are above my level. Not worked in big tech, no massive RSU based compensation and with AI flattening difference (in employer's view ) between 2 vs 20 years of experience, story is not going to end great for people like me.
Any individual company is likely to atrophy because continual success breeds fear of change, fear of breaking what's already working. Especially if management rotates and new management didn't actually create the success in the first place.
My experience has been you'll be regularly moved around to mitigate the "bus factor"
If you're seen as highy capable you'll be moved on to firefighting duty.
If you don't set hard boundaries it's also the fast track to great burn out.
In most of my career, especially when in a Staff role, it has been up to me to propose the direction and priority of work within my scope. Usually, this is based on my estimation of the impact to the business (possible new features, security) or operations (devx, efficiency $$$). Obviously I still have to work with product to get things scheduled as they have needs that must be met, but it was as an equal partner. As a very creative person thats usually the space I enjoy the most.
However I still see a lot of "work theater" where directors couldn't care at all about changing the bottom line but just care that work that sounds plausible enough is executed in a predictable way that makes them look good (in fact they get pretty disappointed if something happens TOO fast [like half the estimate] as it illustrates they are out of touch the work they are claiming to represent). What I'm saying is that "do more top-down-product" in theory makes sense as a direction, but in practice I usually see it as wasted energy.
A bit over a year ago, I joined that same company again, as lead of what's technically the same team, this time as an employee, but everything had changed. It was very hierarchical, very top-down, very little freedom, lots of red tape and office politics, and a tedious, slow pace.
The general perception is that JavaScript work in the corporate world is for young people who have no idea what they are doing and lack the maturity to write original solutions. This perception is common from developers who do other work, management, and developers who primarily perform JavaScript work. If I want to be creative or have autonomy to do anything more ambitious than putting text to screen I have to save it for personal side projects or do unrelated work.
MuleSoft work was just more of the same with all decisions funneled to strict silos of a select few and everybody else was just a keyboard pressing stooge.
Yes, that does sound dreadful, but what's worse is that it amplifies the personalities of people who will throw others under the bus for attention and potential rock stars who perform their most diligent work at hiding from that attention.
And you will be ordered exactly where to put that text down to the pixel.
However your design system will be built around a twelve column bootstrap layout which your designer won't follow because "an experience can't be constrained by columns"
There are lots of different routes via staff and above level engineer. However, what they do have in common is working on really hard problems that take a lot of other people to work with. You will typically find your staff and higher level engineers rarely are actually writing code themselves. They are all management, but it's a technical management part.
The thing is, it's really hard to be there because management will constantly assign you various product-focused things and you end up being a widget. And so you have to figure out how to break out of that to say, no, this is the wrong widget and you have to show them that, look, I delivered this widget and when they see it, they should realize, wait, this guy was right. I assigned the wrong widget and he did it and so I need to trust this guy and give him more time to do things that give us the right widget.
Remember, the real goal is to make money for the company. As an engineer, you might say your salary is, say, $200,000 a year. But that is only a small part of it. For every dollar they spend on you, they need to spend $10 on other things to make it work. To pay your salary, you need to make not just enough product to bring enough to pay for your salary. You also have to pay for marketing, sales, product support, other managers, HR, and a bunch of other things I can't even think of off the top of my head. So the real question you should be asking is how do I earn, by actions I do, more than $2 million a year for my company. If you're earning your company $2 million a year as an engineer, they're breaking even on you at best, you should do widgets they trust will work. If they are earning $10 million, that's something that you should be putting on your resume and saying, look, this is why you need to give me a promotion. I am earning this $10 million every year. If you want to do even better than that, make it not $10 million that you're personally doing, but things that, because you're assigning other people to do them, are earning hundreds of millions. If you can earn the company hundreds of millions of dollars a year, you can justify a large salary for yourself, and you keep dozens of other engineers busy doing things.
Or you can take the lazy way out and just be a widget producing what they need you to do. That's good enough.
These days tech is indispensable to most businesses so top down control has been asserted.
Lately, product and my boss have been on board, so it's been fantastic to actually have partners to discuss these "risky" ideas with and better fit them into the roadmap rather than guarantee things which would get us all promoted will be shot down instead. I personally have more bottom-up autonomy than I think I've ever had at $WORK.
That's only anecdata. Another aspect of that tech microcosm is that at various points I explicitly did not have permission to do the right thing and had to be careful with the politics. It only worked out because I was right and because I was okay with the consequences if I had been wrong. Maybe that means I had low autonomy in your definition?
tldr; this advice is probably impractical for a bigger chunk of industry.
Further, foreign business culture is significantly more too-down than American business culture.
Since then, not only have we lost autonomy, but there was no top-down direction to begin with. And there is none now.
Nobody knows what the next incentive to chase is, so they're liquidating headcount and engaging in fraud to appear profitable.
(re: fraud, I'm learning the hard way why my own employer's stock price dramatically improved-- ever since they switched to stack ranking, they just make shit up to PIP and deny severance ahead of layoffs.)
It doesnt make sense that this would happen from an economic perspective at first glance - not unless you consider labor (devs), execs and investors to be three competing groups who are vying for power.
If there's a pattern in the people, it's that more people in charge are less capable of doing the job, because they've grown up in a culture of ignorance. The past 10 years has been dominated by "StackOverflow Engineers" promoted to management, and people who read HN clickbait blog posts and believe it's good advice (it's not). They never had the time, training, or mentorship to learn from decades of experience. And Dunning-Kruger keeps them confident that they don't need to change.
However, on this point:
"the overall engineering autonomy has decreased over the years as the culture of tech has (in my opinion) shifted away from tech focus to more business, management, product focus with engineers just as the widgets who are tasked with fulfilling the goals of business, management, product"
That's exactly what engineers are supposed to do: listen to and enable the business. A mechanical engineer does not dictate the shape of the car. The designer tells the mechanical engineer what the car will look like. It's up to the engineer to make it work. However, it's also up to the engineer to tell the business that you can't fit a 600hp engine in a Mazda Miata without seriously affecting handling. It's supposed to be a two-way street. Good management/leadership knows this and enables it.
So I don't find problems to solve, I try to assess which problems are most urgent, or which solution solves several of them at once. Learning to get that kind of prioritisation right to keep all teams and customers happy and productive is what I'm very proud of in my career.
I get your point. Staff levl engineers should be working on really hard problems that will make a long-term impact, but they often aren't very visible at any one moment. It's only when you look over long-term and you realize that things have slowly gotten better that you realize the impact. At least I hope they've gotten better. I've made some decisions over the years that I wonder if they really made things better or not. And it's really hard to say since there's no control where you can say, well this is what it would have been a different way.
Sometimes coworkers does not like that because they don't see me working on the problem, but on a tool which will resolve the problem and similar problems from our backlog.
I wouldn’t overthink this.
Even in a big corp there are always problems to solve. The point is to find problems that both:
1) are hard enough that someone junior won't be able to solve them alone, and
2) actually provide value to the company / users
I managed to get a couple of smaller tools out recently thanks to having copilot available to churn on them while I spend my time on prescribed work, but it would consume all of my time to even make a significant dent in it.
Every person I've worked with who's been successful as a Staff+ Engineer, promoting them was normally more of a formality since they were already clearly doing the work. Every person I've seen 'rise to their level of incompetence' was striving to get the title/pay bump and looking to 'play the game' to get there.
If your motivation for solving people's problems is that it will get you a promotion, instead of the fact that you like solving problems, then it's probably not the right job for you.
There is also crazy ladder climbing with all these titles and difference in payscale. So ppl like the author are trying to optimize what a role X is supposed to be doing. Everyone is just the same thing everywhere.
Everywhere you go its the same ppl, same ladder , same tools same sucking up to boss blah blah. Cant wait to get out of this shit.
The flip side is people who get and stay too far into the weeds. Solving little problems here and there is a great way to keep your finger on the pulse of what's actually going on.
But if you get totally bogged down in details, you are probably avoiding your leadership responsibilities. You should be observing the structural or strategic opportunities, and then dragging the org(s) in that direction.
Sometimes you do that by writing some code to prove a point, other times you do it by getting the nearest VP to take something on as a commitment. For me, personally, I find that the style of work waxes and wanes. Sometimes I get almost no code committed in a month :(. Other times, I get to go off and do some work that nobody else would have done.
I prefer the latter, but I respect that my job requires the former. Many of the people who you see spending all their time talking believe that's the most responsible use of their time. They might not personally prefer it!
Sure, I can do them faster than others and pretty well. But if they’re truly things I can knock out in a day or two, they’re things that other staff can knock out in a week or two, and learn from the experience, and at that size they likely don’t require the standard of quality that I delude myself that I hold myself to.
At the lead/staff level, it’s far better to look for the kind of problems described in TFA: problems that are complex to identify, and for which the appropriate solutions aren’t always the obvious ones. My time is spent much better looking for those than being a 10x-speed senior engineer or whatever. There are actual senior engineers for that; I’m paid for the kind of work that they don’t or can’t do (yet, and to help model and mentor and train them to be able to do it), not to do the kind of work they already can do—whether I would do it faster/better doesn’t matter.
It’s case-by-case of course; sometimes a simple issue is critical or obscure enough (or tempting enough to override my iffy-at-best self-discipline) that I’ll jump on it. But I generally try to remember that a lot of the stuff I could look heroic for fixing in a jiffy is probably both not worth my salary allocation in the eyes of my grandboss, not critical time-wise, and a potential learning/accomplishment opportunity for others.
> I don’t like being the person who talks and talks but doesn’t push code and ship features
It was fun while it lasted, wasn’t it?
I often tell engineers that employees will never go to an “innovation center” in a company to say that their job could be made obsolete. And by definition the workplace is not 100% effective as long as there is employees. Still there is most likely always more that can be done, so think that the existing people can be automated away and be used in new positions.
A good way to find problem from top-down is to look for similar jobs done. Often a department with a lot of employees. 10% more efficient for 100 is better than 100% for two, unless those two indirectly slow the rest of the company down.
And I like to think that when companies expand rapidly it’s easy to spot problems, the contrary is slow growth, then problems is often someone’s job and they will not complain if it’s not stressful. The last part is often solved over time with even more people.
Staff+ is additionally directly influencing which projects the org is prioritizing.
Like other people in this thread are also saying, the more you master this skill the more often you'll have people finding *you* to give them their problems, which only makes this easier.
Often it is a result of suggesting an improvement to some PR for a program or system that someone is doing some work on, and discovering that for whatever reason it doesn't quite work. This tends to lead to a deep dive of really analyzing and understanding the problem and how the piece of the system fits into the overall picture. This analysis often leads to a more structured approach to a problem, placing it in the context of wider industry or CS theory, thus enabling us to leverage prior art and other people who have grappled with similar problems.
Basically a StackOverflow guidance on XY problem applies to the general problem solving as well.
Making sure that the work was actually done.
I've been a Staff Engineer and managed engineers and it's pretty shocking what people consider to be "done".
A couple examples:
- Doing a migration to using Tailscale and an engineer claims it's done even though there is just one giant ACL for the whole firm
- Migrating from one monitoring system to another despite only 80% of the alerts have been migrated
- etc
Some of this is business folks creating bad incentives. Some of it is not creating good "success criteria" for projects. Either way, someone has to go through and make sure that both the details and the big picture deliverables landed correctly.
This being HN, I'm sure someone will say something like "just hire better engineers". I've seen phenomenal engineers make bad choices here due to poor incentive design.
A perfect example:
- you reward people for hitting delivery deadlines
- you punish people when there are outages
you might think you're pretty smart until you realize the odds of getting yelled at if you miss a deadline is 100% but the odds of an outage are <100%. The EV+ outcome then becomes to hit the deadline even if you know the code isn't ready.
Again, the job of senior engineers/engineering managers is to make sure these things don't happen by both double checking work and also pushing back on bad incentives.
Thanks!
Large corporation, more meetings about what to do than doing it, power trips, drama, backstabbing, you name it. Keep you head on a swivel at megacorp.
I've learned that twice when both startups I worked for were sold. They made millions, I was shown the door. Any business that talks about being "family" or any of that crap is a cult, stay away.
I stopped working to make shareholders rich, and started working for myself. I don't believe anyone will ever truly get what they want out of life working for someone else.
I had two jobs:
1. Writing the actual software for the registration website
2. Going to the events and managing the registration tent where people actually checked in
Doing 2 gave me a VASTLY better understanding of who the users were and how they thought. e.g. I assumed it would be tech savvy, organized people like me in their mid 20s. It was actually a mix of 40 something team dads who weren't tech savvy at all (b/c mid 2000s) but very organized and teenagers who were the opposite.
It meant effectively managing two completely different customer bases in the same product.
Coupled with the fact that cable modems were a new thing but not evenly distributed meant that we had to design the site accordingly.
At the time, I remember Joe Spolsky mentioning that at Microsoft they did two way mirror usability testing and it totally made sense. I wish more firms did that today.
For me, walking down the hallway where I work is usually sufficient...
Hell, what am I even saying? I have a large list of them to begin with, and it rarely gets shorter
I see a lot of people really eager to tell other people how to staff, but a lot of them sure do seem to disagree, and most people I know get to staff anyways without any particular skill after a certain age (title inflation?) including myself.
My smell test for an engineer is -- are they trying to quantify the size of everything in terms of impact, or are they just reacting to whatever customer knocks on their door?
- don't be too proactive in solving issues that signals you are not busy to your employers.
- you are not hired to sit around 9-5, what you ship and how it impacts the business bottom line is far more important.
Especially true when I have to juggle 3 different employers. I will be in a long standup meeting with company A while I am answering slack messages from company B or company C has a deadline that overlaps with another and I'd have to work on at the same time.
Previously without LLMs this was very difficult but now its manageable, especially with openclaw and hermes doing a lot of lifting. This let me discover a lot of what's discussed in the article naturally.
There’s literally no difference between writing about being a staff engineer versus someone writing about being a janitor. Honestly I’d rather read about the janitor, they actually make a measureable difference.
It's pathetic how hard people hold on to titles. What have you -done-? How much have you added to the bottom line?
This is the real reason why we dont see natural path for more ppl to progress towards Staff level.
Interestingly noone talks about this. “Be first or bust”