173 comments

[ 0.22 ms ] story [ 20.4 ms ] thread
Funny people should have that problem. I have spent most of my career in the startup space, and my experience has consistently been that the amount of problems to solve is vastly larger than what I can reasonably achieve in my waking hours.

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.

This is not distinct.

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

There are a lot of known problems... but there are also a lot of unknown, or at least unrecognized problems. Some of those unrecognized problems are going to be more useful and higher-leverage than recognized problems. The same "being a sponge" approach still helps.
I find there's some overlap between being good at Root Cause Analysis and realizing that 3 of your most common problems are really all a 4th problem, some aspects of which have not hit you yet.
I am doing exactly same thing of creating a solution which can be applied to multiple problems at the same time.

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.

Some people either want to solve a whole problem or none of it.

There's art in knowing what parts of a problem can be solved now without screwing your chances of fixing the rest later when you actually fully understand the problem, and have discovered a proper fix.

It’s the same in a large corporate environment. I have a “personal projects” doc of ideas I’ve had to make development experiences better at my current role - it’s a couple hundred lines long.

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.

I think this is more relevant reality. At Staff and Principal you have visibility into a lot of fires going around you. What helps is understanding the relative importance of what fire to douse and be at peace with the ones that you cannot control.
Exactly. Everywhere I've worked had at least 3-4X more bugs than we had capacity to fix, and the bug count grew over time, net of any fixing happening. There was never difficulty finding problems to solve. Unfortunately most places don't give engineering the autonomy to solve critical issues. It's just feature cram and redesigns, over and over, and let the bugs pile up.
The challenge is finding problems that are “worth” solving as a staff engineer. General “bugs” are not staff worthy. Staff need to convince leadership to fix an architectural problem that removes a whole class of bug.
If a bugfix has big impact, even if it’s a one-liner fix, it’s still a staff problem
Sometimes the biggest impact you can make is just changing the spelling of T-E-H to T-H-E on a very visible page. Hopefully that's not a staff level problem in your company.

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.

The amount of pushback I get when I do a refactor to make a certain class of bug never happen again is huge...

Fortunately this kind of refactor is a lot easier nowadays with LLMs, but the QA is not improved and often what takes the longest.

This has been my experience until the past 6-9 months, when AI got good enough that I can build rails to prevent more bugs while also hammering through critical issues, redesigns, etc.

It’s never been better to be a staff+ engineer, where you can knock shit out of the park and tee up your team to do the same all at once

I actually really appreciate the mindset this has given me towards life in general, and I consider it a superpower.

I find people get overwhelmed and go deer in the headlights when there is a huge amount of stuff to do.

I actually feel relaxed when I say “it’s not possible to do it all. There will always be more jobs than time. The only thing that matters is that we work on the most important things”

I also enjoy seeing the things that just perpetually sit at the bottom and never even get close to being looked at. Others stress and think it’s a huge problem. I like to look at them and see that in context, there are much bigger fish to fry, and we’re doing the right thing by frying the bigger ones and ignoring the little ones.

Mostly agree, one small caveat. I always had a class of critical problems. They were rarely the important, but they were critical to things running smoothly.
> “… the amount of problems to solve is vastly larger …”

Are those problems in your “assigned“ lane?

I’m curious if you’re saying something else—that your organization somehow permits, encourages, shares its tasks/problems. Or what % of your job is management?

Working in startups has left me with almost the opposite problem. While there are many theoretical problems to solve, most are not valuable to solve until you have a reasonable degree of confidence that customers care about them.
You always are going to have coworkers who don't see half the stuff you see. Sometimes convincing people which problem to let you solve in peace is the hard part.

So many places only fix a problem after they've already reaped the majority of the pain of having the problem. Like they want to experience hitting every step on the way down.

The author notes:

> 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

Without providing too much detail, at my current place of employment I find that to be the case.

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.

I think the autonomy was stripped not that long ago and it's making software products far worse.

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.

I think it was correlated with outsourcing and H1B replacements, because you can’t outsource the leadership required for bottom-up methods.

Further, foreign business culture is significantly more too-down than American business culture.

Its a good thing that the Author pointed out the caveat cause most companies/teams/people do not operate in this mode. Subtle in the details is a fact hidden that the author is able to manage what he wants to do, most people do not get that kind of luxury. This either means that the author has earned enough political reputation based on past work or they are aligned with their management chain.

