Remix.run Logo
BirAdam a day ago

I study and write quite a bit of tech history. IMHO from what I've learned over the last few years of this hobby, the primary issue is quite simple. While hardware folks study and learn from the successes and failures of past hardware, software folks do not. People do not regularly pull apart old systems for learning. Typically, software folks build new and every generation of software developers must relearn the same problems.

malfist a day ago | parent | next [-]

I work at $FANG, every one of our org's big projects go off the rails at the end of the project and there's always a mad rush at the end to push developers to solve all the failures of project management in their off hours before the arbitrary deadline arrives.

After every single project, the org comes together to do a retrospective and ask "What can devs do differently next time to keep this from happening again". People leading the project take no action items, management doesn't hold themselves accountable at all, nor product for late changing requirements. And so, the cycle repeats next time.

I led and effort one time, after a big bug made it to production after one of those crunches that painted the picture of the root cause being a huge complicated project being handed off to offshore junior devs with no supervision, and then the junior devs managing it being completely switched twice in the 8 month project with no handover, nor introspection by leadership. My manager's manager killed the document and wouldn't allow publication until I removed any action items that would constrain management.

And thus, the cycle continues to repeat, balanced on the backs of developers.

ajkjk a day ago | parent | next [-]

Of course the reason it works this way is that it works. As much as we'd like accountability to happen on the basis of principle, it actually happens on the basis of practicality. Either the engineers organize their power and demand a new relationship with management, or projects start going so poorly that necessity demands a better working relationship, or nothing changes. There is no 'things get better out from wisdom alone' option; the people who benefit from improvements have to force the hand of the people who can implement them. I don't know if this looks like a union or something else but my guess is that in large part it's something else, for instance a sophisticated attempt at building a professional organization that can spread simple standards which organizations can clearly measure themselves against.

I think the reasons this hasn't happened is (a) tech has moved too fast for anyone to actually be able to credibly say how things should be done for longer than a year or two, and (b) attempts at professional organizations borrowed too much from slower-moving physical engineering and so didn't adapt to (a). But I do think it can be done and would benefit the industry greatly (at the cost of slowing things down in the short term). It requires a very 'agile' sense of standards, though.. If standards mean imposing big constraints on development, nobody will pay attention to them.

johnnyanmac a day ago | parent | next [-]

You forgot c) we're in a culture where people jump ship every 3-5 years. There's no incentive to learn from mistakes that you don't talk about at the next company, nor any care for the long term health of the current company.

>a sophisticated attempt at building a professional organization that can spread simple standards which organizations can clearly measure themselves against.

We have that as a form of IEEE, but it really doesn't come up much if you're not already neck deep in the organization.

jakub_g a day ago | parent | next [-]

> 3-5 years

That's maybe in Europe. Plenty of US developers those days have a litany of ~1-2 year stints at FAANGs and startups du jour in their CV.

asa400 a day ago | parent [-]

Speaking as someone in the US, I've worked at multiple companies (some startups, some small businesses, some larger) that have either outright imploded or had mass department-level layoffs inside that 1-2 year timeframe. Some of them I would have stayed at longer than 1-2 years if I had the choice. I'm not claiming it's universal by any means, but there is a lot of volatility at US businesses in my personal experience.

venturecruelty a day ago | parent [-]

And as usual, the employees get blamed. Maybe people wouldn't jump ship if companies didn't lay people off with reckless abandon, or hire sociopathic bosses to manage people, or screw them out of raises, or overwork them, or lie during the interview process.

The little people are going to do what they need to do to survive. If these multi-billion or even multi-trillion dollar companies feel some type of way about it, well, they're the ones with all the power, not us. They're more than welcome to change the culture at any time.

tines 13 hours ago | parent | prev | next [-]

Jump ship every 3-5 years because if you don’t, your wages will stagnate. A prophet has honor except in his own home as it were.

ajkjk a day ago | parent | prev [-]

True although perhaps that is part of (a), things move too fast.

BrenBarn a day ago | parent | prev | next [-]

It "works" only on a certain timescale. We don't have sufficient incentives and penalties to make things fail quickly. A relevant example in the tech world is data breaches. If data breaches resulted in a thorough public audit and financial/criminal penalties for the managers who pushed for speed over safety, they would no longer "work".

> If standards mean imposing big constraints on development, nobody will pay attention to them.

Unless there are penalties for not doing so.

> tech has moved too fast for anyone to actually be able to credibly say how things should be done for longer than a year or two

But that's just it. If things are moving so fast that you can't say how things should be done, then that tells you that the first thing that should be done is to slow everything way down.

malfist a day ago | parent | prev | next [-]

I agree wholeheartedly that collective action is how we stop balancing poor management on the backs of engineers, but good luck getting other engineers to see it that way. There's heaps of propaganda out there telling engineers that if they join a union their high salary will go away, even though unions have never been shown to reduce wages.

pluralmonad a day ago | parent | next [-]

I've worked places that refuse to fire low performers and its hard for it to not be toxic. I'm not saying this outcome is a forgone conclusion of unions, but my union experience is that poor performers take even longer to get rid of and I'm not sure I would be interested in that sort of environment again. This is more of an implementation problem than philosophical, but theoretically good and practically bad is still just bad.

ghosty141 17 hours ago | parent | next [-]

You don't have to fire "low performers" you just have to be realistic about their skillsets and use them that way.

If you see an engineer is out of his depth then change his position, no need to fire them since like others have pointed out, that can have severe consequences in their personal lives and most of the time they can still be useful if they get more adequate work.

__loam 20 hours ago | parent | prev [-]

Until healthcare and housing aren't tied to employment, making it easier to fire people will always be the monstrous position. If you want firing people with abandon to be socially acceptable then you need a public safety net. Until that's in place, I'm always going to be on the side of labor organizations demanding dignity than the people destroying lives.

mgfist a day ago | parent | prev | next [-]

I don't like unions because one bad hire can destroy a whole team, and the option to remove that hire is worth more than any benefit a union can give me.

I also think people here misunderstand what unions do. Unions are inherently conservative (small c) institutions that aim to protect the status quo. Improving processes is not a fundamental goal to unions. We saw this with the ILA that fought to essentially ban automation in the ports that would drastically increase efficiency because of the belief that this would reduce union jobs. It's foolish to think software unions wouldn't end up becoming like this.

ghosty141 17 hours ago | parent | next [-]

> I don't like unions because one bad hire can destroy a whole team, and the option to remove that hire is worth more than any benefit a union can give me.

In MANY other countries there is already WAY more regulations regarding layoffs and firing employees that has nothing to do with unions.

In Germany there is a probationary period in which you can just fire somebody for no reason basically. That time can be like half a year (in my case) and in most cases it becomes clear if the new hire fits your team or doesn't.

All unrelated to unions though. The big unions in Germany for example have a lot of power and if you are just a simple welder for example you'd have no chance getting anything done without a union.

nradov 11 hours ago | parent | next [-]

And this is one of the key reasons why Germany is economically stagnant, especially in the software industry.

WinstonSmith84 16 hours ago | parent | prev [-]

> In MANY other countries...

When your scope is Europe ... The US is not the exception in the world, it's Europe which is.

The US has a dynamic job market where it's easy to lose your job, but easy to find another one. In Europe, and that's true for most EU countries, it's really hard to lose your job, but it's also really hard to get one for the very reason it's hard to get fired - and when you get a job, you will have to compromise on compensation and other benefits. It's not black and white here. While the European market is appealing to some people, the US market is preferable to others.

ghosty141 16 hours ago | parent | next [-]

> It's not black and white here. While the European market is appealing to some people, the US market is preferable to others.

I agree with that, it's a very individual topic. I'd say for high paying "high performance" jobs the US model definitely has an advantage but for low-wage jobs it's quite the opposite.

throwaway2037 14 hours ago | parent [-]

No need to go as far as "low wage". Having strong labour protections is great if you are middle class and below.

