High turnover also contributes to tech debt. When turnover becomes ingrained in company culture, engineers have no incentive to care overly much about the overall health of the code base.
I can attest to this because the company I currently work for has the highest turnover I've ever experienced. People are barely making it 8 months, meanwhile the bosses are pushing for faster growth to match our newish funding. That's leading to people who have been here for 2 months hiring _more_ people to replace the people who left at 8 months. Just about every project is suffering from simply not understanding what it does or how it works, which leads to more burn out which causes even more churn. I've never seen the cycle this close before and it really is wild just how bad it can get.
The current job market is punishing poorly run companies. It's too easy to pick up the phone and get a new job quick these days if you're unhappy, contributing to churn.
Some industries are so backwards and difficult to disrupt that many companies can just continue operating this way for many generations of staff turnover.
Once the talent pipeline fills up (not likely) or leadership realizes that technology is a mixed blessing and may not be worth the complexity. Right now you have to have technology to compete but eventually mid sized companies will realize it's not worth the millions a year it takes to try and keep up with the Joneses and keep the technology as simple as possible.
However, it's also difficult to find unskilled labor so the only alternative is automation. Just look at all the companies that won't answer a phone anymore and force you to do everything through an app.
So IMO tech wages will remain high for quite some time.
Many people look at a chart that goes up and down and imagine they see cycles. It's popular to speak of business cycles, for example. Unfortunately, it is not clear that anything in the economy oscillates such that it's appropriate to describe the system as having cycles.
You might have heard of Fourier transforms. Any time-series can be transformed into its sinusoidal components, even if a composition of waves is not a good model.
It's possible, and in my opinion more likely, that the business cycle is not a cycle at all.
Close. It's more a comment on the structure of those random variations, and whether it's appropriate to describe the system as periodic at all.
For example, sometimes it rains, and sometimes the sun shines. Is the weather cyclical? Depends on the place, time, and time-scale you're considering.
Maybe a better example is roulette. If you watch the "cycles" of red and black, you might imagine you could make predictions. Gamblers are often fooled by this randomness.
This is a good observation that I upvoted because it's very relevant. A lot of things look like cycles but have no oscillating dynamic, it's true.
But you could suppose that business cycles are caused by a build-up of bad debt. Things to well, debts can be paid, collateral gets worth more, more investment, etc. This can't go on forever and the reverse cycle then occurs, often as rates come up. Soros store about this and called it reflexivity.
Of course I'm not saying business cycles are definitely caused by this, there's probably more to it than that. But it's a common explanation.
Why does it build up? A generalized autoregressive model explains that just as well as an oscillator does. The key difference is how predictable the periods are. The more waves you're composing to force the oscillator model to fit, the less likely it's appropriate.
How is everyone moving and also moving somewhere better? Is it not the case that the majority of open job opportunities are ones other people have recently left from unhappiness?
I think there's a lot of "grass is greener" moves happening. Unless you have trusted friends working in a company, it is very hard to tell if it actually is better than your current situation until you've tried it. None of the sources of information available to an outsider (including Glassdoor reviews and HN posts extolling the virtues or sounding off about the horribleness of a given company) are particularly predictive of what your individual experience will be, from what I have seen. There's just too much variability, and too much bias in each narrator.
Not only that, jobs seem to have a "honeymoon" period after which you start to notice more issues you might have originally ignored (so things seem fine for the first few months)
> How is everyone moving and also moving somewhere better?
Several of us exited a toxic company semi-recently.
For what it's worth, it was common for people to take minor cuts to total compensation. The old, toxic company had evolved to pay well because it was the only way they could retain people (however briefly) through the obvious toxicity. We just didn't talk about it publicly much.
But it didn't matter. Huge quality of life improvement and I don't really miss the extra money.
I just ask if they do daily standups, and see what they say. It's a pretty good indicator. The more clueless the more religious they are about them (imho)
I have the opposite experience. When people typically stick around for the majority of their career, there's no incentive to capture knowledge thoroughly. Onboarding time was noticeably longer because of it.
Had to read quite a bit before Conway’s Law was mentioned, but glad it was.
Viewing organizations and software engineering through this lens has been a game changer for me personally. As an individual contributor I now appreciate horrendous technical debt and glacially slow development as systematic organizational issues, rather than blaming burnt out or lazy engineers.
Now I’m much more aware and critical of technical and executive leadership. “A fish rots from the head” is one of those quotes that resonates with me more and more everyday.
My guess: Each owner says "it's your turn to feed it", and so the cow is never fed. And when the cow does give milk, each owner quickly takes the milk, claiming they haven't got their share yet.
It's like the human-scale version of socializing the costs/risks and privatizing the gains.
That's exactly right. The original is "vaca de dos amos: ni da leche, ni come grano" (it rhymes as these things often do). Castilian proverbs are neat ("Refranero castellano"). Centuries packed into short sentences
Lots of re-orgs is also a pretty big indicator. A lot of VPs/directors need a reason to exist and they create that reason with reorganizations. This is basically the enterprise equivalent of pushing the food around the plate to make it seem eaten. With a re-org you can shed or minimize expensive to operate systems that don't generate a lot of clear value(i.e most tech-debt).
Out of curiosity, are you saying that most tech debt is systems that don't generate much value?
If you had asked me, I'd probably say that tech debt is mostly systems that do generate value but are built poorly or in a rushed manner. Deadlines creep up, devs crunch, they ship a "working" product but it has design flaws that manifest as technical debt.
But now that I think of it, I've definitely also experienced what you're mentioning (I think). I've worked on projects with questionable motives that ultimately end up cancelled or abandoned. The leftover code remains and continues to confuse newcomers.
Sometimes, there is also functionality grafted to the wrong place in the system, or on to the wrong system. This can happen for a lot of reasons: expediency ("we have to foo the bar, why don't you implement it there as the release window is just right for our purposes"), bad design, or changing requirements.
If it stays there for too long, it will complicate the design of the underlying system because it has to be kept alive for daily business to go on. Such features are sometimes hiding in plain sight, and are actually causing a lot of pain or cause long-term risks, but we are too shy or spread too thin to address the issue. And why should we? After all, it works at the moment.
For that I always remember the fable, where animals have bought all those expensive shiny musical instruments, but nobody knows how to play.
They are trying to emulate an orchestra, by rearranging the seats, in the hope that the right seating will make make them sound good. But the orchestra cannot play for the lack of individual skills and lack of the leadership.
I saw in enterprises, they are buying all possible software licenses, but nobody knows how to use them. So the management is constantly shuffling people and churning technologies, in the hope something sticks.
Most of the ills in this article would be fixed by better product management that has earned clout with senior management. For example, the product manager should be able to tell everyone what most likely constitutes a minimum viable product (MVP), and be able to defend that against, for example sales-driven feature creep. And on the other hand, product management should be able to communicate to engineering the value of time-to-market. If your product manager is unable to do this and is just tallying feature requests and trying to cram in as much as possible you are screwed in multiple dimensions.
Hire a department full of persuasive people. Expect to get persuasion. On top of which, subverting an organization's decision making processes and channels is a core competency of good sales departments. A two-edged sword if there ever was.
I assume they're gesturing at commissions? Salespeople are usually paid based on a percentage of the deals they close, incentivizing them to promise more to clients in a given timeframe than the eng team can realistically deliver. Then sales usually leaves it to eng to readjust the client's expectations. That's the classic conflict between the departments.
I personally don't really mind this since at the end of the day the entire org exists to support sales, marketing, and retention. Within reason, if those groups say they need something to bring in revenue then they get it.
Yes of course, but if you don't do it right you might get the sales (and the sales people get their bonuses) but the retention will be abysmal. For example, a salesperson who promises features or deadlines without consulting the tech team about what's doable will cause unnecessary crunch, poor quality releases and angry customers.
I mean it is because it’s a thing that engineers worry about mainly because of ego and pride. I know that’s triggering but let me explain…
As humans we all have ego and want our work to be important which is why tech debt is important to engineers who have a myopic view of their value and what businesses can actually bear.
- I have seen companies with loads of tech debt lose 60% of their engineering staff in a year with no impact to business.
- I have seen companies with loads of tech debt cause production deployment slow to a snails pace AND still have rapid consumer growth.
Engineering is important when it’s important but once product-market fit and a great moat has been achieved that value diminishes considerably.
The problem with technical debt is, in my experience anyway, that decisions have such a delayed impact that it's difficult for a group of people to understand cost and benefit. To work with the example you gave: You can tell that losing 60% of engineering staff didn't have a negative short term impact. How about 5-10 years later? How fast can the org move at that time vs if they had more staffing and less technical debt?
The whole idea behind the concept is that it _can_ be a good business decision to reduce spending (i.e. new features) and focus on paying off your (technical) debt for a while. It might as well be more important to make progress in the short term, no matter the cost. But the important point is that it's not a technical decision, it's a business decision. And the whole metaphor of technical debt is just one way of moving the conversation to that level.
If you had said ”tech debt typically isn’t as big a deal as engineers think it is” I would’ve agreed with you, but ”tech debt isn’t a thing” is hyperbole to such a degree that it stops being helpful, never mind true. I realize that the former is not as pithy. And I think you agree, given your last paragraph.
For example, I’ve seen companies where tech debt has made them unable to meet the moment and fail, whereas if they could’ve delivered something better, quicker, they might have had a lot of success.
Not being able to use the shiniest version of everything isn't tech debt, it's brownfield development or maintenance mode. Using deprecated versions (beyond LTS), ignoring security advisories, and not replacing unmaintaned OSS packages are. It's a bit facile to reduce all of that to developers just being juvenile divas.
In some cases, tech debt is as small a threat to business continuity as IT security is. That is, it isn't a problem till it's suddenly a massive problem. In other cases, it causes development cost to slowly increase over time, at which point it depends whether the organisation/cash flow can bear it. Your proverbial moat, or perhaps corporate momentum.
I would question whether incurring tech debt is generally really part of a greater strategy at the organisational level. It's a symptom of myopia. In any place I've worked, it wasn't a balancing act, but rather being willfully ignorant about the application lifecycle, technology, security implications and knock-on effects. No one said "let's move fast and fix 'er up later". At least not in earnest.
This is hyperbole and based upon anecdotal evidence.
As a counterpoint I've been part of a company that "failed" due to overwhelming tech debt. I was one of the "lucky" few that was kept on after the redundancies in what was a shell of the former company (50 employees down to 10).
I should have left with everyone else but I had only just started at the company 3 months prior and didn't want to look like a job hopper.
Bologna. I've seen monstrous tech debt all over my Fortune 250, and it's pushing us further and further away from competitiveness and profitability. And it's not just the approach to software. They're also sabotaging long-term strategic viability by only hiring product engineers who are fresh grads from overseas, who never stay in one position long enough to develop or pass on institutional knowledge. Unfortunately/fortunately, it's a business that is ultimately doomed in the face of newer technologies that WILL, eventually, take over our market, so I guess it won't matter. However, I still think we could turn the corner of renewable tech if we hadn't sacrificed properly investing in people and tools. But that would have required serious leadership from several C-levels, and, well, that's just not how the world works.
Tech debt is a thing for any non-trivial product. The more tech debt, the slower it is to create working increments of a product and the more risky changes are.
I have experienced products of which the development has ground to a halt due to the system having such complex interconnections that every change required everyone in every meeting to assess the impact of a change. The root cause was constantly churning out MVPs with no thought of architecture and no overall management of the product or teams. I was the architect hired to clean up the mess.
> Fortunately for us, the realities of flat organizations are pushing them out of favor and lively conversations about engineering leadership as a craft are taking over. Flat organizations are a nice idea, but they just don’t reflect how people behave.
this makes me wonder who "us" means.
i make the educated guess it's "managers", which were dead weight in the Apple engineering scheme I joined, which functioned super efficiently without them, as it was emphasized how flat was a feature, not a bug, for getting things done.
Flat organizations over a certain size just develop their own hierarchies usually based on seniority. If you can’t see them, you’re just on the bottom.
Flat organizations also end up building the same thing 4 or 5 times because nobody talks to eachother. As a consultant, I love flat orgs — it means we’ll be there for a while because nobody can really tell us to leave.
I think the critical Apple enabler of flat orgs was size limits by division, preventing what you saw. (And I was a couple jumps from the top, nowhere near a bottom, which as size was limited wasn't so much a thing it seemed.)
Is there another way to view the full article? I'm only seeing the first paragraph with no errors or popovers, and I'm not about to disable uBlock for medium.
> Like Google or Facebook these are organizations where engineering trumps everything else. If you’re not in engineering, your pathway to promotion is limited.
Just browsing Facebook's board...
MZ-dropout
SS-MBA Mckinsey etc
PA-Accounting and Business studies
NK- economics & management, Mckinsey again
RK - lawyer
PT- lawyer
Yeah, especially that in the context of this article, the distinction between Engineering and Product is presented as
> Engineering wins by producing beautiful and scalable systems, in pursuing that they sometimes build too complex too quickly. Product, on the other hand, wins by putting new stuff in front of customers as often as possible.
Same, a lot of people relocated during the pandemic but to the same places, some Googlers told me they had never hung out with engineers at Google till then
Facebook has produced the best open source software seen in the last 20 years. React basically solved front end frameworks, and pytorch steam rolled tensorflow.
> The quote above says that not being an engineer will stop promotion.
Speaking as a DS who knows a lot of FB people, this is totally true. If you have a product team deliver something cool, the engineers on that team will normally (modulo variability) be rewarded a lot more than the DS people. Sometimes PM's get some of that, if the product is very successful, but the variability is lower and the mean is higher for engineers at that company (apparently).
1) Founder/cofounders
2) investors
3) people who do not work at the company and are not investors that people in groups 1 and 2 think will be on their side during important votes
In the UK corporate governance code it is quite clear that a board should have an exec CEO and a non exec chair. The chair runs the board the CEO runs the company. The board oversees the CEO. It would be extraordinary (and pointless) not to have some execs on the board.
And it would be extraordinary and pointless if the board members were all employees, it has a separate function of supervision and thus is usually mostly non-employees outside the CEOs chain of command.