tldr; this advice is probably impractical for a bigger chunk of industry.

This sounds about right. At least I feel it acutely in my career. And the more experienced I got instead of more autonomy it has decreased. So to me it seems autonomy is decreasing at a rather fast clip.

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.

>Supporting , fixing project which I delivered over years and just take it easy, start day late, leave early until retirement.

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.

Yep, and if this happens you need to get promoted quickly out of that or you’ll get stuck at it. It’s great fun, and you’ll learn about every project your company has going on by doing it.
>It’s great fun

If you don't set hard boundaries it's also the fast track to burn out.

As a European that’s a great way to get paid for a two year holiday.
There's nothing fun about burnout, and it's not a holiday.
One should distinguish between high-stakes vs low-stakes firefighting duties. The former could fast-track one's career, but the latter is a guarantee for stagnation.
>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.

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.

> Especially if management rotates and new management didn't actually create the success in the first place.

Critical point, and absolutely true in my case. With change in management all past successful projects are "failures" now. Instead of using x, y, z projects uses a, b, c so leadership is kind to dismiss me with prejudice.

How will you get bonus if you don't do anything different?

How will you do anything different if you don't ignore/brush-aside past successes and focus on replacing them with new things?

How will you replace them without funding i.e. more budget, more power?

How will you keep moving up if you don't repeat this cycle?

I don't know if you're being facetious our not. I agree that that's the current landscape, but it doesn't make any sense! Imagine a great big ship sailing the oceans in ancient times. The crew made the ship sail straight. Now imagine (for argument's sake) the crew could be replaced at will. Preventing any deviation in the course is it's own success. The ship is working as intended and producing value. So to use your questions:

How will you get bonus if you don't do anything different? You won't crash the money-maker.

How will you do anything different if you don't ignore/brush-aside past successes and focus on replacing them with new things? You won't. That discipline is it's own value.

How will you replace them without funding i.e. more budget, more power? Your maintenance budget pales in comparison to the R&D budget, so funding should be a non-issue. You're not asking to recreate the boat, only replace discrete known quantities.

How will you keep moving up if you don't repeat this cycle? Because the momentum was set at ship launch, not at ship improvement.

I honestly don't understand how this all breaks down in modern times once you introduce shareholders. Is it that shareholders literally get spooked by stagnation?

>Is it that shareholders literally get spooked by stagnation?

Yes, 100% they do. Look at what happened to Instant Pot.

All items true. I dug my own grave by telling management look, we can already do all new features by reusing same system at much less expense.
The higher the position the less leeway you have because you are working on bigger problems with more experienced people who want to do things their way.

It makes sense the higher up you go the more demanding the boss because their boss is more demanding.

I've certainly seen that shift in some places. 8 years ago I started on a project as a freelance software engineer, to build something they couldn't really envision yet. I had a ton of freedom, built a prototype, chose my own tech stack, designed every part of it. A team was built around it, and I migrated to a leadership role where I decided the direction, addressed issues I saw, redesigned parts that needed improvement. We had an enormous amount of freedom, and used it to build great things fast.

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.

Your employer has much of its goodwill burnt in the past, and has learnt much from it to be able to dictate what you should and shouldn’t do.
This is my current world, at least. Bit of a shame. But they pay me well enough still and the work is interesting enough that I don’t mind too much.
It depends on company culture, and there's as many of those as there are kinds of people. I've worked at large, medium, and small companies, in many industries, and there's no common pattern. The people in charge set the tone, and the people are all different.

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.

> That's exactly what engineers are supposed to do: listen to and enable the business.

This may be the case if you're a junior engineer just crunching through individual tickets, but with the lower end of software engineering being automated away where even more junior engineers have to take more product/feature ownership, I don't think "churning widgets" is the right way to think about our job anymore.

[delayed]
There's room for all sorts. While I've met engineers happy just building the widget with all details specified up front, my career has been taking incomplete specs and deciding how the product works to create holistic designs.
I've built my career on using the product roadmap as an additional input to take into consideration while I figure out the best course of action. Lately I've had quite good product partners where I'm able to explicitly discuss engineering priorities and trust them to make good decisions (and the flip side, they trust me to not go rogue), but if your surprises make product, c-suite, and customers happier than they planned to be then that usually translates into promotions, respect, work-life-balance, and those sorts of things. A dozen SWEs in extra top-line revenue goes a long way toward smoothing over any negative impact from unexpected roadmap changes.
I've had about the same level over the years. Early on, before I had a nest egg, I had little real autonomy, despite outward protestations top-down asking for risks and ideas. Afterward, maximizing average outcomes rather than worst-case risk, I've had a ton of career success either proposing and executing good ideas or else just ignoring the product roadmap when necessary to make the company better. I encourage my team to do the same (ideally they have to resort to subterfuge less than I did since I highly value bottom-up input, but either way is fine). It's, again, risky, but if you consistently deliver above expectations then in many environments you'll get more promotions and raises than you know what to do with, despite the lack of predictability.

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?

I noticed what you describe 5 years ago.

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.)