throwaway2037 14 hours ago | parent | prev [-]

Counterpoint: Denmark has something called Flexcurity: "flexible" + "security". Basically, it means you can hire and fire more easily than traditional socialist market economies. There is a good social safety net, but it is (somewhat) time constrained to pressure people to return to work quickly.

WinstonSmith84 13 hours ago | parent | next [-]

Good insight. Let's see whether Denmark remains competitive.

LtWorf 13 hours ago | parent | prev [-]

Yeah and denmark finally voted left because they are finally getting tired of all this right wing shit that brings no benefit to workers.

WinstonSmith84 13 hours ago | parent [-]

Did they vote left? And that's the same left pushing over and over the Chat Control? That's an interesting twist if it turns out it's not always the right wing trying to undermine privacy rights.

LtWorf 12 hours ago | parent [-]

You think Ursula von der Leyen is left wing? Like Lenin, Stalin and Ursula von der Leyen are in the same political party?

WinstonSmith84 12 hours ago | parent [-]

She is the European Commission president, that's unrelated.

But that made me curious, and answering my own question, it's this guy https://en.wikipedia.org/wiki/Peter_Hummelgaard who is indeed a Social Democrat .. So much about workers rights, funny ...

LtWorf 4 hours ago | parent [-]

Well the proposal came from the european commission, doesn't seem that unrelated to me.

gverrilla 17 hours ago | parent | prev | next [-]

"thanks for preserving status quo" - your boss

mgfist 3 hours ago | parent [-]

I've had a really shit boss who was thankfully fired and I wouldn't want him to have been in a union either.

__loam 20 hours ago | parent | prev | next [-]

I'd rather have the protections for my working conditions than worrying about whether my co-workers are contributing enough to the company's bottom line but maybe that makes me an outlier here.

mgfist 3 hours ago | parent [-]

I'd say it does. I take pride and meaning in working. Life's too short to not care about a thing you do 8 hours a day. And bad colleagues doesn't just include people not contributing enough.

LtWorf 13 hours ago | parent | prev [-]

There's trial periods… why do you notice a bad hire after 5 years?

mgfist 3 hours ago | parent [-]

People change, roles change, responsibilities change, motivations change.

ajkjk a day ago | parent | prev | next [-]

My hunch is that software engineers are averse to unions because they correctly perceive that unions are a wide angle away from the type of professional organization that would be most beneficial to them. The industry is sufficiently different that the normal union model is just not very good and has a 'square leg round hole' feeling.

For instance by and large the role of organizing to not to get more money but rather to reduce indignities... Wasted work, lack of forethought, bad management, arbitrary layoffs, etc. So it is much more about governing management with good practices than about keeping wages up; at least for now wages are generally high anyway.

there are also reasons to dedend jobs/wages in the face of e.g. outsourcing... But it's almost like a separate problem. Maybe there needs to be both a union and a uncoupled professional standard or something?

johnnyanmac a day ago | parent [-]

what type of professional organization is most beneficial? Standards are already out there, but they need a union or government regulation to be enforced. Devs who want real change need to pick their medicine, or continue to let the industry stagnate.

>the role of organizing to not to get more money but rather to reduce indignities

agreed. And I think that's why it's going to really start taking hold as we enter year 4 of mass layoffs in the US (because outsourcing). Alongside overwork from the "survivors" and abusive PIPs to keep people on edge.

fugalfervor a day ago | parent | next [-]

> year 4 of mass layoffs in the US (because outsourcing)

A lot of the layoffs appear to be about conserving cash for investment in AI. In many cases the jobs that are cut are not backfilled by workers in the US or abroad.

nradov a day ago | parent | prev [-]

It's wild to claim that the industry is stagnating. By any objective measure the industry is larger, more influential, and more innovative than ever before. Perhaps the problems that people are complaining about here just don't matter very much?

pdimitar 17 hours ago | parent | next [-]

When was the last time you had to look for a job?

nradov 12 hours ago | parent [-]

2024

pdimitar 11 hours ago | parent [-]

I take it you have a good reputation and a network then. It is getting increasingly difficult to get hired lately, even as a senior. At least in the EU.

nradov 10 hours ago | parent [-]

It's a shame how the EU has sabotaged their own software industry through a mix of excessive regulation, misguided labor protections, and failure to develop broad capital markets. It's like they're collectively choosing to be poor and backward. I can't understand it.

pdimitar 10 hours ago | parent [-]

I can't understand it either. To me it seems people are excessively risk-averse. I can understand that but I don't understand the leadership not trying to stimulate a little bit of risk and growth there. It's getting to absurd levels at places.

But regardless. Not like USA companies are open to EU citizens currently. Whether it's politics, compliance / legal, or tax-related, it does not matter much. Most US job ads I've seen lately are making it super clear that they want only US citizens.

venturecruelty a day ago | parent | prev | next [-]

More innovative? Is that why none of my stuff works anymore and is crammed full of crapware I don't want that spies on me?

Oh, you meant innovative for the shareholders. Got it.

nradov 12 hours ago | parent [-]

I don't know, maybe you're buying junk? I don't have that problem.

franktankbank a day ago | parent | prev [-]

> By any objective measure the industry is larger, more influential, and more innovative than ever before

What objective measures would you use?

nradov 12 hours ago | parent [-]

Pick any measure you like: total employment, revenue, patents, new venture formation, products shipped, etc. There are fluctuations from year to year due to the business cycle but overall the trend is up.

johnnyanmac a day ago | parent | prev | next [-]

Guess that's why gamedev is the one region where this is really starting to gain momentum. High salaries were already not a thing, and tend to mean nothing if you're laid off after 3 years of development for the release of a new game.

Though I think Gen Z in general will be making waves in the coming years. They can't even get a foot in the door, so why should they care about "high salaries"?

nitwit005 a day ago | parent | prev | next [-]

People aren't going to try to wrest control from management because some project is going off the rails. No one has any particular faith their coworkers will run anything better, and the pay checks show up regardless.

ghosty141 17 hours ago | parent | prev | next [-]

I don't think unions are the right thing here, you just need to get together as a team and talk with your higher ups, that's a far smaller scope than where unions normally come in.

But I totally agree, I think people are too compliant and fear banding together to have influence on higher ups. I'd argue in most places the engineers have far more power than they realize since they are in high demand due to shortages of qualified personnel. (at least in many countries in Europe)

There are tons of factors in play though that I believe contribute to this like some employees being friends with their higher ups not wanting to hurt their careers, not wanting the tough discussions, the repercussions if management says "no" etc..

pdimitar 17 hours ago | parent [-]

> you just need to get together as a team

"Just". Come on, man, you know better than that. I too like my sci-fi to be over the top unrealistic.

Truth is, nobody ever thinks about their rights before it's too late. The paycheck shows up on time every month and people just don't want to rock the boat. Not to mention all the opportunists that will tell on you immediately to gain the favor of the upper class.

These things are well-known and apparently nothing ever changes before the guillotines start working. I don't think anything will ever improve in our area. Nobody is bothered. The people who are have zero power. And so it goes.

ghosty141 16 hours ago | parent [-]

The "just" was more in the sense that it technically is not that hard to get together, there is nothing directly preventing that.

I honestly think it's just people who don't mind these problems and are fine working under those conditions, or they just quit once they are too annoyed. Change is way harder just than just leaving, I think that's also part of the reason why this keeps going on.

pdimitar 11 hours ago | parent [-]

Absolutely not, barely anyone is okay with it -- only the most naive and fresh of young workforce, and then not even half of them by my observations chatting with many people 20+ years younger than me. It's just that people have too much at stake to risk it. Families, mortgage, basic respectful existence even. Nobody wants to live under a bridge.

It's extremely sad. I did not want to live in such times but oh well, good thing anyone asked us, right?

nradov a day ago | parent | prev | next [-]

