Getting things “done” in large tech companies
105 comments
·May 6, 2025whstl
_fat_santa
> At least the pay is alright.
I don't know why but this part of your comment really stuck out to me. I have a whole different take on getting stuff done specifically at big tech companies, mainly that being "stagnant" is not such a bad thing at a place like Google or MS.
Say you're like an L-whatever at one of these big tech companies and you bring home say $300k/yr. You don't live in a HCOL so the pay is astronomical compared to anywhere else and even if you work on the same boring project for 10 years there, you can still say you spent 10 years working at MS or Google and that would get you red carpet treatment just about anywhere. I'm sure this would bug a go-getter and would certainty bug a younger version of me, but if you're that kind of person you're most likely trying to work at a smaller company where you get more say and sway.
And to add a bit more to this it's not like I don't care, it's just what I care about has changed over the years. When I was younger I was concerned with climbing the ladder and getting prompted. Now that I'm older I care way more about my family and friends than I do my company. If I was at one of these big tech companies and someone told me I was stagnant and would never get prompted I would just tell them so what. I bring home $300k for my family and I have a good work life balance (most likely). And do I really give a damn about the initiatives of some corporate behemoth, no and to be totally blunt the only thing I like about them is the paycheck and what it does for the rest of my life (all the free shit at the office is just a bonus).
pydry
That sounds great if you can ride that into retirement but if you get laid off and you start having to justify your existence again in the job market I dont think "I took home $300k for doing nothing and then got laid off" is a great sell.
_fat_santa
But that's kinda the beauty of it. If you get laid off from one of these places the next place doesn't know that you took 300k home to do jack, all they know is you worked for a super prestigious company for 10 years and you can plausibly make up the rest about what you actually did there.
codingbot3000
Out of curiosity: Why didn't you continue being product manager?
devrandoom
Also bear in mind that you're slowly strolling on the road to burnout.
deadbabe
So you’re saying the only time you were satisfied with your work is when you took the role of a product manager who stepped in between the engineers and the rest of the company and had all their contributions filtered through your ego?
Yea, that sounds pretty satisfying…
whstl
No.
Keep in mind that:
- I didn't step in between engineers and the company. I am an engineer.
- I didn't step in between my team and the decision makers. It wasn't me who "invented" the requirements, nor it was me who said the projects were complete.
- It was the only time in the last few years where I could actually follow the advice in this article and ship things people need. Because I could TALK with people.
- My entire team got salary increases all across the board.
- Everyone has an ego, and everyone has a personality. But nobody in a team should get to put "more" of their personality over the others. We had brand guidelines and accessibility requirements, but other than that we decided things together.
peterldowns
Based. Nice work!
phkahler
>> Unsurprisingly, me and my team managed to deliver three projects that other teams tried and failed several times.
Not sure how important delivery was to the company, but it's nice when your personal goals match those of the company.
null
theK
So, fire the Product Managers?
everdrive
I left the government for corporate work, and we didn't have project managers as a specific role. Of course, people were managing projects, but it was nothing like it was in the government. In my short experience, project managers:
- Have no understanding of the technology they're "building."
- Don't understand who is responsible for what.
- Would have NO idea if things were set up incorrectly.
- Are solely working through a checklist of items and asking "is this done, or do you have dependencies?"
- The checklist itself was just built by interviewing different stakeholders, but it's the PM who puts it together and of course the PM who doesn't really understand the detailed or high level view of the project.
It's pretty maddening, and self-evidently stupid. I really cannot fathom why my company and other companies fail to understand what a waste of time and money this is. And worse, than the PMs are often leading to worse outcomes. Please keep this in mind anytime someone tells you that we need to "run government like a business," or suggests that businesses are wildly efficient whereas government is never efficient. If we had EVER had a useless PM like this back in government I would have forced them off the project as part of our criteria for success. In the corporate world, there's really no such option, because project success is always secondary to the businesses wants.
lazystar
product, not project :-)
icedchai
Good PMs are worth their weight in gold and actually make engineers' jobs easier. Bad PMs create a useless "translation" layer that doesn't help anyone (except, perhaps, themselves.)
whstl
Bingo.
It's exactly the same for designers.
Good ones can shave days off complex tasks, and even help the code be more beautiful.
Bad ones can turn a 5-min feature into a week's worth of work. For absolutely no gain, and possibly creating a few bugs along the way.
Unfortunately the only way designers and PMs can learn this is by working together with engineers. Everyone needs to check the ego at the door. Which is borderline impossible with some personalities (from all sides).
abhisek
How will you define a good PM? I have been looking for this definition for a while.
In my startup experience, it seems to me the best PMs are the CTO and the early engineers who has near infinite business and user context.
malfist
My previous PM was ultra valuable. Put devs in contact with the customers, got out of the way of deciding what to build, and then sheltered the devs from the chaos of customers. He was also smart about what could be done and in what timeline, always working from the estimates engineers gave, working backwards and deciding what scope could be cut and where, who if another team could loan us people. He was the right balance of umbrella, partner and pass through. It was magnificent.
My company, being more than a little bit toxic, he got transferred to a new manager who took an instant dislike to him and he was pulled off all his projects and then fired for not delivering anything. (bit of an exaggeration, he got put onto one of those "all responsibility, no authority" type projects where he was responsible for making sure everyone at the company stopped using the VPN, but he had no authority to force teams to build or migrate services to be available outside the VPN, and there were 2+ decades of services to migrate, and he couldn't direct people to stop connecting to VPN if they needed something that was inside the VPN)
The PM that came along to replace him described himself to all the engineers as "the next Elon", wouldn't let engineers talk to customers, personally decided what features to build with no input from the dev team, even when making technically difficult decisions. He asked for estimates from devs but never used them. Often giving us both half the time asked for, and half the engineers asked for to deliver a project. He never deflected chaos from customers, just added a translation layer that made it impossible to make the customers happy. Everything was an emergency, every feature necessary for an MVP. He'd constantly harass people for status updates, forget what they were working on and harass them again. He constantly asked for documents to be written for himself that he never bothered to open the links too.
He was actively toxic, wrong and an impediment.
He'd send out launch announcements to the org celebrating the projects that were completed and it was customary to list key people who delivered the project. He'd forget whole teams of people that worked on the project. One time he left me off of a project that I lead, got everyone in our sibling team that was helping out though. One person he never forgot to list as being a key person involved in the project was himself. Even in projects he had never heard of before having to write the launch announcement.
That behavior was rewarded, for whatever reason. Although he finally left the company when one of the many rounds of "you must work from the same office as your manager" bullshit caught him up and he wouldn't relocate from canada to the US.
whstl
Or at least hold them accountable for failing to get things done and communicating badly with developers. Which is something that I'm yet to see.
In previous companies, as an engineering manager, I had to burn a huge amount of political capital to steer my team in the right direction, several times.
My people (engineers) want to achieve their goals and create value, and the higher-ups want working software making money. I don't see why this has become so hard to achieve.
lazide
Because it’s easier to create chaos for some people than it is to actually do what they are supposed to do.
switch007
How do the evade accountability so often and so deeply? It's bizarre.
esafak
I can't tell if you know :) https://medium.com/illumination/google-once-fired-all-manage...
null
al_borland
While I understand the point being made, and have experienced this reality first hand, I still object to it.
I have seen countless projects spun up, the company declares the problem solved (done), and then the team is disbanded to go work on new problems.
What happens next? The product they built has issues, new features are needed, the rest of the company keeps evolving… all the while, there is no one to actually maintain that “done” project and it becomes technical debt.
Eventually a new manager comes in, sees this mess of an old project and builds a new team to solve this problem all over again from scratch. They have to learn everything all over again and repeat a lot of the same mistakes of the first implementation, and the cycle continues.
This doesn’t seem like an effective way to run anything. If I can use an air conditioning metaphor, it is more efficient to set the house at a temp and keep it there, than to keep turning the AC off, letting the house heat up, and trying to bring it back down from 90.
I had a little side project at work that upper management didn’t care about, but was immensely useful to various support teams. At one point it had over 500 unique users internally, through word of mouth, as it was only designed for one team of about 50. The initial build took some effort, but once it was running it still needed care and feeding to keep it relevant. I managed it personally for over 10 years, and my priority was always responding to organizational change to keep it relevant and as a trusted source. The second it fell out of date, people would lose trust in it and start looking elsewhere, which is when tooling starts to fracture. It didn’t take much time. Sometimes I’d go months without touching it. Most updates took 5 minutes, some more involved changes might take a day here or there. But that was important work to prevent needing to re-invent the wheel down the road once it became too painful to use due to lack of maintenance.
wpietri
I fundamentally object to any notion of done-ness that is solely focused on pleasing the few people who happen to be in positions of power.
Are we all embedded in absurd structures of primate dominance? Sure. Primates gonna prime. But that is no more the root of what's going on than being able to mark something done in Jira, or getting a compiler to stop complaining. Proximate hurdles are not ultimate goals.
Nobody gets to the end of a technical career and says, "Welp, that was 40 years well spent making a rotating series of bosses and grandbosses happy."
yodsanklai
> that was 40 years well spent making a rotating series of bosses and grandbosses happy
Isn't that the definition of being employed? pleasing the persons who pay you to do what they ask?
virgilp
I don't know. I'm 30 years into those 40 and, while I can list plenty of "achievements" ... that's not what got me promoted. There _is_ value in making bosses & grandbosses happy.
I don't think it's good for you to be a cynic(because there's more to life than "promotion!"), but I think it's good to know/be well aware of the cynical viewpoint, because there's often a lot of truth in it.
wpietri
We agree: There is value in making the compiler happy. There's value in getting tasks done. There's value in pleasing bosses. They are necessary means to an end.
However, my point is that one's analysis of the purpose can't stop with any of those. That focusing only on any one of those is ultimately shallow.
And in particular, my critique of this article is that he's just shifting focus from one proximate goal to another. Is pleasing the bosses necessary? Under our current dominant theories of work, yes. Is it the point? No. Always and forever: no.
virgilp
Agreed - the better take is "getting promoted in large tech companies requires marketing" (and even that is only true for the senior roles, in the junior roles, being good at your trade is typically enough to get promoted to "less junior").
But people have different ways of expressing this same idea, because it gets tiring to see/read it in only one form.... so I guess one has to get a bit provocative in order to draw attention :)
(and to be fair, given how distasteful many programmers find the "marketing" part, it's somewhat useful to have many different ways to tell them that it's needed).
johngossman
Agreed, and as I tried to say in another comment, the real purpose is to help the company make money (and achieve its other goals). Ideally your management knows what those goals are and pleasing them is a proxy for that. Not always true, but in that case you have another problem, and its good to know that.
johngossman
While I generally agree with this, I’d add one thing: to understand what your managers want, you really need to understand the business. At the highest level, how does your company make money, or at least think it’s going to make money? What other things does the company value? It’s surprising how often I find developers who don’t know, either because they aren’t curious, are too busy to learn, or (surprisingly common) think it’s somebody else’s job to make money…they’re just doing what they’re told. My advice is to actively try to meet upper managers, sales and support people, marketing people, and ideally customers. You almost always learn something you can apply. In big tech it is way too easy to be insulated from what the output of your job actually is. This applies even if you work on internal systems—-somewhere those systems either add value or protect the company, and understanding that helps get your job done. And if it turns out your group doesn’t add value, or you can’t figure out how it does, then start looking at what groups do add value and whether you can move there. I did a few jobs that were not clearly aligned with the company needs and those always turned out to be a mistake. The valued work not only pays better is (usually) more satisfying.
hnthrow90348765
I think it's fair to think of yourself as a carpenter. Devs talk a lot about this being a craft. You build to spec but point out problems when the spec is not possible or silly.
It's the business's jobs to know how to explain the business and their needs. If they can't explain it, they probably don't understand it. If they do understand it but can't explain it, they probably need to work on their soft skills. You're also going to learn the business implicitly if they're explaining it well.
You could be a developer that also knows the business, but where's the compensation for going the extra mile? Especially when the layoffs come around. Another perspective is if you have time to work the business side, what could you have been working on technically to improve things? So there's potentially an opportunity cost too unless everything is currently as optimal as it can be.
johngossman
It just happens that two of my good friends are carpenters. And they are highly aware of the business. They have to be in order to ensure they have work as construction and remodeling and other types of work ebb and flow. It’s precisely when the layoffs come that it is valuable to understand the business. You are absolutely right that ideally the business people understand and explain the business, but are you really going to trust your livelihood so completely on that? Sometimes their job is to keep you working, fixing bugs, adding features, until they reach the point they can lay you all off (this pretty much happened to a bunch of my friends at an early job). Furthermore, just building to spec suffers from the Henry Ford problem of the customer asking for faster horses. Unless your business people understand the tech as well or better than you do, it is very likely you can improve the product more if you understand the business than if you just do what you’re told. This does not have to be very time-consuming, and ideally your manager helps, but just paying a little attention, spending some time with people in other disciplines, can have huge payoffs.
cljacoby
I have mixed feeling on this.
Some parts of this are probably good advise, at least with respect to clocking titular promotions. No disagreement around visibility of delivered "big wins" being key.
However, I feel like this article is subliminally pro-management, with the thesis statement essentially being just make your manager (and their manager) happy. But what happens when there's no clear direction from management on what the team's goals are? Or when priorities shift on a weekly, or even daily basis? It seems pretty hard to deliver anything meaningful, if by the time you're finished they've already moved on to the next shiny thing.
Additionally, in my experience this "make your manager happy" approach goes hand-in-hand with a "yes boss" manager-subordinate relationship. Managers are empowered to flurry out executive dispatches on what, when, and how things ought to be done, and engineers are encouraged to follow orders. Results are normally not great.
nickysielicki
The solution to this is pretty simple: when you find yourself working for idiots, just quit. It’ll suck for a little while, and then it will get better. Which is much better than spending months trying to make stupid and under-qualified people understand things that smarter people would understand intuitively.
pmarreck
> If you want to get things done you can’t be a gardener.
Unless you are selling your own product or service that you yourself are working on (possibly indefinitely).
Which is surely an enjoyable position, as long as you don't mind having no like-minded coworkers.
eXpl0it3r
Is this sentiment the reason why a lot of "engineers" will provide terrible quality in code / tests (lack thereof) / documentation / etc.?
If all that matters that someone at the top sees it and is happy about it at this specific moment in time, why bother writing code that can last and doesn't leave behind an absolute unmaintainable ball of mud?
We don't need gold plating and yet billions could be saved by having invested more than the bare minimum.
beezlebroxxxxxx
More and more you run into people who simply don't care about craft and quality.
I can already hear the chorus of people that will scream "I'm not paid enough to care" or "it's just a job for some people", and those things are often true; but, nonetheless, people used to take much greater care in their craft even when they were paid less. There was a sense that, even if it was just a job, it should be done well. A certain sensibility of care and craftsmanship has faded away.
TeMPOraL
> A certain sensibility of care and craftsmanship has faded away.
It got replaced with professionalism, as in "being a professional", which nowadays seems to mean prioritizing business needs above all.
Caring about quality and craftsmanship is not professional - it's just not being economical with company time and money. It's better for the business for dev teams to tick features off a list as quickly as they can, because marketing can polish a turd and shove it down customers' throats much more cost-effectively than devs can make a half-decent piece of software that provides genuine value.
No surprise more and more people don't care. They keep hearing everywhere - including here - they should abandon childish pursuits, stop reinventing the wheel, writing too clever code, shaving yaks, going down rabbit holes, etc. - they should be professional. Well, that's what we're getting now.
bluGill
> Caring about quality and craftsmanship is not professional - it's just not being economical with company time and money.
I disagree, but only partially. The real question is when is the project done as in you would shred the source code and nobody would ever care. Some projects are done when they ship version one - you wouldn't fix any bugs or add new features, so code quality doesn't matter. Some projects are never done - someone will be touching this code in 50 years (after you are dead), so quality matters.
If the code is done then craftsmanship doesn't matter and putting effort into it is an unprofessional waste of time. However if the code will be maintained for years in the future then not putting effort into craftsmanship is unprofessional. You need to know where you are. Sometimes writing ugly code is a good use of your time, sometimes writing good clean code is well worth it.
The important thing is to know where you really are. The wrong choice will hurt you.
dakiol
> people used to take much greater care in their craft even when they were paid less
I think people used to care more when there were less BS involved in the software development process. Nowadays you get: scrum masters, product managers, product owners, engineering managers, daily standups, refinements, "getting things done", "shipping impact", "10x engineer", "red-carpet engineers from FAANG", and CEOs that want X or Y for yesterday. So, yeah, in that kind of environment, I couldn't care less about anything. I just do it for the money.
All my craftsmanship goes into my personal projects.
ImPostingOnHN
> More and more you run into people who simply don't care about craft and quality.
Many talented and conscientious craftspeople, to pay the bills, work jobs which don't afford them full creative freedom, or even appreciate it.
> people used to take much greater care in their craft even when they were paid less
Did they? Maybe this is the golden tint cast when we reminisce about "the good ol' days". I currently know some people who take much greater care in their craft, than some other people I used to know.
The attitude of "I'm not paid enough to do that" feels, to me, to be closely correlated with a company asking the employees to do more for/with the same or less, giving less freedom to choose what to do, micromanaging/policing how they do it, and all the while showing a decreasing amount of loyalty and humanity towards them. It'd be unreasonable to expect the employees to then suck it up, grin, and bear it -- They are equal partners in an employment relationship in which one party is attempting to unilaterally change the status quo.
pydry
The chorus drones on about you're paid to deliver value and customers dont pay you for docs or tests or refactoring.
If anything this is worse.
spicyusername
I don't think anyone purposely writes terrible code.
You know the old standard:
Never attribute to malice what is equally explained by incompetence
But certainly stagnant conditions or burnout can prevent people from really putting in the extra effort. Why go the extra mile when it's consistently not rewarded, and in some cases punished?Also many software engineers are just not very good, frankly. It's extremely difficult to become an actuary without a strong mathematics background. It is very easy to become a software engineer with any kind of background, even if being a good one is just as difficult.
atoav
Everybody has their reasons to take on the role. If you make no-/low-budget films this is important to remember — that camera person might want to try things out, that actor needs something for their reel, the sound guy might just want to make contacts in the industry, etc. If you manage to align your goal of making a film with theirs, everything works out.
Now if you don't let engineers live out their passion, you made the choice to select for the ones who just do it for the money. That can be a legit choice, but comes with risks.
highfrequency
The negative side of this (rational) mindset is where engineers do the minimal work to “deliver” lots of features in order to check off the OKR for upper management, but the engineering is done poorly. Upper management has no insight into the quality of the work, but over time the bugs and performance degradation pile up, while engineering managers get promoted and OKRs completed.
nyanpasu64
> What does it mean to get things done in large companies? Most importantly, it means finishing things.
So that's why Google releases a new chat app every two years...
gwbas1c
Yesterday I pointed out to the founder of the company that I work for, in the context of tech debt:
"Well, since we moved the goalposts on that project, now we're out of 'credit card' tech debt and now in 'Adjustable Rate Mortgage' tech debt. Our goal should be to get to 'Fixed Rate Mortgage' debt."
The problem is that too much tech debt can hold back feature development, or even materially impact hosting costs. In our case, we're a 10-year-old startup, and many parts of our stack were built in a way that makes them very hard to maintain, or on end-of-life technologies that are impractical to hire for. To be quite blunt: The tech debt got to a point where we spent more time on the debt than feature development.
The problem with this article is that it glosses over the impact of tech debt, and how it needs to be handled. An umpteeth refactor for a 3% performance improvement is very different than a 3000x performance improvement that reigns in hosting costs. Backfilling unit tests needed to prevent regressions when building a new feature is also different than rewriting a major UI component because it depends on a UI toolkit that was end-of-life 7 years ago. All have a very different impact to the business and product.
jere
> The easiest way to do this is to deliver things that they already know about, such as projects that they’ve asked you to do
I've struggled with this recently. I feel like advancement requires getting credit for the idea itself, otherwise you're just implementing other people's designs. But ideating (will actually good ideas) is pretty tough.
agentultra
> this fact is a trap for competent but unagentic engineers
Is “unagentic engineer” a euphemism for human/not-AI?
Unfortunately for companies whose engineers work this way, they’re on a one-way trip to expensive cloud bills, data breaches, and frustrated customers.
A good amount of that “never done,” work is:
- Patching security vulnerabilities
- Fixing mistakes made due to lack of planning/testing
- reducing costs due to lack of planning (ship it now, make it better later)
- responding to customer feedback
If the business you’re working in doesn’t see the value in the work you do then, when you can, find a new place to work. They’ll sink their ship well enough on their own.
TheOtherHobbes
Of course you're right. But that's the point of the article.
Companies, departments and teams operate on a spectrum from reality-centred to status-centred.
In a reality-centred culture all the things you mentioned matter. Reality-centred management understands this, manages it, and rewards it.
Reality-centred cultures are better at medium/long-term planning and at handling issues rationally.
In a status-centred culture the most important product is status in the hierarchy. A "competent" engineer delivers status to superiors. That's their only job. The quality of the product, codebase, and the customer relationships is secondary - sometimes irrelevant.
Status-centred cultures tend to be reactive, not innovative, and the orientation is emotional, not rational. Hierarchies are strict, communication is poor, and low-status people are treated badly. (Because how else is everyone else supposed to know they're low-status?)
No one cares when things work smoothly, but if there's a problem that causes a loss of status, someone has to be blamed for it.
Status cultures don't necessarily implode. If they have an effective monopoly, they can survive for decades.
They're more likely to seem like huge players until suddenly one day they aren't any more, and everyone wonders what happened.
nickysielicki
> Status cultures don't necessarily implode.
Sometimes they do, though. And while it’s spectacular to see it up close, it won’t make you feel any better.
agentultra
Nice reply, all true.
> Status cultures don't necessarily implode.
True! And they're often not a great place for developers to work (unless you want to join in and become a manager and leave development behind).
Spooky23
“Unagentic” is a terrible made up word to say that employees lack agency.
Basically, people like when employees show initiative, operate independently and influence their surroundings independently. At least they like to say that.
It’s a common trap for engineers, many of whom like to burrow in and crank out stuff. You’re toiling away slaying tickets and doing your thing, but become invisible or don’t realize managements attention elsewhere.
stuartjohnson12
It doesn't have to be that way, but that's certainly the default unless executives put in the work to make certain kinds of work legible.
A great example that is less cynical is interface design - I greatly enjoy building user interfaces that are correct for lots of little interactivity details. It pains me to release an interface that breaks on tablets, or where the container doesn't have padding so the button awkwardly juts up against it.
This kind of attention to design detail is not automatically rewarded except for at companies and startups for whom that's something that is valued, and design intuition is praised. I've had people come to me for work in the past specifically because they love that I pay extra attention to this stuff.
That said, in many places this is not appreciated at all and none of this would be a value add.
frozencooler
> Is “unagentic engineer” a euphemism for human/not-AI?
Pretty sure it means someone who plods along in life, going with the flow, working but with no self-conceived roadmap of ambition, low extroversion, low desire to make decisions, etc
jagged-chisel
> Is “unagentic engineer” a euphemism for human/not-AI?
I read this as engineers without agency - those who have little to no freedom to make any decisions on their projects.
2mol
> Is “unagentic engineer” a euphemism for human/not-AI?
No, it refers to people that are not "high agency", i.e. they might be smart and competent but need guidance on what to work on, as opposed to taking initiative themselves.
I don't disagree with the article, but after working in big tech, two HN startups, a couple unicorns and others, in two continents, I don't really find this too actionable.
In the last ten years (and even in the 20-people HN startups), the day to day work of engineers has become so incredibly specialised and divorced from the needs of decision-makers and the customers that there is almost nothing I can do to influence whether someone views me as doing my job or not. Mainly because of the presence of Product Managers that insert themselves between engineers and the rest of the company.
I'm always interested in delivering value, but the fight necessary to actually do so has become stressful. It's no longer a collaboration, all my contributions must be filtered through the ego of the person speaking to decision-makers.
In fact, the only time I was actually satisfied with my work in the last 5 years (as opposed to my paycheck) was when I was acting as interim Product Manager for 9 months. Unsurprisingly, me and my team managed to deliver three projects that other teams tried and failed several times.
Most of that was accomplished by communicating with stakeholders and actually figuring out what they needed, rather than endlessly "trying to put my own spin" on it.
So yeah, I'm gonna keep delivering whatever is asked, getting the blame for bugs and not getting the credit for features. At least the pay is alright. I'm constantly searching for the place where I can actually fully contribute, though.