Lesson learned: Publicly traded or VC-owned companies should be de-prioritized when choosing an engineering job.
In my experience (35+ years), it is the opposite now. It used to be massively top down, and now it is more and more bottom up, at least with the companies I have experience with.
Do you mean this applies to other engineers who are less experienced than yourself or only to you?
All anecdata here too but I agree. I’ve been in the industry long enough to remember when companies weren’t _all_ tech and us tech folks were considered specialists with a niche who charted their own course.

These days tech is indispensable to most businesses so top down control has been asserted.

You can get to be a staff level engineer doing that. However, beware that to really make it up the corporate ladder, you actually have to reject that. Note that I didn't say reject doing the things assigned. I mean reject it as in you figure out the things that they should be assigning and get those done instead.

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.

(author here) I really like your framing here! I think it captures the essence of my thinking in a really concise and coherent way.
Hard to feel motivated either way when both roads seem to ultimately lead to layoffs, regardless of performance. If you can even get to staff/principal level to begin with. That's more a matter of when you were born these days instead of what you know.
> You will typically find your staff and higher level engineers rarely are actually writing code themselves.

Many so called staff+ engineers are basically glorified Google Docs engineers, or management who want to call themselves technical. It seems to be fashionable these days to call oneself "technical" without actually knowing anything of the problem domain.

They basically take all the "credit" for any innovation out of the team, and scapegoat other teams when project deliverables are not met.

Every step up in my career has, ironically, lead to less autonomy.
“It is easier for a rich man to pass through the eye of a needle than find the Kingdom of Heaven.”
I've spent ~20 years working either as a contract worker and in more recent years, full time work.

Every company I did substantial work for was bottom up from the perspective of my role, which is also related to infrastructure and developer tools / workflows.

Basically I'd work alongside the dev team and report to the CTO / VP of engineering or engineering manager depending on company size. Nothing really needed sign off beyond my manager.

Every substantial line of work was directly related to reducing friction, pain or instability as well as saving time. These could be workflows or technical implementations. Also a lot of times it is bringing order from chaos. These could be things that directly affected me or the dev team. Internally I treat the dev team as both peers and customers.

I confess that when I work at controlling places, I engage in conspiracies. But I can only pull the subterfuge off for about 3 years and then I have to move on before I get PIPed for making their entire engineering staff more efficient, and then they move the goalposts for 'meets expectations' and don't know exactly what it is I'm doing, but they know they don't like it and now they have some numbers that tell them what they want to hear.

Like a woodworker building his own jigs, I always build my own tools whether the company wants them built or not. When I'm in a supportive environment, I work on and share those tools loudly. When I'm not, it's over lunches, behind closed doors, pulled out during emergencies, or just snuck into the CI pipeline without comment.

Frankly, the fact that not everyone does this has always been a cultural disconnect for me. The whole point of our field is to take repeatable tasks and write code to replace them. The fact that only about one in six of us does this for the tedious or error-prone parts of our own work is just maddeningly bizarre to me.

Nevermind the overly large fraction of people who have to be dragged kicking and screaming into using tools written by others. That number has gotten smaller over the last couple of decades but it started too high and the slope of that line says something awful about the industry. I don't know what, but it's something I'm sure nobody wants to hear, so I haven't poked at that bear too much (I have plenty of other bears to poke.)

I'm sort of in this area, and I'm fighting the same struggles because I desire "productivity", not autonomy.

I asked my manager if I should be creating tickets for the work I'm coming up with, and he answered a question I didn't ask, saying he doesn't count sprint points. So I clarified, shouldn't I at least be creating tickets so that we're accounting for it in our sprint planning? And he didn't seem to care.