A union might help improve wages and working conditions in some organizations (although I personally wouldn't want one). But there is zero chance that a union could ever achieve widespread improvement in software architecture, methodologies, or project management. We don't have much consensus on the right way to do things, and what worked well in one circumstance often causes disaster in another.

stocksinsmocks a day ago | parent | prev [-]

How about licensure and liability instead? That’s the sword of Damocles hanging over the heads of the rest of the engineering world. Sure it’s a guild system with a new name, but if the bridge collapses, somebody is going to be in a courtroom.

nradov 11 hours ago | parent | next [-]

Customers are free to demand that software vendors take liability for certain defects or failures as part of contract negotiation. There's no need for governments to get involved.

For software that's actually safety critical, like avionics, there are already sufficient regulatory controls.

LtWorf 13 hours ago | parent | prev [-]

And the one in the courtoom is the head of the engineering firm, not the low level guy :)

stocksinsmocks a day ago | parent | prev [-]

Has union labor resulted in measurable improvement in production outcomes in any industry they’re found in? I don’t think going from “managers are unaccountable for failure” to “nobody is accountable for failure” is a good thing.

I think introducing more competition at higher levels may be better than eliminating it below. This should be happening because I’m pretty sure most PMs could be replaced by an LLM.

pdimitar 17 hours ago | parent | next [-]

How about we transition from “managers are unaccountable for failure” to “managers are accountable for every failure by default and are sued and have houses confiscated within two months of a case being open”? That must include CEOs as well though, not just some bootlicker PMs.

Executives are generally incompetent everywhere and of course they'll introduce a reality distortion field where none of them are ever accountable. That should be obvious to anyone. Question is why do all working people keep allowing it to happen. But the answer to that is also known and quite depressing, too.

BeFlatXIII 13 hours ago | parent [-]

In a world like that, I hope it becomes standard practice to shoot at and bomb the repo men.

pdimitar 12 hours ago | parent [-]

Of course every manager would want that. Who wants responsibility and taking care of their reports anyway.

__loam 20 hours ago | parent | prev [-]

Have you done any research into this or are you just assuming unions lead to bad outcomes because you've been propagandized for decades about it?

> This should be happening because I’m pretty sure most PMs could be replaced by an LLM

Says a lot about your understanding of these things.

pdimitar 17 hours ago | parent [-]

While I too doubt that unions would be a net negative and I might even suspect interference by paid malicious actors to discourage people to unionize and thus never have power, I can't agree with your skepticism that PMs cannot be replaced by LLMs.

Most PMs I've ever met had zero clue what they are doing. And no it's not only N=1 sample, same anecdote is heard from many, many other people.

But sadly enough, undeniable human incompetence there is not even the biggest problem. The "we will never make more reasonable deadline" is.

Most managers, not just PMs, are an objective net negative. As any ruling class always does, they get complacent and think that just putting their foot down is going to magically change reality.

parineum 11 hours ago | parent [-]

> Most PMs I've ever met had zero clue what they are doing. And no it's not only N=1 sample, same anecdote is heard from many, many other people.

Most people say that because they have no idea what a PM's job is and are upset that the PM isn't doing what they want.

pdimitar 11 hours ago | parent [-]

Highly irrelevant. Not my role as an individual contributor to hone and fine-tune their job description.

Fact on the ground is that they usually optimize the entirely wrong indicators and never ever optimize for avoiding future problems.

In my consulting and contracting stints I made it a habit to write down what crisis is looming on the horizon and making bets with my wife which one is going to arrive first. A fun little game.

Watching train wrecks in slow motion stopped being fun with time.

What PM's job is is above my pay grade. I want them to enable me and the team, not be a mouth piece of people with zero understanding of product _and_ of engineering. They are just there to ask you how is stuff going.

lazyasciiart a day ago | parent | prev | next [-]

For one project I got so far as to include in the project proposal some outcomes that showed whether or not it was a success: quote from the PM “if it doesn’t do that then we should not have bothered building this”. They objected to even including something so obviously required in the plan.

Waste of my bloody time. Project completed, taking twice as many devs for twice as long, great success, PM promoted. Doesn’t do that basic thing that was the entire point of it. Nobody has ever cared.

Edit to explain why I care: there was a very nice third party utility/helper for our users. We built our own version because “only we can do amazing direct integration with the actual service, which will make it far more useful”. Now we have to support our worse in-house tool, but we never did any amazing direct integration and I guarantee we never will.

SoftTalker a day ago | parent | prev | next [-]

Glad to hear that $FANG has similar incompetency as every other mid-tier software shop I've ever worked in. Your project progression sounds like any of them. Here I was thinking that $FANG's highly-paid developers and project management processes were actually better than average.

zingar a day ago | parent | next [-]

Same, I think this one post may have cured me of a life long (unrealized) obsession with working at FANG.

Aeolun a day ago | parent | prev | next [-]

Those processes take longer, and waste more money. At no point will I believe they don’t waste it in the first place.

jvanderbot a day ago | parent | prev [-]

They can afford to try a lot, why try better?

fishmicrowaver a day ago | parent | prev | next [-]

Reminds me of the military. Senior leaders often have no real idea of what is happening on the ground because the information funneled upward doesn't fit into painting a rosy report. The middle officer ranks don't want to know the truth because it impacts their careers. How can executives even hope to lead their organizations this way?

esafak a day ago | parent | next [-]

By not relying on direct reports for all their information.

ndiddy a day ago | parent | prev [-]

Well the US has lost every military conflict it's entered for the past 70 years. Since there's been no internal pressure to change methodology, maybe the US military doesn't view winning as necessary.

johnnyanmac a day ago | parent | next [-]

Those past 70 years weren't about winning. It was about making sure the enemies lost more out of it. The US is large and relatively stable and hasn't had to face extended war on its soil since the Civil War 170 years ago. There's no true skin in the game for those who start these wars.

bergesenha a day ago | parent | next [-]

Which is a good strategy, but do you think the afghans lost more than 2 trillion dollars?

hackandthink a day ago | parent | prev [-]

"The war began on April 12, 1861, when the Confederacy bombarded Fort Sumter in South Carolina"

170 years ago is 1855.

baud147258 a day ago | parent | prev [-]

> Well the US has lost every military conflict it's entered for the past 70 years.

Operation Just Cause? Desert Storm?

And, depending on how you look at it, the US won the war in Afghanistan and Irak, but lost the peace afterwards.

cco a day ago | parent [-]

Those might be the only ones? Desert Storm being the one that I'd probably call out, Just Cause was just so small.

One minor win, every major operation being a loss doesn't change the conclusion though imo.

I think it's also instructive to look at each of these operations and note that the two that were won were small, had clear objectives, and were executed quickly to meet those objectives and had no scope creep.

phantasmish 14 hours ago | parent [-]

Iraq had one of the largest militaries in the world at the time of Desert Storm. They had tons and tons of arms and equipment and a huge standing army to counter the persistent threat (and/or to provide their own threat) of resumed hostilities with Iran (that war was still pretty recent when Desert Storm took place)

I would agree that the US is notably terrible at occupations and getting involved in civil wars, at least since WWII, but Desert Storm was pretty much an unqualified slam-dunk take-a-victory-lap success against one of the top armies in the world that wasn’t an ally or a nuclear state—carried out on the other side of the planet from the US, to boot. Like I think Iraq was ranked top-10 at the time by many ways of reckoning military strength, and that wasn’t enough to effectively resist the US effort at all, really.

If that war seems small, it’s only possible for it to seem that way from the victor’s perspective, and only because we did such an amazingly good job of totally destroying Iraq’s substantial capacity to fight in a matter of weeks. In terms of deployed and engaged men and materiel it was really big, just fast because it was so very one-sided, and “cheap” in terms of casualties on the US side for the same reason.

cco 6 hours ago | parent [-]

You're agreeing with me, or rather I agree with you.

I consider Desert Storm an unqualified victory in an engagement that is in the same conversation as a Vietnam or Korean war, but still not quite to a WW level in scope or complexity.

