← Back to context

Comment by godelski

1 day ago

  >  You don’t invest in your future ... the average tenure of a software developer is 3 years and at any time an employee can leave.

Well this is a 2 stage problem and I think the response is bad for multiple reasons.

1) Tragedy of the Commons: If we all act like this, then no one gets invested in. If we all invest in our employees then when they leave another company gets the rewards. That's still true when "we" are the "other company". You still benefit regardless. Under the condition that most companies (or rather at least the big companies) collude in this way. They have good reason to as coalitions maximize utility for all parties involved.

2) Why the fuck are we training people and then tossing them away? We do this in many ways but the most obvious one is hiring a new dev and paying them more than the current devs. Guess what? That new dev needs to be trained and now your old devs are pissed that they aren't getting paid as much. So now you not only waste time and money onboarding someone new, you lose your experience.

  > Companies don’t care about society - they care about their bottom line

I'm telling you that this is dumb shortsighted thinking. This is a low order approximation. It is true under "spherical chicken in a vacuum" type of settings, but not in the real world. These are not mutually exclusive things. Remember how Ford paid his employees more and gave them time off? We're told that story as he needed customers. But there's a side benefit to that too. Not only are the workers happier and more productive (leading to fewer mistakes and costly accidents) but they're walking advertisements. There goes that Ford employee in his car, I wish I could be like them. Yes, it requires understanding abstraction and making future predictions to understand this rather straightforward logic, but we're programmers who spend all our days dealing with abstractions and trying to predict future events (i.e. how the damn thing will be used and especially used incorrectly).

  > My job is to do what’s best for the company as long as it is not illegal or unethical

Exactly!

I don't understand why you think we're in disagreement about this. Every single one of my points has come down to this. I've said it explicitly. My very first message stated that there were selfish reasons to do these things. The selfishness and foresight doesn't apply just to yourself.

  >  My job is not to make society better

Not always, but these are usually strongly correlated. There's 3 ways about it, right? If your job makes society better, awesome. If it is neutral, so be it. If it makes society worse, well you deserve hate because you're harming people. But the point of an economy is to align value with improving society, right? We don't have to get super philosophical here. There's many ways to improve society. Entertainment, a new widget, social action, cleaning shit, whatever. I'm not gonna judge here and pretend what's better and not.

But it is just a weird argument all together anyways. Your job isn't to make society better? Read that again. Your job isn't to make your life better? Certainly a paycheck makes your life better, right? I really hope it isn't making it worse. But we're social creatures too. Your job isn't to make your family's lives better? Your job isn't to make your friends' lives better? If it isn't to better yourself, your family, and your friends, then what the fuck are we even doing here? You have autonomy. And here's the fun part, if we care about our local groups and improve our local groups, this usually improves broader groups by extension. We're interconnected. I'm not saying you need to care about some dude on the opposite side of the country, but I sure as hope you don't think your job is to do harm. The "not illegal or unethical" part really is concerning. Frankly, I'd call doing harm unethical, even if it is small. It's more unethical to steal someone's wallet than to snatch a penny, but both are still unethical.

So I really don't get where you're trying to go with this. Because frankly, the selfish act improves society. It's just you have to consider that other people exist. If you're selfish and you model a world where you're alone, then yeah, maximize yourself at all costs. But when there are other agents in the world, the way to maximize your utility is through coalitions, through improving the group.

I agree with you, but I think that there's one area of the argument that is worth figuring out how to strengthen.

> If we all invest in our employees then when they leave another company gets the rewards. That's still true when "we" are the "other company". You still benefit regardless. Under the condition that most companies (or rather at least the big companies) collude in this way. They have good reason to as coalitions maximize utility for all parties involved.

You are right that in a world where most companies collude in this manner, we all benefit.

However, in that world, a company that chooses not to contribute (by investing in inexperienced employees) also has access to the same benefits (trained employees).

Furthermore, they can use the money saved by not contributing to inflate the value of the trained employees (offering them higher pay), so they have an incentive to not contribute. This doubly deprives the rest of us of some of that benefit.

How do we adjust the incentives so that bad actors are not motivated to cheat the system?