IMO, it's a 180 degree shift to go from trying to accomplish assigned work to creating new work and accomplishing (or delegating) it / adding it to roadmaps / etc. To me, it wasn't at all obvious that this was what I should be doing, so it was strange to sort of stumble upon it when asking an adjacent question.

It would have been very useful to get an explicit instruction such as "hey, only spend 1/4 of your time on planned work" or similar.

I'm sure there are plenty of people out there who spent their entire career trying to avoid doing assigned work so it's an easier transition, but for rule followers it's a weird change.

I always include sprint points or at least some metrics to track, because even in areas that don't care about it, there is some chance a new CTO/manager/buyout or whatever jumps in. Day 1 asks for metrics and then retroactively judges people's output on it.

I've annoyed my team previously in demanding jiras and sprint points (and helping build it out as much as I could to not take too much of their time) because I could feel the turn happening to metrics.

Sure enough the only person in my team let go was because he outright refused to fill in his JIRAs and I could not get through to him the difference in what is logical and what plays well to management when they lose their minds.

Bit of a tangent, but even in the work you're describing, I treat sprint points and JIRAs as future CYA, not necessarily a work sheet.

Doesn't that just effectively make you that person? The alternative is surely simply saying we haven't historically tracked that, should someone join and want it.
Not quite sure what you mean by that, I'm not the one making decisions of who to cut. That's one to many levels above me.

Your stated argument would make sense if you're dealing with reasonable people. Which is sometimes.

But I'm talking specifically when shit hits the fan and people levels above me put down a mandate across many divisions.

As it is if they're making cuts they'll grasp whatever metrics they can and cut. If they don't have metrics that gives less protection, not more.

Sorry, I was referring to your first paragraph, about someone new coming along and caring about metrics retroactively not previously cared about.

My point being that by proposing the solution 'so we should care about them, in case that happens' you effectively are (or are equivalent to) that person, you're making it happen sooner (and for sure).

The alternative is that they lay off everyone because the entire team doesn't have metrics for the work they've done. The kind of person to single someone out who hasn't been tracking their work may not be likely to just up and forgive the entire team if they've all done it that way.
In my experience, when they are in a cutting mood, they often decide first how many people to cut, then go through teams based on their workload.

So your team not having metrics, they are more likely to go "wow that team is pretty empty of work, cut half of them (exaggeration of course) rather than "well they don't have any metrics so Ill take them at their word or wait and see".

Cynical maybe, but my best managers who've kept a team together and protected tended to be really effective at selling the work they're doing and how long it'll take and how much workload each team member has, and showing how busy the team is in a way thats impactful.

It's funny you highlighted the 'one caveat' line. I literally came here to post 'One caveat:' (and nothing else), as claude code seems cli to revel in adding an apparently obligatory 'one caveat' blurb at the end of every response. (viz. https://www.reddit.com/r/ClaudeCode/comments/1vbsr2m/one_cav... )

  Struck me that the staff engineer 'finding problems to solve' might be (whether for better or worse) manifesting that same tendency.
I think this is largely true. Theoretically it follows that mature industries would become this way more and more.

In my software engineering jobs there was always strong top down product direction. In my AI research jobs people are often staring at me blankly waiting for me to tell them what we can do.

A young industry the only people who really understand the potential of what the technology can do are the experts and practioners.

Overtime all the best ideas get picked off, and the general population who are non practitioners gain enough knowledge that they can understand what the technology can do better than the experts how can impliment it.

> I wonder if the overall trend in tech is that engineers are experiencing less bottom-up autonomy and more top-down controlled environments

I've thought a little about this. First: I don't believe that you can have bottom-up autonomy, without taking clear responsibility over outcomes.

Previously the main bottleneck in engineering orgs has been figuring out scaling and reliability. So you could own the outcome of "99.99%" and everyone was happy. But I think the bottlenecks in the orgs have changed. Partly due to increased productivity, and lower barriers to solve previously hard problems (thanks to good old AI), and partly due to shift in focus from maintenance of a product, to feeling forced to think about "which AI-native company/product will eat us next quarter". Some of this shift is towards product. Like... what does a great product in market x look like given the condition that we now have cheap and good AI models? Should it be different? These aren't engineering questions... unless you want to dip your toes in the business/management/product side of things (which I 100% think engineers should do!). But it requires you to go from owning the 99.99% outcome to owning "how do we create a product with y user retention curve and k number of users".