munificent 11 hours ago | parent | prev | next [-]

So much of the world, especially the world we see today around corporate leadership and national politics makes much more sense once you realize this fundamental law:

People who desire infinite power only want it because it gives them the power to avoid consequences, not because they want both the power and the consequences.

The people who believe that with great power comes great consequences are exactly the people who don't want great power because they don't want the weight of those consequences. The only people who see that bargain and think "sign me up!" are the ones who intend to drop the consequences on the floor.

Sevii a day ago | parent | prev | next [-]

For how much power they have over team organization and processes, software middle management has nearly no accountability for outcomes.

AlotOfReading a day ago | parent | next [-]

Is it middle management that has no accountability, or executive? Middle and line managers are nearly as targeted by layoff culling as ICs these days in FAANG. The broad processes they're passing down to ICs generally start with someone at director level or higher.

nothatraman a day ago | parent | next [-]

In my experience it is the constant shifting of goal posts due to execs chasing the next shiny thing, or demanding a feature that they saw somewhere, or heard from client (singular, not plural)

llbeansandrice a day ago | parent | prev | next [-]

I've seen plenty of incredible engineers let go because of "performance issues" that were just poor project management and goal posts that moved so fast waymo should study them to improve their self-driving capabilities.

Shit rolls downhill and there's a lot more fuss when an engineer calls out risks, piss-poor planning, etc. than any actual introspection on why the risks weren't caught sooner or why the planning was piss-poor.

a day ago | parent | prev [-]
[deleted]
darth_avocado a day ago | parent | prev | next [-]

> For how much power they have over team organization and processes, software middle management has nearly no accountability for outcomes.

Can we also address the fact that “software spend” is distributed disproportionately to management at all levels and people who actually write the software are nickel and dimed. You’d save billions in spend and boost productivity massively if the management is bare bones and is held accountable like the rest of the folks.

jjtheblunt a day ago | parent [-]

that's how the inner sanctum engineering in Apple worked, just like you proposed, at least from 15 years ago to within the last 10 years. i could have been in a very lucky time window to have had that luxury, but it had been an Apple mandate to not have deep hierarchies at least in engineering.

uriegas a day ago | parent [-]

Maybe is because of what Steve Jobs mentioned about talented programmers having more power than CEOs as they can easily switch jobs.

jjtheblunt 20 hours ago | parent [-]

perhaps that was involved, but one thing clearly purposeful was people were seriously filtered for particular skills and personality (apple fit it was called back then), which created groups where individuals had unique skills and collectively the group members would naturally want to collaborate. it worked great.