(In case it seems like a familiar scenario, yes, this is similar to playing Iterated Prisoners' Dilemma with the rest of the world.)

  •   > However, in that world, a company that chooses not to contribute
    

    I swore I addressed this point, but I can't find it. You're right. I should have addressed this.

    But this is still not an optimal strategy. It can give you a short term edge, but you're completely right that it destroys the natural coalition equilibrium. The result is that this destroys the coalition. You get the benefit for a small time period but it doesn't take long for the coalition to be abandoned and once that is done, you no longer gain from this strategy. In this situation the total utility in the system decreases! Not just globally, but each player's utility drops! That's a major problem! It is sacrificing long term rewards for short term ones. Importantly, those long term rewards are quite significant while the short term ones are not.

      > How do we adjust the incentives so that bad actors are not motivated to cheat the system?
    

    My answer? The government. I'm not a fan of big government, but they definitely have a role to play in the economy. A third party actor that serves as a moderator. Regulation to ensure that (near) globally beneficial (yet unstable) equilibria are maintained. Such regulation is beneficial to all parties involved, even the one that wants to undermine the coalition. I mean we can't just have shit being fucked up every time there's a dumb or malicious actor. A lot of things are unstable equilibria and it does take work to maintain them. A third party (especially one that benefits from global utility as opposed to individual utility) is necessary for stability. The other answer is, of course "The People". But this is a much more chaotic group, more easily influenced by nearsighted actors who can often convince them to also be shortsighted, especially when dealing with more abstract concepts..

      > this is similar to playing Iterated Prisoners' Dilemma
    

    It's worth noting here that Tit-for-tat strategies are optimal in this game AND maximal utility to any party is achieved when all parties cooperate continuously. But it is worth noting that humans are a bit irrational and have memory. Also worth noting that human actors are not rational. Hence the need for a third party moderator, which logically benefits both parties by saying "Stop being dumb and shooting yourself in the foot. This is an iterative game."

    For some reason people think zero-sum games are common. Lump of Labor (Fixed-Pie) Fallacy is really common[0]. I do see high rates of zero-sum thinking around here on HN and in CS communities, and I'm not sure why it is so common. While I don't have the same expectations for the general public, we create things out of essentially limitless resources. We frequently create value that does not require additional compute or meaningful consumption of current resources (which is also increasing as time marches on). Our whole job is built on the fact that the pie continually grows in size and we are strongly rewarded for making the pie larger in the first place!

    [0] https://en.wikipedia.org/wiki/Lump_of_labour_fallacy

I’m not saying it’s logical. I even said that as a hypothetical manager, I would fight for the junior to get paid market wages. But HR sets the budget. I have to work within the framework I have.

Yes I know it’s insane that a manager can’t get the budget to give raises. But can get one to hire someone new at prevailing market rates.

Given those are the facts, I had to aggressively job hop between 6 jobs between 2008-2020 to get the money I wanted after staying at my second job for nine years getting 3% raises.

Now at 50 on my 10th job, I can optimized for different things.

How are you going to convince HR or the PHB that their policies are insane? As a manager or a team lead, your job is to create processes to make developers interchangeable “resources”.

  •   > How are you going to convince HR or the PHB that their policies are insane?
    

    The underlying issue at hand is much more widespread.

    I'm not trying to play wack-a-mole here.

    I'm trying to be infectious so that the knowledge becomes widespread. We had it before, so I don't think it is naive to think we can't have it again. It was considered "common sense" before, the question is why it was lost. Given your age I guess I should be asking you why we dropped the aforementioned cliques. It's weird how common "you get what you pay for" was and how now we act in opposition to the clique: buying the cheapest option and making it hard to determine quality.

    • The only reason we had it before was because back in the 90s when I graduated, even outside of the dot com boom, regular old enterprise companies were looking for developers and there was a shortage. They didn’t have a choice but to hire juniors.

      But as far as you get what you pay for, it’s not hard to find “good enough” framework enterprise developers and have a few good experience “seniors”. Especially with remote work, you dangle that in front of people my age, we are willing to take a haircut. For me now, remote work, autonomy, and a smaller company is worth being able to say “no” to more money when managers at Google (GCP) reach out to me.

      By senior, I don’t mean “I codez real gud”, I mean the tech industries definition - someone who can deal with “scope” and “ambiguity” and has a history of highly impactful projects.

      Just to be clear, I spent most of my career as an “enterprise dev” until 2020 at 46 when a position at AWS fell into my lap (Professional Services department). I’m no longer there. But it did cause me to pivot to cloud consulting specializing in app dev and now I am a “staff architect” at a third party company.