I think this is very true. I've seen it. It's the same in the design field too.

And it's because the tech industry has matured. Best practices are clearer, and there is proportionally less work happening "at the forefront", so to speak.

Most tech work is, at its core, stuff like building CRUD wrappers around a database. But we know a lot more about how to do those things now than we did 25 years ago. Our tech stacks are mature. There are extraordinarily well established patterns, and so much prior art.

This means that business folks have a stronger intuition of what's possible than before -- and that makes top-down direction much more likely. The innovation is commonly in the business strategy, not the tech itself.

(I'm not saying there aren't hard problems to solve, or there isn't exciting greenfield stuff happening -- there absolutely is, especially with LLMs -- it's just that the majority of tech work today exists to unblock a business goal)

That sounds kinda like the path of maturity of a start-up.

If a company is bootstrapped by a few engineers, where would the business acumen come from exactly?

I've been part of tiny startups, medium size, and large ones. I've been at state agencies and ancient private organizations.

The more people, the more corporate the culture. The more cooperate, the more the business needs & wants drive choices.

There's more caveats. Top down companies (which I believe all big tech companies have turned into) have a different class of problems that isn't addressed in TFA - politics, territorialism and history. TFA does not mention them or any any opinions on them either.

In BigCo. finding problem and the technical solution dwarfs in comparison to the effort and skill required to find the people who you're going to offend with your brilliance, the beneficiaries of said problems and who their reporting chain is and their incentive structures and the art of framing solutions using terms that they and their bosses understand in entirety.

Is "top down" a company size thing? Very simple organisms don't need brains or nervous systems. But once they get big and complex, suddenly there's a need for sensors, messages, plumbing networks for transporting signals and matter. That doesn't evolve as a decentralized system. You quickly need a control centre to oversee operations.

Companies are no different. During company growth, it's all about hiring, and giving tasks and some responsibilities to subordinates, setting up the right channels for communication etc. But at what point do company leadership actually say "You know what,that department would work better without direct instructions from us. Let's facilitate communication, act as conflict adjudicators and make company-wide 'North Star' decisions"

I think that's what OKRs are supposed to do, but I've never seen that work well (for very long anyway). It always gets up-ended somehow. Start of quarter optimism, over-promising, not spotting that someone else's stretch goal is actually your blocker. Then mid-quarter you're dealing with production emergencies, database code red and running out of time. At the end of the quarter, two of your team go off on PTO while you desperately try not to "fail your quarter", working late, and delivering shoddy work.

Does true bottom up exist at large companies? Hmmm. Some. We've all heard the legends of IBM's "build the first PC!" skunkworks. And we know about research-only departments at Xerox that led to so many modern computing inventions. But these were brief projects.

I find these days that people have the desire to get out of the way and let us work, but the tiling is in the way. I waste so much fixing time in Jira, slack, doing performance reviews, interviewing...

I think almost all of tech is bloated and massive layoffs wouldn’t phase most companies (though it would be harmful to people’s lives so it seems cruel to do this). Fewer people per teams means less context switching and devs own more. They don’t have to look for work, it will be in front of their face. In so many of these big tech companies I’ve worked at I’ve seen too many not having enough work to do. They end up creating meetings and other wasteful things (doc writing) to occupy their time. Managers and directors seem to want big bloated teams, the larger their head count the more they can demand and push for a promo.
Isn't this just true for 90% of professional service industries?
Inefficient allocation of work aside (where you end up with people doing nothing, despite I suspect a substantial amount of work in the backlog), I think the mindset of "just reduce devs so there's not so much context switching/they can own more" is short-sighted from a business perspective.

Even in projects that could objectively be owned by 1-2 people but are allocated to a 5-10 person team instead, I've encountered cases where velocity gets absolutely obliterated by a sub-domain "owner" dev being on vacation. Now imagine this is not a fairly small sub-domain but half the project, and instead of a vacation your one-of-two dev gets hit by a bus.

> other wasteful things (doc writing)

I wish people would create more and better docs. Pour as much time into a meticulously written doc details as they discuss indentation and variable naming style.