(as an aside, this contrasts diametrically with Amazon, where i worked for a year for healthcare, not needing to because of Apple years' savings, but after a genomics startup i had joined ran out of funding, and wanting a new challenge; there skilled engineering types were presumed to be fungible assets for (not kidding) at least 7 layers of do-nothing bureaucrats making huge salaries...they could survive because sales on the amazon store extract something like the 30% royalty to amazon)

phantasmish 14 hours ago | parent | prev | next [-]

If you think our ability to measure developer productivity is bad, look into what we can do to measure manager productivity.

TL;DR your realistic options are snake oil that doesn’t work, or nothing.

Keep that in mind next time anyone’s talking about managing through metrics & data or whatever bullshit. All that stuff’s kayfabe, companies mostly run on vibes outside a very-few things.

MichaelZuo a day ago | parent | prev [-]

The real question is why would smart competent people continue working under management with blatant ulterior motives that negatively affect them?

Why let their own credibility get dragged down for a second time, third time, fourth time, etc…?

The first time is understandable but not afterwards.

pixelpoet a day ago | parent | next [-]

Astronomical salaries probably has something to do with it.

MichaelZuo a day ago | parent [-]

Yeah that could convince smart competent people to grind their teeth and take a second chance under the same management.

But I don’t think a self respecting person would do that over and over.

raincom a day ago | parent | next [-]

When people live in multi million dollar homes, self-respect doesn't pay monthly mortgage.

teeray a day ago | parent | next [-]

So it's really not the astronomical salary, it's the astronomical debt.

johnnyanmac a day ago | parent | next [-]

Yes and no. The compensation is a lot, but you're not necessarily able to just quit on a dime even if you live humbly. Interviewing takes weeks now and weeks more just to find a proper replacement. And salaries can fund you for months, bu t not years (let alone if you have a fammily)

I'll also say the obvious here in Sinclair's quote about salaries: you can indeed pay for someone's self respect.

MichaelZuo a day ago | parent [-]

This would imply most of these types of positions are filled with less competent people willing to package and sell their self respect alongside their time?

(Thus commanding a rate similar to a more competent person who doesn’t package it to sell.)

BeFlatXIII 13 hours ago | parent | prev [-]

Astronomical debt caused by astronomical real estate inflation.

mschuster91 a day ago | parent | prev [-]

Joke is, most of these homes aren't worth anywhere close to their paper value.

Cy Porter's home inspection videos... jeez. How these "builders" are still in business is mind-blowing to me (as a German). Here? Some of that shit he shows would lead to criminal charges for fraud.

raincom a day ago | parent [-]

The land is worth more than the structure in these areas.

jrochkind1 a day ago | parent | prev | next [-]

You may be over-estimating how many people are self-respecting?

lazide a day ago | parent | prev [-]

Depends on the paycheck.

People will do crazy things for just $100. Including literally get fucked in the ass by a stranger.

7 figures? Ho boy. They’ll use way fancier words though for that.

ordu 17 hours ago | parent | next [-]

There is an old Russian joke, that goes like this:

A man approaches a girl and asks, "Would you sleep with me for $1 million?”

She responds, “Yes, of course!”

Excited, he then asks, “What about for $1?”

She indignantly replies, “Who do you think I am?”

To which he responds, “We already established who you are; now we’re just discussing the price.”

I think it fits there. There is surprising amount of people believing that they have some Values, but just to a point when they were offered to sell them for a right price.

a day ago | parent | prev [-]
[deleted]
darth_avocado a day ago | parent | prev | next [-]

In today’s market it’s mostly because of the lack of other options to earn a livelihood

tikhonj a day ago | parent | prev | next [-]

There's a high switching cost with substantial information asymmetry. Good places are hard to find in some absolute sense and it's hard to evaluate whether a new team is actually going to be good or not. And even if you do find a good team, there's no guarantee it'll last past the next reorg.

zem a day ago | parent | prev | next [-]

serious answer - you find a team with a good direct manager who handles all the upward interactions themselves, and then you basically work for that manager, rather than for the company.

p_v_doom 18 hours ago | parent | prev [-]

Rent wont pay itself. Switching jobs has costs.

game_the0ry a day ago | parent | prev | next [-]

^ This. Not at FAANG, but I am too familiar with this.

This is why software projects fail. We lowly developers always take the blame and management skates. The lack of accountability among decision makers is why things like the UK Post Office scandals happen.

Heads need to be put on pikes. Start with John Roberts, Adam Crozier, Moya Greene, and Paula Vennells.

ludicrousdispla a day ago | parent | prev | next [-]

I was a developer for a bioinformatics software startup in which the very essential 'data import' workflow wasn't defined until the release was in the 'testing' phase.

Koshkin a day ago | parent | prev | next [-]

“I love deadlines. I love the whooshing noise they make as they go by.” ― Douglas Adams

taeric a day ago | parent | prev | next [-]

Did they go off the rails at the end, or deadlines force acknowledging that the project is not where folks want it to be?

That said, I think I would agree with your main concern, there. If they question is "why did the devs make it so that project management didn't work?" Seems silly not to acknowledge why/how project management should have seen the evidence earlier.

t43562 9 hours ago | parent | prev | next [-]

There are many pressures and this is all about a lack of transparent honesty about what the real priorities are. Getting the project done properly may be #1 priority but there's priority 0 and 0.1 and others which are unspoken because they don't sound good.

chanux 10 hours ago | parent | prev | next [-]

Both happy and sad to know that the sh*t show is pretty much the same in FAANG as any regular corporate environment.

austin-cheney 15 hours ago | parent | prev | next [-]

Where I now work, in the government, all the devs are required to be part project managers. It’s a huge breath of fresh air. The devs are in all the customer meetings, assist in requirements gathering, and directly coach the customers as necessary to keep pushing the work towards completion.

This came about because our work isn’t too diverse but the requirements are wildly diverse and many of the customers have no idea how to achieve the proper level of readiness. I do management in an enterprise API project for a large organization.

holtkam2 a day ago | parent | prev | next [-]

Obviously you work at AMZN. This is the most Amazonish HN comment I’ve ever seen.

franktankbank a day ago | parent | prev | next [-]

> wouldn't allow publication until I removed any action items that would constrain management.

Thats what we call blameless culture lol

ashanoko a day ago | parent | prev [-]

[dead]

bane a day ago | parent | prev | next [-]

I've also considered a side-effect of this. Each generation of software engineers learns to operate on top of the stack of tech that came before them. This becomes their new operating floor. The generations before, when faced with a problem, would have generally achieved a solution "lower" down in the stack (or at their present baseline). But the generations today and in the future will seek to solve the problems they face on top of that base floor because they simply don't understand it.

This leads to higher and higher towers of abstraction that eat up resources while providing little more functionality than if it was solved lower down. This has been further enabled by a long history of rapidly increasing compute capability and vastly increasing memory and storage sizes. Because they are only interacting with these older parts of their systems at the interface level they often don't know that problems were solved years prior, or are capable of being solved efficiently.

I'm starting to see ideas that will probably form into entire pieces of software "written" on top of AI models as the new floor. Where the model basically handles all of the mainline computation, control flow, and business logic. What would have required a dozen Mhz and 4MB of RAM to run now requires TFlops and Gigabytes -- and being built from a fresh start again will fail to learn from any of the lessons learned when it was done 30 years ago and 30 layers down.

seeknotfind a day ago | parent [-]

Yeah, people tend to add rather than improve. It's possible to add into lower levels without breaking things, but it's hard. Growing up as a programmer, I was taught UNUX philosophy as a golden rule, but there are sharp corners on this one:

To do a new job, build afresh rather than complicate old programs by adding new "features".

senshan a day ago | parent [-]

Was not it: "do one thing, do it well"?

bogdan 17 hours ago | parent [-]

There's a bit more to it https://en.wikipedia.org/wiki/Unix_philosophy

RaftPeople a day ago | parent | prev | next [-]

> While hardware folks study and learn from the successes and failures of past hardware, software folks do not

I've been managing, designing, building and implementing ERP type software for a long time and in my opinion the issue is typically not the software or tools.

The primary issue I see is lack of qualified people managing large/complex projects because it's a rare skill. To be successful requires lots of experience and the right personality (i.e. low ego, not a person that just enjoys being in charge but rather a problem solver that is constantly seeking a better understanding).

People without the proper experience won't see the landscape in front of them. They will see a nice little walking trail over some hilly terrain that extends for about a few miles.

In reality, it's more like the Fellowship of the Rings trying to make it to Mt Doom, but that realization happens slowly.

avemg a day ago | parent [-]

> In reality, it's more like the Fellowship of the Rings trying to make it to Mt Doom, but that realization happens slowly.

And boy to the people making the decisions NOT want to hear that. You'll be dismissed as a naysayer being overly conservative. If you're in a position where your words have credibility in the org, then you'll constantly be asked "what can we do to make this NOT a quest to the top of Mt Doom?" when the answer is almost always "very little".

Wololooo a day ago | parent | next [-]

Impossible projects with impossible deadlines seems to be the norm and even when people pull them off miraculously the lesson learned is not "ok worked this time for some reason but we should not do this again", then the next people get in and go "it was done in the past why can't we do this?"

aakresearch 16 hours ago | parent [-]

Wow, sounds so familiar! I've once had to argue precisely against this very conclusion - "you saved us once in emergency, now you're bound to do it again".

Wrote to my management: "It is, by all means, great when a navigator is able to take over an incapacitated pilot and make an emergency landing, thus averting the fatality. But the conclusion shouldn't be that navigators expected to perform more landings or continue to be backup pilots. Neither it should be that we completely retrain navigators as pilots and vice versa. But if navigators are assigned some extra responsibility, it should be formally acknowledged by giving them appropriate training, tools and recognition. Otherwise many written-off airplanes and hospitalized personnel would ensue."

For all I know the only thing this writing might have contributed to was increased resentment by management.

RaftPeople a day ago | parent | prev | next [-]

> And boy to the people making the decisions NOT want to hear that.

You are 100% correct. The way I've tried to manage that is to provide info while not appearing to be the naysayer by giving some options. It makes it seem like I'm on board with crazy-ass plan and just trying to find a way to make it successful, like this:

"Ok, there are a few ways we could handle this:

Option 1 is to do ABC first which will take X amount of time and you get some value soon, then come back and do DEF later

Option 2 is to do ABC+DEF at the same time but it's much tougher and slower"

marcosdumay a day ago | parent | prev | next [-]

My favorite fact is that every single time an organization manages to make a functional development team that can repeatedly successfully navigate all the problems and deliver working software that adds real value, the high up decision makers always decide to scale the team next.

Working teams are good for a project only, then they are destroyed.

QuiDortDine a day ago | parent | prev [-]

Jesus I just had flashbacks from my last jobs. Non-technical founder always telling me I was being pessimistic (there were no technical founders). It's just not that simple Karen!

QuercusMax a day ago | parent | prev | next [-]

I think part of it is that reading code isn't a skill that most people are taught.

When I was in grad school ages ago, my advisor told me to spend a week reading the source code of the system we were working with (TinyOS), and come back to him when I thought I understood enough to make changes and improvements. I also had a copy of the Linux Core Kernel with Commentary that I perused from time to time.

Being able to dive into an unknown codebase and make sense of where the pieces are put together is a very useful skill that too many people just don't have.

gorbachev a day ago | parent | next [-]

Being good at reading code isn't a skill that helps large software projects stay on rails.

It's more about being good at juggling 1000 balls at the same time. It's 99.9% of the time a management problem, not a software problem.

willtemperley 20 hours ago | parent [-]

The successful projects I've worked on, the technical staff have been given autonomy, responsibility and full insight into the problem space. This requires managers putting a lot of trust in the engineers, but it works.

Large projects I've worked on failed simply because nobody wanted the solution in the first place.

In government I've seen many millions spent on projects that were either forgotten about or the politician that requested it lost office.

jsrcout a day ago | parent | prev | next [-]

Reading (someone else's) code is a whole lot harder than writing it. Which is unfortunate because I do an awful lot of it at work.

LtWorf 2 hours ago | parent | prev | next [-]

Oh TinyOS! Did my thsis on that!

spit2wind a day ago | parent | prev [-]

I'm curious, what does "read code" mean to you? What does that skill look like and how is it taught?

onjectic a day ago | parent | next [-]

You’ll notice that more senior engineers are often much better at giving useful review comments, and they will do it faster than you, thats just a skill that seems to come with experience reading other peoples code(or your own code you wrote two years prior). It can’t be taught, only practiced, same goes for reading other types of technical/academic works.

tsimionescu 21 hours ago | parent | prev [-]

Not GP, but the general idea is the skill to take a piece of code and understand what it does by reading the code itself (probably in an IDE that can help navigate it meaningfully), not relying on docs or explanations or anything else. Surprisingly few people are comfortable in doing this, and yet it's very common in any large software project that lots of parts of the code are undocumented and no one remembers the details of how they were written.

QuercusMax 10 hours ago | parent [-]

Precisely. I don't assume any documentation is accurate unless I've verified it matches the behavior of the code - and I've run into some doozies in my day.

The worst was a custom-built copy protection scheme that was built by a former (?) software cracker who designed it to be difficult for someone of his skills to reverse engineer. It took me a week tracing through the code to understand what it was actually doing so I could extend it to add more options.

hackthemack a day ago | parent | prev | next [-]

I have a theory that the churn in technology is by design. If a new paradigm, new language, new framework comes out every so many years, it allows the tech sector to always want to hire new graduates for lower salaries. It gives a thin veneer of we want to always hire the person who has X when really they just do not want to hire someone with 10 years of experience in tech but who may not have picked up X yet.

I do not think it is the only reason. The world is complex, but I do think it factors into why software is not treated like other engineering fields.

SoftTalker a day ago | parent | next [-]

Constantly rewriting the same stuff in endless cycles of new frameworks and languages gives an artificial sense of productivity and justifies its own existence.

If we took the same approach to other engineering, we'd be constantly tearing down houses and rebuilding them just because we have better nails now. It sure would keep a lot of builders employed though.

pietervdvn a day ago | parent | next [-]

We do take down a lot of old buildings (or renovate them thoroughly) cause the old buildings contain asbestos, are not properly isolated, ...

Hemospectrum a day ago | parent | prev | next [-]

> If we took the same approach to other engineering, we'd be constantly tearing down houses and rebuilding them just because we have better nails now. It sure would keep a lot of builders employed though.

This is almost exactly what happens in some countries.

bdangubic a day ago | parent [-]

which one(s)?

Gigachad a day ago | parent | next [-]

Pretty common in Australia. Theres heritage laws to try to prevent replacing all the old buildings, but often they are so undesirable the owner just leaves them vacant until trespassers manage to burn it down.

Aeolun a day ago | parent | prev | next [-]

Have it in Japan too. You can clearly see eras in house design. Pre 1960 almost everything is wood. Then you have wood and plaster until the 2000s or so, and after that is plastic on wood. You can see the age of a neighborhood and its residents based on what houses are made of.

If the residents die and someone new purchases the land, the old house is (generally) torn down and a new one built.

lmm a day ago | parent | prev [-]

Japan, famously. Oddly enough it actually works very well in keeping buildings cheap.

hackthemack a day ago | parent | prev [-]

I agree. But, I think the execs just say, "How can we get the most bang for our buck? If we use X, Y, Z technologies, that are the new hotness, then we will get all the new hordes of hires out there, which will make them happy, and has the added benefit of paying them less"

jemmyw a day ago | parent | prev [-]

The problem with that is that it would require a huge amount of coordination for it to be by design. I think it's better to look on it as systemic. Which isn't to say there aren't malign forces contributing.

hackthemack a day ago | parent | next [-]

I agree. Perhaps, "by design" is not the correct phrasing. Many decisions and effects go through a multi weighted graph of complexity (sort of like machine learning).

tra3 a day ago | parent | prev [-]

Indeed. How does that saying go? Don’t attribute to malice what can be explained by stupidity?

On the other hand Microsoft and taceboook did collude to keep salaries low. So who knows.

hackthemack a day ago | parent [-]

Anyone in tech should read up on https://en.wikipedia.org/wiki/High-Tech_Employee_Antitrust_L...

It was more tech companies in collusion than many people realize. 1) Apple and Google, (2) Apple and Adobe, (3) Apple and Pixar, (4) Google and Intel, (5) Google and Intuit, and (6) Lucasfilm and Pixar.

It was settled out of court. One of the plaintiffs was very vocal that the settlement was a travesty of justice. The companies paid less in the settlement than the amount they saved by colluding to keep wages down.

https://www.mercurynews.com/2014/06/19/judge-questions-settl...

Yokohiii 17 hours ago | parent | prev | next [-]

I think this is too simple. First of all, hardware people have high incentive to fully replace components and systems for many reasons. Replacement is also the only way they can fix major design mistakes. Software people constantly do fix bugs and design mistakes. There is certainly no strong culture to document or dig up former mistakes made, but it's not like they don't learn from mistakes, it's just a constant process. In contrast to hardware, there is usually no point in time to retrospect. The incentives to rejuvenate systems are low and if considered often seem expensive. Software engineers self motivation is often ill-minded, new devs feeling uncomfortable with the existing system and calling for something "modern". But if the time comes to replace the "legacy" systems, then you are right, no one looks back at the former mistakes and the devs that know them, are probably long gone. The question is whether we should ever replace an software system or focus more on gradual and active modernization. But the latter can be very hard, in hardware everything is defined, most of the time backed by standards, in software we usually don't have that, so complex interconnected systems rarely have sane upgrade paths.

mbesto a day ago | parent | prev | next [-]

I would boil this down to something else, but possibly related: project requirements are hard. That's it.

> While hardware folks study and learn from the successes and failures of past hardware, software folks do not. People do not regularly pull apart old systems for learning.

For most IT projects, software folks generally can NOT "pull apart" old systems, even if they wanted to.

> Typically, software folks build new and every generation of software developers must relearn the same problems.

Project management has gotten way better today than it was 20 years, so there is definitely some learnings that have been passed on.

rawgabbit a day ago | parent [-]

A CIO once told me with Agile we didn’t need requirements. He thought my suggestion to document the current system before modifying was a complete waste of time. Instead he made all the developers go through a customer service workshop, how to handle and communicate with customers. Cough cough… most developers do not talk with customers. Instead where we worked developers took orders from product and project people whose titles changed every year but they operated with the mindset of a drill sergeant. My way or the highway.

nradov 11 hours ago | parent [-]

Business developers need to occasionally talk directly to customers. It's fine to filter most requirements through Product Managers / Product Owners. But developers who never communicate directly with customers and end users get disconnected from reality and end up acting based on mythology rather than ground truth.

rawgabbit 4 minutes ago | parent [-]

[delayed]

ctkhn a day ago | parent | prev | next [-]

In my experience, a lot of the time the people who COULD be solving these issues are people who used to code or never have. The actual engineers who might do something like this aren't given authority or scope and you have MBAs or scrum masters in the way of actually solving problems.

alangibson a day ago | parent | prev | next [-]

"While hardware folks study and learn from the successes and failures of past hardware, software folks do not." Couldn't be further from the truth. Software folks are obsessed with copying what has been shown to work to the point that any advance quickly becomes a cargo cult (see microservices for example).

Once you've worked in both hardware and software engineering you quickly realize that they only superficially similar. Software is fundamentally philosophy, not physics.

Hardware is constrained by real world limitations. Software isn't except in the most extreme cases. Result is that there is not a 'right' way to do any one thing that everyone can converge on. The first airplane wing looks a whole lot like a wing made today, not because the people that designed it are "real engineers" or any such BS, but because that's what nature allows you to do.

jemmyw a day ago | parent | next [-]

Software doesn't operate in some magical realm outside of the physical world. It very much is constrained by real world limitations. It runs on the hardware that itself is limited. I wonder if some failures are a result of thinking it doesn't have these limitations?

moritz a day ago | parent | next [-]

As the great Joe Armstrong used to say, “a lot of systems actually break the laws of physics”[1] — don’t program against the laws of physics.

> In distributed systems there is no real shared state (imagine one machine in the USA another in Sweden) where is the shared state? In the middle of the Atlantic? - shared state breaks laws of physics. State changes are propagated at the speed of light - we always know how things were at a remote site not how they are now. What we know is what they last told us. If you make a software abstraction that ignores this fact you’ll be in trouble.[2]

[1]: “The Mess We’re In”, 2014 https://www.youtube.com/watch?v=lKXe3HUG2l4

[2]: https://news.ycombinator.com/item?id=19708900

alangibson 16 hours ago | parent | prev | next [-]

Except that it kind of does. I can horizontally scale a distributed storage system until we run out of silicon. I cannot do the same with a cargo airplane.

SoKamil a day ago | parent | prev [-]

> It very much is constrained by real world limitations. It runs on the hardware that itself is limited

And yet we scale the shit out of it, shifting limitations further and further. On that scale different problems emerge and there is no single person or even single team that could comprehend this complexity in isolation. You start to encounter problems that have never been solved before.

Greduan 20 hours ago | parent | prev | next [-]

> Software folks are obsessed with copying what has been shown to work to the point that any advance quickly becomes a cargo cult

Seems more accurate to say they are obsessed with copying "what sounds good". Software industry doesn't seem to copy what works, rather what sounds like it'd work, or what sounds cool.

If they copied what works software would just be faster by default, because very often big established tools are replaced by something that offers similar featurage, but offers it at a higher FPS.

Sharlin a day ago | parent | prev | next [-]

What you and the GP said are not mutually exclusive. Software engineers are quick to drink every new Kool-Aid out there, which is exactly why we’re so damned blind to history and lessons learned before.

IshKebab a day ago | parent | prev [-]

I disagree. At least at the RTL level they're very similar. You don't really deal with physics there, except for timing (which is fairly analogous with software performance things like hard real-time constraints).

> Result is that there is not a 'right' way to do any one thing that everyone can converge on.

Are you trying to say there is in hardware? That must be why we have exactly one branch predictor design, lol

> The first airplane wing looks a whole lot like a wing made today, not because the people that designed it are "real engineers" or any such BS, but because that's what nature allows you to do.

"The first function call looks a whole lot like a function call today..."

alangibson 16 hours ago | parent | next [-]

> "The first function call looks a whole lot like a function call today..."

Only superficially. What's actually happening varies radically by language. See for instance tail call optimization.

worthless-trash a day ago | parent | prev [-]

> That must be why we have exactly one branch predictor design, lol

I'll be that 'well akshually' guy. IIRC the AMD and intel implementations are different enough that spectre/meltdown exploits were slightly different on each manufacturers.

Source: wrote exploits.

IshKebab 20 hours ago | parent [-]

It was sarcasm. There are loads of branch predictor designs.

worthless-trash 18 hours ago | parent [-]

Sorry, I had missed that. I'll go back to my cave.

gen220 10 hours ago | parent | prev | next [-]

IME, "Why systems fail" almost always boils down to a principal-agent problem. This is another way of expressing the Mungerism "show me the incentive, I'll show you the outcome".

Systems that "work" tend to have some way of correcting for or mitigating the principal agent problem by aligning incentives.

I'd also point out that hardware is a much older discipline, in terms of how long it's been operating at scale. It's had more time to formalize and crystallize. Intel is 56 years old. Google is 27.

nitwit005 a day ago | parent | prev | next [-]

Most of the time, there's no need to study anything. Any experienced software engineer can tell you about a project they worked on with no real requirements, management constantly changing their mind, etc.

lifeisstillgood a day ago | parent | prev | next [-]

How do you study software history? Most of the lessons seem forever locked away behind corporate walls - any honest assessments made public will either end careers or start lawsuits

habitue 19 hours ago | parent | prev | next [-]

This is an interesting distinction, but it ignores the reasons software engineers do that.

First, hardware engineers are dealing with the same laws of physics every time. Materials have known properties etc.

Software: there are few laws of physics (mostly performance and asymptotic complexity). Most software isnt anywhere near those boundaries so you get to pretend they dont exist. If you get to invent your own physics each time, yeah the process is going to look very different.

BirAdam an hour ago | parent [-]

For most generations of hardware, you’re correct, but not all. For example, high-k was invented to mitigate tunneling. Sometimes, as geometries shrink, the physics involved does change.

raincom a day ago | parent | prev | next [-]

Some consequences of NOT learning from prior successes and failures: (a) no more training for the next generation of developers/engineers (b) fighting for the best developers, and this manifests in leetcode grinding (c) decrease in cooperation among team mates, etc.

a day ago | parent | prev | next [-]
[deleted]
tristor a day ago | parent | prev | next [-]

This is one part of the issue. The other major piece of this that I've seen over more than two decades in industry is that most large projects are started by and run by (but not necessarily the same person) non-technical people who are exercising political power, rather than by technical people who can achieve the desired outcomes. When you put the nexus of power into the hands of non-technical people in a technical endeavor you end up with outcomes that don't match expectations. Larger scale projects deeply suffering from "not knowing what we don't know" at the top.

mbesto a day ago | parent | next [-]

If this were true all of the time then the fix would be simple - only have technical people in charge. My experience has shown that this (only technical people in charge) doesn't solve the problem.

tristor a day ago | parent | next [-]

Success pretty much requires putting technical people in charge, but that doesn't mean putting technical people in charge is sufficient for success to happen. We have plenty of data over the last 40 years to prove my case. Furthermore, unfortunately, what it means to be a "technical person" is not so simple to define, unfortunately as the easy ways to codify it often exclude the very people who you want involved.

Suffice to say, projects are significantly more likely to succeed when the power in the project is held by people who are competent /and/ understand the systems they are working with /and/ understand the problem domain you are developing a solution in. Whether or not they have a title like "engineer" or have a technical degree, or whatever other hallmark you might choose is largely irrelevant. What matters is competency and understanding, and then ultimately accountability.

Most large projects I've been a part of or near lacked all three of these things, and thus were fundamentally doomed to failure before they ever began. The people in power lacked competency and understanding, the entire project team and the people in power lacked accountability, and competency was unevenly distributed amongst the project team.

It may feel pithy, but it really is true that in many large projects the fundamental issue that leads to failure is that the decision makers don't know what they're doing and most of the implementers are incompetent. We can always root cause further to identify the incentive structures in society, and particularly in public/government projects that lead to this being true, but the fact remains at the project level this is the largest problem in my observation.

mbesto 7 hours ago | parent [-]

> Success pretty much requires putting technical people in charge, but that doesn't mean putting technical people in charge is sufficient for success to happen.

This statement is terribly incongruent.

tristor 6 hours ago | parent [-]

> This statement is terribly incongruent

In what way? A condition being required but not sufficient for success is a perfectly logical statement.

fragmede a day ago | parent | prev | next [-]

If people didn’t work, maybe we should put an LLM in charge instead.

chileRick a day ago | parent | prev [-]

Boeing has entered the chat

cjbgkagh a day ago | parent | prev | next [-]

Sometimes giving people what they want can be bad for them; management wants cheap compliant workers, management gets cheap compliant workers, and then the projects fall apart in easily predictable and preventable ways.

Because such failures are so common management typically isn’t punished when they do so it’s hard to keep interests inline. And because many producers are run on a cost plus basis there can be a perverse incentive to do a bad job, or at least avoid doing a good one.

smokel a day ago | parent | prev [-]

I'm not entirely sure what you mean with "technical people" but it seems that you may not appreciate the problems that "non-technical people" try to tackle.

Do your two decades of experience cover both sides?

mring33621 a day ago | parent | next [-]

"you may not appreciate the problems that 'non-technical people' try to tackle."

Do you mean the problem of wanting to build something without knowing how/having the skills, to build something?

tristor a day ago | parent | prev [-]

> Do your two decades of experience cover both sides?

Yes.

I appreciate both sides and have a wealth of experience in both. The challenge is that all the non-technical problems cannot be solved successfully while lacking a technical understanding. Projects generally don't fail for technical reasons, they fail because they were not set up for success, and that starts with having a clear understanding of requirements, feasibility, and a solid understanding of both the current state and the path to reach your desired outcomes, both politically/financially and technically.

I was an engineer for more than a decade, I've been in Product for nearly a decade, and I'm now a senior manager in Product. I can honestly say that I have the necessary experience to hold strong opinions here and to be correct in those opinions.

You need technical people who can also handle some of the non-technical aspects of a project with the reins of power if you want the project to succeed, otherwise it is doomed by the lack of understanding and competency of those in charge.

keeda a day ago | parent | prev | next [-]

I think there is a ton more nuance, but can still be explained by a simple observation, which TFA hints at: "It's the economics, stupid."

Engineering is the intersection of applied sciences, economics and business. The economics aspect is almost never recognized and explains many things. Projects of other disciplines have significantly higher costs and risks, which is why they require a lot more rigor. Taking hardware as example, one bad design decision can sink the entire company.

On the other hand, software has economics that span a much more diverse range than any other field. Consider:

- The capital costs are extremely low.

- Development can be extremely fast at the task level.

- Software, once produced, can be scaled almost limitlessly for very cheap almost instantly.

- The technology moves extremely fast. Most other engineering disciplines have not fundamentally changed in decades.

- The technology is infinitely flexible. Software for one thing can very easily be extended for an adjacent business need.

- The risks are often very low, but can be very high at the upper end. The rigor applied scales accordingly. Your LoB CRUD app going down might bother a handful of people, so who cares about tests? But your flight control software better be (and is) tested to hell and back.

- Projects vary drastically in stacks, scopes and risk profiles, but the talent pool is more or less common. This makes engineering culture absolutely critical because hiring is such a crapshoot.

- Extreme flexibility also masks the fact that complexity compounds very quickly. Abstractions enable elegant higher-level designs, but they mask internal details that almost always leak and introduce minor issues that cause compounding complexity.

- The business rules that software automates are extremely messy to begin with (80K payroll rules!) However, the combination of a) flexibility, b) speed, and c) scalability engender a false sense of confidence. Often no attempt is made at all to simplify business requirements, which is probably where the biggest wins hide. This is also what enables requirements to shift all the time, a prime cause for failures.

