At that point you're left with two benefits:
1) Organizing your codebase so that it is easy to find which functions operate on which data
2) Controlling access to those methods on the programming language level. I.E, TankerService is the only class with Tanker instances and therefore the only part of the code with access to those methods.
FP has also benefited from a hype cycle, and FP does improve code in a lot of ways. Making your data immutable makes it easier to reason about, and pure functions prevent surprises. However if your argument is state is bad, and FP avoids state, so that is why it is good, but you encounter a scenario in which state is required, then the benefits of FP start to degrade.
The reality is closer that, state should be immutable, and minimized as much as possible, but at the end of the day, almost every interesting problem requires storing state. Once you reach that point, classes are simply a better solution for state than closures. Especially if your class and its variables are immutable, you get all the benefits I mentioned and none of these tradeoffs. Your state is explicitly stated.
Sometimes it sounds like bay area programmers think how expensive their area is, is how it is for programmers elsewhere. I also get paid around the same range in NYC, but my mortgage is nowhere near 10k, my taxes eat maybe 40%, and I can definitely find restaurant meals for less than $30.
The high expenses of the bay area are a policy choice by the local and state government to disallow investment. As such everyone is competing for the same old housing stock and office space that cost a 1/3rd of what it does now years ago. In effect, house owners and landlords are appropriating tech profits to themselves.
I hope the banning of single home zoning in California helps to alleviate this issue.
"Turn around time to get a server spun up was ~6-8 weeks." -> ok this one threw me for a loop. I can literally get an EC2 server spun up within minutes inside Amazon. But as others have stated org quality varies a lot. If you are dealing with an org that requires you to say at the beginning of the year exactly what budget you need, I could see that.
I think this is absolutely it. A lot of best practices go down the drain when the compiler compiles the bytecode. As such a lot of best practices are about people, not the computer. APIs can be just as stable behind a network or a library, but way more people are onboard with never break your APIs than they are never break your function.
It seems reductionist to say Amazon primarily wraps around open source. What about EC2? S3? Glue? DynamoDB? Many of the services that provide the most value are services Amazon has built out.
Regardless of whether or not gravitons actually exist, it is feasible that the US government will want to signal to adversaries that they do have this technology. After all, a deterrent is useless if your adversary doesn't know it exists. You can't be deterred by something you don't know about.
Types are just labels that a parse has already been done and doesn't need to be done again. Use them when you don't need to parse again, don't when you do want to parse again.
Eh I can see where you are coming from, but I don't necessarily agree with that. At least here in the US, corporations never accepted to unions as legitimate. It always took giant draw out strikes.
The drip is definitely correlation until proven to be causation. So it is possible the drop was a function of a common underlying cause.
The reason no other explanation makes sense to me is that any purely market based explanation, like energy or China, we would see a corresponding drop in US labor force productivity, but the whole point is that that productivity did not drop.
One question i have for you is, why didn’t the union just fight the cuts? A union is not a nicety granted by the corporation, its whole reason to be is to fight corporate power when needed. It sounds to me like that union was already made powerless by the time the crisis occurred.
You can see union membership was on the decline since the 1950s, but it accelerated around the 70s. It is hard to see the timeline in that graph, in this one it is harder to see the acceleration, but it is easier to see the timeline: https://rpubs.com/jncohen/uniondensity
A fairly simple explanation that for some reason I don't see a lot of is the drop in union membership density around this time period. Such a drop would decrease bargaining power and therefore decrease the rate of wage increase
That example seems a bit odd as a design. You’re throwing an exception to represent a no result, but suppressing it to convert the exception to a none. Monads give you the convenience while being consistent.