But instead, just like with your attitude, it's considered second grade or even useless work, and as a result docs always suck if they even exist. They don't get that code is made for people to consume just as much as for the machine, and docs are just an extension of that. That's one reason LLMs are so popular, they actually tell you what you'd have found in the doc, had it existed. But LLMs are restricted to the what and don't cover the why. I some places that makes good docs even rarer. In others it makes them easier since the machine generates the "fluff" and the human just fills in the rationale.

Listen to your customers but ignore what they say. “Treat your customers like a kindergarten class. If they’re all asking for a snack they’re hungry but perhaps they really need a nutritious lunch instead.”
I spent the early part of my career (mid 2000s) working on a registration system for sports tournaments.

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.

Eh, I'm not going to say this is wrong, but pretty much like all advice, it's kinda cheap without data. Like Dale Carnegie may be very famous and have a book and say "Use people's names all the times and your conversations will be great" but who actually knows if that makes a difference without some controlled outside study.

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?

I think the first problem may be fixing the broken mobile experience. I'm getting black text on a very dark gray background.
Thanks for letting me know; I cannot reproduce this myself on my mobile (it should be white text on a dark grey background) but I pushed a speculative fix which might improve things. Please let me know if it helps or, if not, I would love to know more details so I can fix this!

Thanks!

It totally did. Thanks!
The part I find challenging in the senior-staff twilight is that having deep technical knowledge means I can solve short term problems, just as requests, fast and effectively. The author mentions that you should spend time understanding the frustrations from other teams, but that takes up loads of time and I don’t like being the person who talks and talks but doesn’t push code and ship features. I’d love to hear how others have experienced that
I’ve experienced this. The critical realization for me was that most of those problems which I know I can solve quickly, without even having to write a Jira ticket or groom them into a sprint or whatever, are problems I should let someone else solve.

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 faster/better.

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.

Yep. Look for the problems that aren't going to get solved without you - either because nobody else sees the problem, nobody else is positioned to be the solution, or because your skills uniquely line up. That can't be all you do, but it's the highlight reel.
I think that's a completely natural source of frustration for someone who is used to being able to put hands to keyboard and solve problems quickly, but IMO the higher you climb the ladder, the more you have the opportunity and responsibility to take a longer view and to delegate - which often means that other people are pushing the code.
Once upon a time my grand-grand-boss explained that he had no problem hiring top-notch engineers - pick up the phone, call recruiters for new candidates, connect the incoming stream to the interview pipeline, two months later you get the requested quantity of engineers. OTOH there is no repeatable process to hire someone who will help identify the right problems and drive them to resolution. So if such person is found they will be pushed towards doing things that have no obvious success recipe and away from the things that do.

> 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?

Like you, I dislike the "talker" role for people on IC ladders. I often encourage those people to switch to Director+ roles.

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!

For non-engineering teams my playbook is:

1. Get in all their support or public slack channels, watch for acute moments of freak out or consistent schlep blindness. 2. Meet with the head of the team once a month for 45 mins and get them to list out what just sucks.

You can limit chit chat very well this way.

You’re only going to be able to do so much so broadly picking the problem that is closest to the business’s immediate pains can be a win. Or maybe that’s already being swarmed on so you knock out a bunch of random stuff and get broad recognition.

For technical teams, almost every single thing I ship:

1. cements a new pattern or contributes to a new one that my team can use 2. improves cicd speed or checks

You can usually knock out the non technical team work and pick off 1 from technical team work along the way

Everything I do (except specific bug fixes) force multiplies, otherwise I’m wasting my effort.

I don’t feel like I need to talk too much to my teammates about their engineering problems. I’m doing the same work ultimately, so I have a solid understanding of what moves the needle

Edit: convincing the organization that your work is important gets much much easier when you have metrics and charts that make the case for time well spent. It could be a buggy ass feature, or a meaty pipeline the business relies on. Prove that it’s hurting the customers and ultimately the bottom line. Battling over and convincing of scope becomes less important when you’re talking in the same language as non technicals