Worse, technical and business complexity can compound. E.g. its very easy to think "80K payroll rules linearly means O(80K) software modules" and not "wait, maybe those 80K payroll rules interact with each other, so it's probably a super-linear growth in complexity." Your architecture is then oriented towards the simplistic view, and needs hacks when business reality inevitably hits, which then start compounding complexity in the codebase.

And of course, if that's a contract up for bidding, your bid is going to be unsustainably low, which will be further depressed by the competitive bidding process.

If the true costs of a project -- which include human costs to the end users -- are not correctly evaluated, the design and rigor applied will be correspondingly out of whack.

As such I think most failures, in addition to regular old human issues like corruption, can be attributed to an insufficient appreciation of the economics involved, driven primarily by overindexing on the powers of software without an appreciation of the pitfalls.

smj-edison a day ago | parent | prev | next [-]

As someone who's learning programming right now, do you have any suggestions on how one would go about finding and studying these successes and failures?

BirAdam a day ago | parent | next [-]

First, failures aren’t always obvious, and second, studying them isn’t either. This would likely need to be a formalized course. Still…

If people want to know why Microsoft hated DOS and wanted to kill it with Xenix, then OS/2, then Windows, and then NT it would be vital to know that it only came about as a result of IBM wanting a 16bit source-compatible CP/M which didn’t yet exist. Then, you would likely want to read Dissecting DOS to see what limits were imposed by DOS.

