Kindness, tech staffing and resource allocation
redmonk.com
redmonk.com
At the beginning of covid, I got laid off from a company the day after I accepted a new job at a different company. I had a meeting with my boss to put in my two weeks in the afternoon, but I woke up to an 9am meeting with our CTO where our entire team was let go. Since I got let go instead of quitting I got severance and health care for a few months and was able to file for unemployment, which allowed me to take 6 weeks in between jobs instead of the 2 I was planning.
It was literally the best possible scenario I can think of for getting laid off and it still fucking hurt to be let go.
Seriously, please remember be kind to the people going through this.
So despite my job having me in a chair all day, my inability to get _to_ my job required a couple of weeks on short-term disability until I got cleared to drive.
I spent a couple of years often working from bed and now deeply regret it. Us programmers are sedentary enough already. Please take care of your health and stay as active as possible so you don’t end up with chronically elevated weight, BP, cholesterol, and all the other signs of metabolic malfunction as you get older.
> and was able to file for unemployment
Reminder to people that H-1b holders are not eligible for unemployment claims. They pay INTO the system but are not allowed to take out of the system
Why was it hurting? You already committed to leaving.
Do you think that this work that had to be done was business critical? My experience while working at FAANGs is that everyone was working a lot but a sizable number of projects were vanity/promotion/keep-em-distracted projects. People imagine overstaffed companies as full of idle engineers but I've seen instances of very busy overstaffed companies working on the wrong projects (migrating to Go because, using Protobuffs for a simple eCommerce API that does not need it, creating a component library for a small internal tool that will not grow much, building your own chat system, etc).
I do think the platform org’s choices can cause a lot of low quality churn for the rest of engineering, and everybody resents having to switch out a perfectly fine dependency for somebody’s half baked promo project, but even the platform group when it does these things is trying to save itself the headcount involved in maintaining legacy. As things get leaner, support for older stuff gets worse, and we have to do even more migration work of dubious value to tread water.
If I were starting a Big Tech tomorrow I would put a lot of value on choosing a stable, long term supported tech stack and laying it out so that platform teams can iterate without distributed migration efforts. But no one ever starts a Big Tech. All that is awkward in Big Tech is due to path dependence flowing from the understandably odd choices made by tiny startups.
At the benign end of the scale, you might need to use a more heavyweight tool than you'd like, because the company also has more intense problems and prefers to standardize on one tool. At the other end there's cruelty and farce. Elaborate workarounds for things that ought to be easy. Mind-bending debug sessions for what never should have been possible.
No one wants this to happen! The career incentive is to ship. We're tearing our hair out over it - honestly a big reason people have side projects is the catharsis of just doing everything the sane way. Overcomplication is a dysfunction that plagues engineering organizations. But the solutions are more subtle than "just say no" - it's about the quality of the company's platforms, degrees of NIH syndrome in the platform group, tradeoffs made between freedom and consistency in system design culture, wisdom and foresight in anticipating how different things will interact, etc.
Also underrated: at the time the company needed an X, Y was not around yet, so we adopted X. Yes everyone now agrees Y is better. We are migrating to it, but that takes time. No you can't have your own instance ahead of schedule. so you need to make do with X, even though it is worse and more complicated.
Good point. The end result is the same: inefficient allocation of resources that could pass for productivity. Weird incentives at the management level.
Firing productive engineers isn't going to fix managers whose vision is not aligned with business needs.
In my corporate life, I saw total of two exceptions to that rule ( now and my previous boss ).
My guess is "undercompeted", though I'd hope there is a better word.
If an organization has a large and secure revenue stream whether is works on improving output or not, it will focus inward, on making life better for the insiders, not the customers.
It's not always obviously true that there is such a project. Neither companies nor teams are fungible enough to make this necessarily true, at least not to the extent that ROI is expected to be higher than a smaller more focused team.
I think a lot of companies suffer from premature optimization. I myself even fell victim to it in one of the projects I worked on for that company by rewriting a large portion of the code instead of hacking the new feature in.
It is a hard problem to solve for. How much tech debt do I take on now to deliver customer value. I guess that is something that just comes with experience though. I have noticed that has I gain more experience I am not enamored by the new shiny framework as much anymore and focus more of my effort on delivering whatever feature is needed with the smallest change possible. Yeah this creates tech debt, but at least it keeps the lights on especially when every service seems to get rebuilt in 5-10 years anyways.
I would imagine improving throughput a fractional percentage point could have multiple millions of dollars in return for any company close to FAANG size. I fail to see how these are good examples of 'wasted' engineering effort.
Building your own chat system is a good one though, definitely seems like a vanity project.
It's entirely an economic problem, not a "too many" or "not enough" people problem.
Sorry you got laid off. If anything, I felt like the Stripe layoffs we're a bit of a special case, because I've seen Stripe churn out tons of useful new features and functionality over the past couple years, in contrast to some of the other tech layoffs where the companies seem like they've been treading water for years.
Thankfully I had no children, no mortgage and lived well below my means. As such, it was quite possibly one of the happiest moments of my life, instead of the worst. I could only imagine how I would have felt if I just bought a house, or had a child.
I was so eager to sign the papers to move on. In retrospect, I was foolish to have stayed as long as I did. It was an amazing place to work in the early days, lots of talented colleagues I had learned much from, about work, about life, but by the end, it was a shambling zombie, decomposing before our very eyes.
We were summoned into an office with a cheerful HR person, armed with a PowerPoint presentation. A box was passed around to toss our many years worth of phones into. I'll never forget being asked, "Does everyone know why we are here?" at the very start. We did.
I wish good fortune to anyone who has lost their job in the recent layoff rounds. There is light at the end of the tunnel. Given some time and luck, you might even land in a better place (I feel blessed in that respect).
1. Obviously it is painful for the person getting dumped/fired. But long term it's probably for the best as it gives all parties the freedom to choose other options and move on.
2. There are usually signs that should allow most people to prepare long before the breakup/layoff happens. You say "I was foolish to have stayed as long as I did" - can't comment on that, but I do hope that you knew it likely that a layoff was eventually coming and you took adequate preparations (saving more, keeping your resume up-to-date, etc.) for that likely event.
This hits close to home. The industry is full of sales driven companies that are like a castle in the middle of a lake supported by sticks. Removing even a few of those sticks (engineers) can make the whole thing collapse.
The problem is by then it's too late. You now have systems, architecture and processes designed to be an empire, and you can't staff it like an SMB anymore.
This would be fantastic satire if only it wasn’t real.
Maybe it's good if the BigCo's get hit hard in a recession, so some of the startups that do stuff other than advertising can get some of those sweet, sweet "10x programmers".
I still feel very bad for all those laid off, I've been laid off 2 times in the past 3 years due to startups closing and that probably isn't the end of it for me either.
A more plausible reason seems to simply be that companies have had their stock prices hammered, earnings fall off, and need to control costs, and for software companies, their main costs are people and infra. There is simply no need for the underperformer myth.
Stop listening to VCs! Don't throw your coworkers under the bus.
But, at least for a large subset of tech companies that have had layoffs, there is data to back up this claim. That is, many companies went on huge, gigantic, enormous hiring binges during the pandemic, often expecting a "new normal" in terms of overall spending on internet and other tech services.
I mean, look at Twitter employment over time: https://www.statista.com/statistics/272140/employees-of-twit... . With the layoffs they'll be not much under pre-pandemic levels. Jack Dorsey even said he hired too fast: https://twitter.com/jack/status/1588913276980633600. The same rationale was given by Patrick Collison for Stripe's layoffs: https://stripe.com/newsroom/news/ceo-patrick-collisons-email...
I hate to be "that guy", but I've been saying the same thing for a few years, based on my observation that about a third of the software engineering staff does the vast majority of the actual useful work while the rest is playing around, not infrequently making life harder for the third of actually useful people.
I don't have hard data, just anecdotal evidence.
It's probably not a binary thing though: both could be true to some degree, and details will no doubt differ per company.
Management wasn't keen on spending money on medium or long term projects. Instead, they would redirect resources to short term, high single sale impact, or performance critical stuff, thus no good features were added for a while and people got severely burnt.
I suspect that the misalignment in resource allocation with actual requirements, is a larger problem than overstaffing, and all derives from wrong management incentives.
However, your org is typically the one that you hired, trained, and grew. So, if you are saying that you failed to make the commitments that you promised because your org sucks, then you are just telling everybody that not only did you not fail to meet your commitment you are also not good at building an org.
You can't blame your underlings, if you blame your underlings then people aren't going to think you are doing a good job. If you have any character you will take responsibility and admit that you failed. Then you will work with others to fix the issue, it's not the end of the world.
Now, if you really want to deflect blame, there are many better places to deflect it. You can blame
1. The business/sales/product/external factors ... whatever, they imposed a deadline that was unrealistic. You were brought in too late and you did the best to salvage the situation.
2. A parallel org that you had an external dependency. Bonus points if you compete for budget with this org. If you can successfully deflect blame to those yahoos in the parallel org, then maybe you'll capture some of their budget and get more head count to grow your org. Yes, you want to grow your org. This is another reason why blaming your underlings is a bad idea. Why would you get more budget to grow your org, if you've done a bad job at hiring and training your current org.
In conclusion there are a bunch of bad middle managers out there, and it might be widely thought that blaming the underlings and ICs is a good move. But it's a terrible move for both selfish and selfless reasons. Even bad managers will know that it's a terrible move.
At annual profitability of $Y per employee, you have a bar for what you need to earn from hiring your marginal next employee. The “core” business top 1% might be earning $10Y per employee, but if you can earn $1.5Y per employee for 10k new hires to spin up new product areas, you would be negligent (and fired by the board) to not do so.
This is one of the main reasons big companies tend to bloat.
I think the narrative of “most companies are overstaffed” is a bit of an over-simplification. If the goal is to maximize shareholder return in the medium-to-long-term, this is not so. If the goal is to execute the core mission, sure, but that’s a much less valuable company in most cases. And from a portfolio theory perspective, probably a less durable one too, since you don’t have a backup plan.
Now, Twitter never had $10Y per employee, so you could justifiably claim they are overextended. But I don’t think the same logic works for the MAGMA.
Everyone knows that there is 1 or 2 golden goose teams supporting the entire rest of the company (iPhone, Facebook Ads, Google Search Ads). But smart people also know that one terrible quarter for any of those and the house of cards comes down.
So 90% of the employees are concerned year-round with goose-hunting. Maybe once or twice a decade they find one.
I define a skeleton crew as roughly 10% of the organization. If you cannot run your basic organization with just maintenance and basic bug fixes on 10% of your team, you have too much complexity in your system and you need to work to reduce your maintenance burden. If you need less than 10%, you have an well-architected system, or you have a very small system.
Everything else in the system is research and development. These are new features that will drive revenue, or reduce non-engineering support costs, or otherwise drive new capabilities of the business. In that sense, every successful business is over-provisioned because they are all working on business bets for more revenue.
So yes, every company can be leaner, but it will be at the expense of growth. Now, there are more subtitles in the article to address within that context. For example, it is also true that managers will keep an underperformer for longer so long as there is a net positive because they may be struggling to hire otherwise, or they may be bracing against future layoffs. (A lean, effective organization in an org that otherwise has game theory about layoffs knows that you keep people around that you're not afraid to lose. It's a terrible way to run an organization but it happens.)
It is also true that we have work to do to level up the engineering management profession, as mentioned by the article.
However, when discussing this, the key driver of employment growth is the pursuit of revenue growth and I think that's the primary lens and disconnect here.
So yes, 10% is arbitrary as anything not coming from a peer-reviewed study would be.
The company doesn't control the worker anymore than they control the supplier of their electricity or materials.
If you have sold your time and labor to accompany it is their resource until you decide to stop supplying it.
I don't think anyone on either side is under the misconception that the police will hunt down Rogue workers. Who is concerned about this confusion and why?
There are lots of resources that are difficult to obtain more of and or replace. On the other hand, I don't think calling workers people instead of resources does anything to address a belief that they are fungible, if in fact they are not.
Sure, if that's a fair description of the situation then I don't have any problem with the word resource. But the word implies that this is a fair description of the situation. I think most people who do take offence with the word would also consider that description of their work degrading and incorrect. You can't write a great novel just because you have enough labor, and you can't write any innovative or interesting software either.
If people feel diminished by being compared to money (capitalism yes? but fungible perhaps) or time (clearly the most important thing that any individual can allocate), then I am not sure how to comfort them.
I try to avoid using the word. It's easy enough to do. But I've never understood the objection.
I try to be a resource to the people I work with. I supply knowledge and energies for the benefit of people who are upwards, downwards, and sideways in the org chart.
I count on other people in the same directions to do the same.
This does not minimize them, or pretend that they are interchangeable.
Some resources go dry. Some are redirected. Some expire.
I think those who object to "resource" are adding some connotation to the word that does not need to be there. Resources are good and valuable things. They are not to be wasted or abused or taken for granted.
I think it’s in the meaning of the word plain and simple: it implies a level of control. I think it’s fine if you have that control. But if you don’t then you’re abusing both the word and those of your coworkers that dislike it.
I think it’s also detrimental to the business. In my experience it’s not the average joe or low performer that takes offense.
But if you boil it down, the resource we're talking about here is an employee's time and energy, which they offer to an employer in freely-chosen and equitable exchange for compensation. Not about the employee as person.
So it's also reasonable for an employer to expect a measure of control over how that time and energy is used.
And if they need more of that time and energy, it's reasonable to think about it as a limited and valuable resource.
Again, the connotations of the word are entirely positive in my opinion. Others think differently, so I avoid the word in the human context. But it's a good word.
It just seems fragile and delusional when the basis of the relationship is objective in nature.
I love my spouse and wouldn't want them to objectify me. I don't pretend my employer pays me because of a deep appreciation of my individual character.
At some point there may come a real crunch and recession, and things may be a bit hard for a year or two, but it won't be a "New Normal".
People need to give up on this idea that every dip in the market or whatever reflects a permanent change in condition.
I gladly left.
They fired me 2 days later, one of the reasons being "you're not cutthroat enough for this business".
It can sure seem that way initially, but I know two people for whom it was the kick in the pants they needed - they started their own businesses and were much happier a year later.
Sometimes it's easier to just keep going to work every day than do what you really want to.
He seems to be calling out Twitter specifically, but is anybody really being otherwise there? I mean - I can understand (and will gleefully participate in) the schadenfreude of seeing the self-righteous Twitter censors being forced to find actual work commensurate with their marginal value to human civilization, but he seems to be talking about the rank-and-file types who carry pages and write product documentation.
Absolutely not. I’d be neutral.