I find that I often tik-tok between organizational work and deep technical work. (I come close to the "solver" archtype on https://staffeng.com/guides/staff-archetypes/). There are weeks-months when I am not writing a ton of code. I'm still doing technical work, but it's architectural documentation, experimentation, or discussion where my contributions aren't directly visible in commits. Then there are weeks where I ship dozens of PRs.

I'm often thinking about 1-2 immediate term problems (what am I coding on now), 5+ medium term problems (what am I planning to work on next or moving such that someone else can work on it), and then a handful of long-term problems ("this is currently intractable, how do I convince leadership/this other team/etc. to make it possible for someone to actually address the technical problem I care about").

(comment deleted)
My advice as someone working at staff engineer role for 3 different employers remotely and the "let problems accumulate" resonates but different context:

- 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.

How do you deal with conflicting meetings? I stacked two jobs once before and ran into trouble with meeting conflicts.
This I cannot really share for legal reasons but I will give you a hint: We cannot be at two different places at the same time.
This could easily be a blog. Multitasking using hermes takes skill
One thing that isn't often mentioned in these discussions:

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.

(comment deleted)
I worked at the Staff level for a while, I think the key is to report to a director who manages managers. Every time I did I had a good time, projects were easy to define and people were easy to convince. I had the same level with a few managers who were managing other ICs, and that never worked. Other ICs try to compete on tasks, people don't come to you with their needs, you learn about different projects often too late, other teams are territorial and don't really want you to intervene.
Yes. My sweet spot is reporting to someone in the director levels.
(comment deleted)
> “How do you find problems worth working on?”

They usually find me.

It's interesting how engineer/developer levels are so meaningless across organizations. Where I am, somebody who can only do the work assigned to them isn't senior. That's borderline entry level. Doesn't mean they're a bad programmer or only have 3 hours of experience, just isn't at the higher level. Seems where this person works (Google?) that threshold is at staff
It depends on what you mean. There's lots of ways of looking at this, but I'd think of "entry level" as someone who is assigned individual tasks, and maybe needs help or oversight on completing them. Someone senior is assigned a project, or even a problem (and certainly has input on which projects they work on), and can handle the entire process of investigating, proposing, designing, and implementing the solution to that problem, which may involve oversight or tracking of other people.

Staff+ is additionally directly influencing which projects the org is prioritizing.

"Do the work assigned to them" has multiple levels of abstraction. You could say it's the task level which would be entry level. You could say it's the project level which would be mid level. You could say it's the a service or domain which would be senior. Staff should be tackling org wide and cross-team issues. The amount of scope and clarity needed for a "problem" changes and gets larger in expectation and more terse in explanation the further you go.
(comment deleted)
TL;DR is that its extremely hard to show staff level expertise if you work at a wrong company. And the amount of companies that still need this expertise is ever decreasing (big corpos with a lot of autonomy)

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”

(comment deleted)
(comment deleted)
“The shape” — smells like tokens. Each paragraph is too perfect.
this is going to turn into a world psychosis eventually, smelling AI on people's breath
This is all very good advice, but I would caution anyone asking the question at the start of the essay that they probably shouldn't be a Staff Eng. Unless you're at a company where that title is simply a rung on the ladder that doesn't have differentiated responsibilities (there are lots of those out there).

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.

I suspect you might hear a lot of push back on this take, but I for one fully agree. I would go as far as to say that in my workplace, this a nearly inverse relationship between quality of work and how actively that person is thinking about / talking about / acting-as-if-they-are-owed a promotion.
I came here to say exactly this. Thank you.

The people in my workplace that I respect the most and that are the most competent are the ones least interested in career politics and promotions. Heck they even often reject management responsibilities. They just want to do good work and management gets that and gets out of their way. In contrast, there is this guy constantly thinking what he could so to make an impression and talks about compensation and RSUs and cliffs and he is stuck where he already was 6 years ago and nobody would consider him for promotion ever.

I suspect this is partly a function of your organisation.

Some places, do not care terribly, about what you _could_ achieve, or they have garbage internal practices which prevent you from doing this work effectively no matter how much you _care_, or maybe they’re just a garbage workplace but you need the job. In these cases, you may as well ruthlessly go-for-the-title, because they’re not going to change, so you may as well get something beneficial while you’re stuck somewhere shitty.

Now, if it’s a decent org, which looks after its people, produces a product it cares about, has actual career progression, sure, you can afford to do the work first and earn it properly, but let’s not pretend that’s amazingly common, and attempting to do this, in some places will just get you exploited and burnt out, with no pay or title bump to show for it.

The issue is stuff like job security and layoffs; it’s easy to not care about what position you have until someone is looking to fire 20% of non staff engineers and suddenly you are afraid of being on the chopping block.
In my org, you’re not allowed to do work like this without the title.
Also a staff engineer. This is pretty much exactly what I do.

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.

(comment deleted)