For other stuff, you would start backwards. Take the finished product and ask what the requirements were, then ask what the pain points are, then start digging through the source and flowcharting/mapping it. This part is a must because programs are often too difficult to really grok without some kind of map/chart.

There is likely an entire discipline to be created in this…

wavemode 21 hours ago | parent | prev | next [-]

The things people are talking about in this thread are less to do with the practice of programming, and more to do with the difficulties of managing (and being managed, within) an engineering organization.

You'll learn all of this for yourself, on the job, just via experience.

t43562 8 hours ago | parent | prev [-]

To be cynical, what's the point? You'll get employed and forced to be a part of them by circumstances.

Your company's root priorites are probably at odds with writing good software.

One Japanese company, not going to name names, kept trying to treat software as a depreciating asset. I didn't really understand well but the long and short was that fixing things that were supposed to be "done" was bad for the accounting. New things, however were good.

How can you run a software company like that? But they did and got the kind of outcome you'd expect. Japan made the laws this way and gets software to match.

pphysch a day ago | parent | prev | next [-]

There are rational explanations for this. When software fails catastrophically, people almost never die (considering how much software crashes every day). When hardware fails catastrophically, people tend to die, or lose a lot of money.

There's also the complexity gap. I don't think giving someone access to the Internet Explorer codebase is necessarily going to help them build a better browser. With millions of moving parts it's impossible to tell what is essential, superfluous, high quality, low quality. Fully understanding that prior art would be a years long endeavor, with many insights no doubt, but dubious.

