I think pregnancy and labor is what's going to finally break the camel's back.
Having children is a pretty basic part of being human. And the costs are such that even millionaires are going to feel it. When basically nobody can afford to participate in reproduction, something is going to go sideways.
With my "good" insurance, I still ended up with a multi-thousand dollar deductible. Which I thought was problematic until I started hearing about people who have high deductible plans that only make you pay 20% after hitting your deductible.
For a 100K bill, 20% is still absurd and especially after you've already paid $2-10K out of pocket.
Usually coinsurance is limited by an 'out of pocket maximum'. So even if something happens where you end up with like 600k in medical bills the most you will pay will be like 8-20k (depending on in-network vs out of network). Which is still insane but not as scary as six-figure medical bills despite being insured.
One issue with describing figures like 600k is that I think the medical industry has a lot of funny money running around. The doctor somewhat arbitrarily charges 10k to the insurance company, insurance disputes, the doctor hires a lawyer who takes 30% of the negotiated outcome, and negotiation finally ends up at $2k.
The patient sees a $10k bill, pays a $300 deductible, and only $2k ever actually materializes in the exchange between doctor/insurance. And afaict, this is the expected operation.
Of course, when you're uninsured, the numbers stop making any sense, because they fail to go through the convoluted process that reduces it. You just get the $10k bill and thats the end of story. But for the insured, a $10k bill is not $10k exchanged.
Yeah, some of the explanation of benefits I've received are insane. Insurance is apparently able to negotiate ~50% bill reductions for multi 10K bills.
Dealing with Indians, the normal bargaining tactic is apparently start with like 300%/10% of the expected, and end up at 110%/90% as anywhere else would. From America, starting is 120%/80% or so. Totally confounding when you first start negotiations, because they're offering these absurd numbers as if its normal..
I think the same culture exists with doctors/insurance. It's not that they're skilled enough or have enough power to negotiate down 50%... doctors are putting numbers up expecting to be reduced to 50%.
And then us poor saps get slapped with these absurd numbers and thank the gods we had insurance... but no one involved ever really expected to pay that number. And ofc, without insurance, you're like an american trying to shop in india -- no idea how to play the game, trying to negotiate in the american fashion with 120%/80% when the other guy started with 300%, and don't have the information to realize that initial $20 offer negotiated down to $18 isn't even close to what an indian would have managed (probably $5).
And its not like he's going to correct you when you fail to negotiate properly.
> Which I thought was problematic until I started hearing about people who have high deductible plans that only make you pay 20% after hitting your deductible.
If I'm not mistaken, those plans also have an Out-of-Pocket Maximum. So you pay 100% up to your deductible, then some fraction of the cost above that until you hit the OOP max.
I really like it when people become concerned about cognitive complexity. I think it's one of the significantly ignored concepts in our industry and if we ever find a way to address the issue (either with some sort of cognitive complexity solution or some sort of big oh like math framework that describes how things are complex) then the future generations of software engineers will look at what we're currently doing now the same way we look at how people used to do alchemy for our lack of being able to handle cognitive complexity.
Personally, I want a mathematical structure of "problems" such that we can track when we're actually making things more complex or less complex. In the article, removing boilerplate was a problem because internal domain models were being exposed publicly. But what I really want to know is "what are we actually gaining by removing the boiler plate and what are we losing by exposing domain models". In like a general mathematical sense such that if everyone about programming changes (maybe suddenly we switch to APL or something), the lessons we learned are still valid.
So far the best I've managed is [1]. I've done a bunch of refinement in the last year and a half, but the general structure is about the same. I'm not suggesting that what I have is complete or even necessarily the right direction to go for this sort of thing. But what I am saying is that in order to make definite statements about how the problem and/or code you're dealing with is complex (that don't rely on appeals to authority) then you probably need to have done at least as much "work" as I have (if that makes any sense).
I like the alchemy analogy. I think a huge trap we tend to fall into as a profession is presuming to know what software engineering practices are good or bad when we actually have next to zero empirical data on the matter. Most of what the accepted dogma is comes from either authority, or from what techniques lend themselves to the strongest arguments.
I remember trying to sleep in between classes. Like, I would close my eyes and touch the wall in the hallway so that I could "sleep" while I was walking to my next class.
Well, I don't know about that. For example, back when I was at university, my graphics professor mentioned that there were hundreds of algorithms for mapping a texture to a sphere going back hundreds of years because map makers had been coming up with them so that they could place maps on globes.
There are old books, but you have to be a bit more creative to find them.
Agreed. If you look at computer science as a branch of mathematics, there are very old books that are as worthwhile as ever (as mentioned elsewhere in this thread), but the kind of computer science that can only be done when you have a computer is still necessarily young because programmable computers are new.
If the interview makes sure that potential employees are okay with being on call, then there are no problems.
However, my employer has moral agency above me only insofar as I'm not committing a crime against them (ie fraud or embezzling company funds, etc). This does not include me not performing duties I'm paid for. If I don't do my work, then they don't pay me. This is a civil matter. This certainly doesn't include the reason why I'm deciding not to do optional work. My employer doesn't get to decide that I'm somehow a bad person because they don't agree with why I'm not doing extra non-required work.
Eventually, I'm going to be a corpse in the ground. I'm not missing out on my other life goals because you weren't satisfied with my priorities and it turns out that the money you were offering didn't help me accomplish what I want to accomplish.
You are right. It isn't cool. But I assert that the not cool party is the employer who sprung an on call job requirement without any warning.
Additionally, if this job duty was actually important, then the employer would actually react with some criticism when they discovered that an employee was not performing this duty adequately. The fact that the employer isn't upset about having the on call employee ignoring messages means that it isn't important. Making employees being on call when the employer doesn't actually care about anyone being on call is also not cool.
So then you should probably only work on products that don't require out of hours support, or where the team is willing and able to hire people in another time zone.
Perhaps the company should invest the resources into hiring people to provide out of hours support rather than expecting their employees to be on call 24/7 for certain weeks of the month. Otherwise, why shouldthe company bother offering out of hours support if it's not willing to pay for it.
Indeed, companys should pay what's required, but it's not really the point I'm making.
End of the day, an Ops guy who is not part of the development team can't really do all that much when a bad commit brings down the system. Sure, we can take a stab in the dark and roll-back, but we don't know if that's going to make the problem worse, or we can restart it but that's about the easiest thing in the world to automate.
So, why not get the experts of the system, who rolled out the change, and undertook the quality control, to be part of the team that fixes the outage (irregadless of what time we do it at)? Who is better suited?
They should be free to live their life. If it turns out that the company doesn't actually have enough money to hire enough people to perform all of the duties that it needs to continue to exist, then that company should cease to exist. Which is desirable over the alternative of having rich company owners externalize their failure to run their company adequately by stealing the lives of employees who don't have the ability to say no to an unethical violation of their right to live their life.
Depends entirely on the on-call rotation. I've been on one where you could go the entire week without being paged, and where most of the pages did not require an immediate response. That did not prevent me from living my life. I've been on another where there were several pages every day, at all hours of the day, each of which could take anywhere from 30 minutes to several hours. That one certainly prevented me from living my life.
Spot on. I ended up with a new boss at a new company through an acquisition. He gently asked about me getting on the on-call rotation. Which meant work 24/7 because the company didn't know how to manage technology. I enthusiastically agreed and gave him a big spiel about how this is expected, yada, I'm a team player, yada. I fucking parachuted immediately and gave one day notice.
Hear hear. Give me actual autonomy and I'll happily be responsible for my code. Make me implement a crappy design and then deploy before it's functional and I'll happily send out resumes while other people work nights and weekends trying to fix garbage that was never going to work in the first place.
Like, I can appreciate that things can always be worse. But the other perspective is that what you're describing is objectively bad. And less of a bad thing is still bad.
If I have to option to not do a bad thing (even if it is only minimally bad), then why shouldn't I pursue that option?
If you don't mind doing the bad thing, then you should definitely take advantage of that. But probably shouldn't try to convince other people that the bad thing isn't bad. 1) It reduces your own advantage of willing to do the bad thing which you are hopefully converting into money. And 2) its end game is making people do something they don't enjoy without reason or compensation, which seems bad.
"Objective" is a pretty slippery word. It's all about context. I'm glad I had that job and worked under those conditions, and I'm glad I left when I did. It was a good thing for me at the start, but then it got old.
Bad things can work out for your own personal good. Or even the good of the whole of society. However, that doesn't make them not bad.
I'm glad that your situation worked out for your own personal good. Nice things happening to people make me happy. Things working out for people make me happy. However, the situation you describe is the latter not the former. That your bad situation, which ultimately worked out for you, did not personally bother you enough to be problematic (for you personally) doesn't make it a good situation. I'm glad that it didn't bother you. However, it may have bothered someone else.
Your situation was objectively bad not because it bothered or didn't bother you or another person. Your situation was bad because it was the result of a powerful entity externalizing their failures onto weak entities.
A manufacturing plant that has the ability to setup logistics to keep a plant running 24/7 is a powerful entity. A manufacturing plant that is able to support jobs for at least three different engineering disciplines (chemical, mechanical, electrical) is a powerful entity.
A powerful entity is able to hire additional staff to handle non-working-hour emergencies. That they didn't hire this staff was their failure.
But that's okay, they don't have to pay for this failure because they can force their employees to pick up their failure by working extra hours. The employees are weak entities because they do not have the ability to decline an encroachment of their working lives into their personal lives.
They could be sleeping, or eating, or spending time with their families, or spending time on hobbies, or spending time innovating with their discipline. All things which help society and the economy. But instead that time has been stolen to make money for something that already has plenty.
This misses a big part of the picture. People—especially single young men—are ambitious and competitive. Someone with enough skill to be on-call at a modern manufacturing plant—let alone a software engineer—is not just scraping by. He doesn’t submit to long, hard hours because he has no choice; he does so because he wants to advance in his career. He has a real, meaningful choice: sacrifice work/life balance while he’s young in an attempt to maximize his earning power, or coast by comfortably—if frugally—and make roughly $PRESENT_AGE * 1000 (inflation-adjusted) right up until retirement. If you want to talk about sweatshops or sex slavery, sure, I’m right there with you. But let’s not kid ourselves.
So if your measure of "objective" goodness is utilitarian calculus, as it seems to be, you're leaving out the fact that employees getting the shaft tends to correlate with cheaper goods and services. I disagree that this is any more objective than my initial assessment that "this is OK for now" or my later assessment that "this sucks, I'm going back to school." But this all comes back to what I said about "objective" being a slippery term. You and I do not agree about what it means.
Not utilitarian calculus. It's closer to spider-man's Great power comes great responsibility.
For example, if I figured out the secret to creating strong AI with respect to writing software such that I could replace the entire software engineering industry with one large computer (note: this isn't something I believe will be possible for centuries if it is ever possible), then I would feel compelled to use the billions of dollars this would undoubtedly get me to help retrain all of the software engineers I just permanently put out of a job.
It's also stated as 'if it is within your power to do good, then you should do it'. My contention is that a powerful company should hire more people to cover additional work instead of finding creative ways to get additional work out of currently employed people for the same amount of money because hiring more people is a good that they are able to do and getting more work for less money isn't.
I'm fine with us not agreeing. But I'm also fine with me being right, which is why I'm still typing.
Having children is a pretty basic part of being human. And the costs are such that even millionaires are going to feel it. When basically nobody can afford to participate in reproduction, something is going to go sideways.
With my "good" insurance, I still ended up with a multi-thousand dollar deductible. Which I thought was problematic until I started hearing about people who have high deductible plans that only make you pay 20% after hitting your deductible.
For a 100K bill, 20% is still absurd and especially after you've already paid $2-10K out of pocket.