Live data from Hacker News

Never attribute to stupidity what is adequately explained by opportunity cost

erikbern.com

11–20 of 94 posts

Re: Never attribute to stupidity what is adequately explained by opportunity cost

#11
I mostly disagree with this.

At a certain point it becomes inexcusable, and I personally never judge them as being stupid or lazy, I just attribute it to lack of empathy.

It’s painful for people that have to regularly deal with something not straightforward (over complex) or just plain old messy (no concern over what it would be like to revisit the code for anyone, even themselves).

Ruins my day(s), and it takes some mental gymnastics to justify serial offenses of this kind (e.g We got it done , that’s what matters - great, but you slowed down velocity at every later stage).

Lastly, I think when you find yourself asking ‘why is it done this way’, you’ll notice it’s a pattern. It’s never a few pieces here and there where you can reasonably understand, it’s always endemic throughout the codebase.

So sure, not stupidity, just a pungent disregard for others.

Re: Never attribute to stupidity what is adequately explained by opportunity cost

#13
post #7

> I've found that neither malice nor stupidity is the most common reason when you don't understand why something is in a certain way. Instead, the root cause is probably just that they didn't have time yet. Ok, let's leave security for later!

And even that is sometimes the right decision.

I personally experienced an important delivery being delayed several days because the tech lead wasn’t happy with the security settings on the database server. If the DB was accessible outside our internal network or contain any information that wasn’t publicly available, I would have understood.

Re: Never attribute to stupidity what is adequately explained by opportunity cost

#14
post #8

You often hear people in engineering teams say something to the effect of "I can't understand why this was built this way. It's been done stupidly", but invariably there's some key piece of contextual information that's missing like, as you say, there simply wasn't enough time. I also wrote about this recently: https://timwhite.digital/building-software-sharing-knowledge

Well, the "I can't understand why this was built this way. It's been done stupidly" can also be a case of Chesterton's Fence:

https://en.wikipedia.org/wiki/Wikipedia:Chesterton's_fence

Re: Never attribute to stupidity what is adequately explained by opportunity cost

#15
What if the opportunity cost is borne out of malice? I briefly worked as a quality control microbiologist at a manufacturing facility. We were constantly understaffed and unable to meet requirements. Heaps of missed opportunity to improve things. But my feeling was the the company didn't care beyond the facade of having some micro testing. There was always talk of improving things, but things never improved.

Re: Never attribute to stupidity what is adequately explained by opportunity cost

#16
As a JavaScript developer I find the stupidity versus opportunity cost virtually impossible to distinguish. After all, its how I involuntarily became a developer in the first place.

I was hired by Travelocity late in 2007 to be a designer. In early 2008 I was a UI developer and if I wanted to continue to be employed I would have to figure it out. JavaScript developers, at least competent ones, were nearly impossible to find, so it made sense for the company to convert me into a developer instead of struggling to hire somebody who probably couldn't do the job anyways. Keep in mind this is before jQuery became popular, before JavaScript became fast, and before massive MVC frameworks did your entire job for you. Competent JavaScript developers were nearly impossible to find for what companies were willing to pay. Also, keep in mind that at that time JavaScript developers earned about half what a Java developer earned but had a wider distribution of responsibilities to account for. My incompetence that first year writing logic was a profitable opportunity cost to the employer.

As an aside I can remember Google Web Toolkit (GWT) from that time. It would compile Java logic to JavaScript, which was great for barely competent Java developers who couldn't figure out JavaScript. The compiled JavaScript was garbage though. The logic was a mess that often broke. The people who generated that code were afraid of it and hid from it leaving nobody to own or maintain it. It was like some horrid combination of pride, insecurity, hubris, and negligence rolled up in a ball. Was this an opportunity cost or just stupid, it is a challenge to distinguish.

Fast forward to modern times and people who write JavaScript are easy to find and are paid much better. Actual JavaScript developers are still almost as rare though. Most people who write JavaScript are not actually JavaScript developers, but rather something like: Angular, React, or Vue developers. They do not write original code, but supplement a framework. If you put a gun to these guys heads and told them they had to write an application without their favorite framework they would happily take the gun from you and shoot themselves in the face. They have no idea what the DOM is, how to architect anything, and in many cases writing any original logic scares them to death.

In many cases people who write JavaScript have absolutely no idea what to write, so they only write browser facing single page applications, because that is the preference of their pet framework. To be fair some of the React developers might possess some vague half notion about the DOM, but they would call it a virtual DOM and get angry when I ask them to find "virtual DOM" in the standard DOM specification. In fact many technical requests that are explicitly outside the immediate documentation of their favorite pet framework might make these developers immediately angry (inwardly insecure). This folly is commonly known and accepted as an opportunity costs so employers set the expectations very low and don't ask for such things. The stupidity and incompetence are also distinguished by hiring employers during hiring and candidate selection whether they are looking for a Node.js developer or a UI developer even though its all the same language.