wesammikhail a day ago | parent | prev | next [-]

Agree 100%.

I know a lot of people on here will disagree with me saying this but this is exactly how you get an ecosystem like javascript being as fragmented, insecure, and "trend prone" as the old school Wordpress days. It's the same problems over and over and every new "generation" of programmers has to relearn the lessons of old.

Salgat a day ago | parent [-]

The difficulty lies in the fact that most software is quite cheap to generate very complex designs compared to hardware. For software designs treated similarly to hardware (such as in medical devices or at NASA), you do gain back those benefits at great expense.

MarcelOlsz a day ago | parent | prev | next [-]

I think this is a downstream of effect of there being no real regulation or professional designations in software which leads to every company and team being wildly different leading to no standards leaving no time for anything but crunching since there are no barriers restricting your time, so nobody spends time doing much besides shipping constantly.

N_Lens a day ago | parent | prev | next [-]

Software just feels so much more ephemeral than hardware. I haven't yet met a single 'old software enthusiast' in my life, yet there are so many enthusiasts for older hardware.

BirAdam an hour ago | parent | next [-]

I am both a hardware and software enthusiast. Tons of DOS, Windows, and OS/2 software hanging around. While I don’t use them everyday, I do use them. From pre-Microsoft Visio to WordStar and MS Works for DOS, the applications are simple, powerful, and pleasing to use. While I don’t recommend anyone pull out Zenith 8bit and fire up COBOL-80 or LISP-80, they are interesting. Testing yourself in 64k is quite a challenge.

The retro community is huge and varied. If it exists, someone is really into it.

p_v_doom 15 hours ago | parent | prev | next [-]

I have a pet passion for an old simulation language called Dynamo. I think you will find people passionate about LISP and people that care about COBOL, and C is already multiple decades old.

rightbyte 9 hours ago | parent | prev [-]

Doesn't retro gaming count?

mstipetic a day ago | parent | prev | next [-]

I was so annoyed when I found out the OTP library and realized we’ve been reinventing things for 20+ years

morshu9001 a day ago | parent | prev | next [-]

Yes, and it's because there aren't very many textbook ways to do software engineering, because it's evolving too fast to reach consensus.

stogot a day ago | parent | prev | next [-]

I’ve read one tech history book and I really enjoyed it. any you recommend?

BirAdam a day ago | parent [-]

Hardcore Software, Fire in the Valley, Life Under the Sun… there are many.

begueradj a day ago | parent | prev | next [-]

Indeed.

That's why we see every now and then "new" programming paradigms which were once obsolete.

jcelerier a day ago | parent | prev | next [-]

... are you saying that hardware projects fail less than software ones? just building a bridge is something that fails on a regular occurence all over the world. Every chip comes with list of erratas longer than my arm.

01100011 a day ago | parent | prev [-]

Software folks treat their output as if it's their baby or their art projects.

Hardware folks just follow best practices and physics.

They're different problem spaces though, and having done both I think HW is much simpler and easier to get right. SW is often similar if you're working on a driver or some low-level piece of code. I tried to stay in systems software throughout my career for this reason. I like doing things 'right' and don't have much need to prove to anyone how clever I am.

I've met many SW folks who insist on thinking of themselves as rock stars. I don't think I've ever met a HW engineer with that attitude.

esafak a day ago | parent | next [-]

Because the software market is bigger and more competitive; hardware is mature.

__mharrison__ a day ago | parent | prev [-]

What are the silver bullets... I mean, best practices that keep getting ignored?