The better pay and frequent incompetence are opportunity costs, because somebody has to write this code. The business need is present and so factors are adjusted to ensure delivery of necessary business solutions while reducing hiring risks. It made sense to hire people who could get by just writing minimal logic over a framework tool, because developers are interchangeable assets of the business that come and go rapidly in the marketplace. When there is a shortage of talent you take what you can and ensure it is commonly replaceable. It should also be stated the conditions for hiring developers were well in the developers' favor because the business need was clear and businesses could afford to hire more people while enjoying the longest running bull market in history.

I suspect, though, this party is over. We now exist in a period of rapid economic contraction unlike anything in history. Before the recent bull market developers primarily existed to provide automation. The value of most developers was in the reduction of expenditure on the employer's internal operating costs. During this bull market that value became lost as the lines between automation and product creation frequently blurred. Regardless employers just knew they need people to write code and could happily afford it.

COVID has put many developers out of work and economists are anticipating the economic hardships will continue for about 2 more years. From a business perspective developers are expensive cost centers. Developers do not add to the revenue of the employer. They only exist to substitute business expense for automation. The people who actually generate revenue are called something like sales, marketing, or merchandising. So, for a hiring manager of a business struggling to stay afloat why would they hire 12 barely competent people who write a few lines of code here and there for a framework SPA when instead they could hire 2 or 3 developers at a slightly hire rate that focus on automation in general? In other words the safe expectation moving forwards is to expect that developers will require more from fewer developers or will find a completely different medium with which to engage their users/clients. With many developers suddenly out of work talent is no longer rare.

The opportunity costs have drastically changed in response to market pressures. The employers who will most rapidly adapt their hiring and use of developers are those under greatest financial pressure. The employers who are currently safe from market pressures, whether by their essential status or cash liquidity, will not feel this pressure and will become the new dinosaurs as they retain older and less efficient ways of shipping products.

Re: Never attribute to stupidity what is adequately explained by opportunity cost

#17
post #14
post #8

You often hear people in engineering teams say something to the effect of "I can't understand why this was built this way. It's been done stupidly", but invariably there's some key piece of contextual information that's missing like, as you say, there simply wasn't enough time. I also wrote about this recently: https://timwhite.digital/building-software-sharing-knowledge

Well, the "I can't understand why this was built this way. It's been done stupidly" can also be a case of Chesterton's Fence: https://en.wikipedia.org/wiki/Wikipedia:Chesterton's_fence

Yes, exactly. The point I make in my article is that stupidity isn't at all as common a reason (for why something's been done a certain way) as we'd like to think it is. I think the true split is about 80/20.

This is from someone who's had the [dis]pleasure of working on all manner of steaming piles of rubbish.

If there are any Junior devs reading this, Chesterton's Fence is a great concept to understand and abide by!

Re: Never attribute to stupidity what is adequately explained by opportunity cost

#18
I believe this is one of those things that are really hard to understand unless you have experienced it first hand. Although I always knew how important prioritization is, I understand it way better since working on my resource-constrained side project. You often fail to appreciate just how many obviously good things you can't do because there are even more important things to do.

Or, to quote Steve Jobs: "People think focus means saying yes to the thing you’ve got to focus on. But that’s not what it means at all. It means saying no to the hundred other good ideas that there are."

Re: Never attribute to stupidity what is adequately explained by opportunity cost

#19
His statement about bigcos doesn't really jibe with mine. Bigcos are just as concerned with opportunity cost as startups, at least if they're concerned about earnings at all or are run well. You will not have headcount to attack all the problems you have at once, and you'll constantly be chasing revenue/COGS-R opportunities instead of fixing those UI glitches QA found 2 years ago that have workarounds. The day you stop chasing opportunities is the day your headcount gets taken away. It's simply not worth paying someone 6 figures to tackle those issues.

Re: Never attribute to stupidity what is adequately explained by opportunity cost

#20
I worked with a company last year that consistently made poor decisions due to lack of resources, especially time. Sometimes "opportunity cost" was used as an excuse for a lot of things. Now sure if you have a few different immediate options and a lack of capacity you will be forced to choose certain options and ignore others. Scarcity is a real thing and I'm not arguing otherwise. But the bit that might be classified as stupid was that very little thought was given to hiring or any form of capacity planning. As such I think just categorizing this as "opportunity cost" would be missing a very important part of the bigger picture. People can make decisions that impact the amount of resources that are available and over a longer period this is especially important. If you consistently find that you are passing up on profitable opportunities it shows that you may have a very profitable situation to hire people, if you don't pay any attention to that you risk making opportunity costs a self fulfilling prophecy.
Post reply on HN