> However, "giving in" is not the same as acknowledging when you are wrong: it is simply playing mind games—games I am not interested in playing.
> There is more to life: I am an engineer; I like solving problems. I embrace fairness and open intellectual exchange. This matters to me a whole lot more than getting promoted. Plus, "giving in" does not preserve peace—it simply appeases bullies and makes the workplace toxic.
OK, yes, but, how about: "I am still not convinced, BUT I realize neither of us are going to convince the other one right now, and I've been wrong before, let's try it your way this time."
This is not appeasing bullies and making the workplace toxic. Sometimes insisting on arguing everything out forever every time you think you are right is what is in fact accidentally being a bully and making the workplace toxic. (And I have definitely been that person; I am not to my knowledge autistic, although some people have wondered sometimes).
I think people can mean either one by "giving in", I am wondering whether the OP, in rejecting "pretending I agree when I don't" is accidentally being the person who "always insists on getting their way every time".
> OK, yes, but, how about: "I am still not convinced, BUT I realize neither of us are going to convince the other one right now, and I've been wrong before, let's try it your way this time."
And one of the big things that tech people often don't ask themselves is: "Does arguing over this really matter?"
"Winning" an argument almost always costs you some social capital, so save your arguments for the things that are genuinely important.
If you've said the "right" answer, people still want to argue, but it doesn't affect you then sit down and shut up. Sometimes you have to let people make a mistake so they can learn.
If they're really smart, not only will they learn they were wrong but they will remember that you were right but didn't beat them up about it.
> I think people can mean either one by "giving in", I am wondering whether the OP, in rejecting "pretending I agree when I don't" is accidentally being the person who "always insists on getting their way every time".
Yes, it's possible that the OP is accidentally being a bully by insisting on getting their way every time. But it's also possible that everything the OP is saying is true, and the other party really is objectively wrong. Do you agree it's possible the OP is right?
I personally have encountered a situation where a tech lead repeatedly doubled down on idea that was objectively deeply flawed, but they had a lot of political capital, so management told me I just needed to "give in". Other engineers agreed with my assessment in private, but weren't willing to say so publicly.
> Yes, it's possible that the OP is accidentally being a bully by insisting on getting their way every time. But it's also possible that everything the OP is saying is true, and the other party really is objectively wrong.
My point is that both of these things can be true. By insisting you always get your way in any dispute, you can be a bully even if you are always "objectively right".
How do we know who is "objectively right"? Both sides believe they are, right? Have you never realized later you were wrong about something?
> I personally have encountered a situation where a tech lead repeatedly doubled down on idea that was objectively deeply flawed, but they had a lot of political capital, so management told me I just needed to "give in". Other engineers agreed with my assessment in private, but weren't willing to say so publicly.
I will say again that I am not suggesting that anyone lie about what they think, or say one thing publicly or another privately, or not share their true assessments publicly, or that this is a good culture where people think they need to.
I don't think we have enough information about OP's situation to say for sure. I agree that many disputes are highly subjective, and there's no way to say who's objectively right. But I also think there are cases where, after listening and understanding both sides, it's pretty clear which side has a better argument.
Objective reality does exist! People are sometimes bad at judging what's objective, especially when emotions run high; but it's not impossible. And, if the question is important, then finding the objectively correct answer is better for the success of the project.
> I personally have encountered a situation where a tech lead repeatedly doubled down on idea that was objectively deeply flawed, but they had a lot of political capital, so management told me I just needed to "give in". Other engineers agreed with my assessment in private, but weren't willing to say so publicly.
That that point you need to choose, which you value more highly: correctness and finding the best technical solution, or maintaining as much team cohesion and not "stirring the water" too much.
So, if it's not your head on the chopping block, but a public decision about how to do things (ideally documented in an ADR - architecture decision record, with an author attached), just roll with it and indeed "give in". Ideally with some of your concerns documented, as well as a few prepared suggestions for how to deal with the eventual fallout and how to fix some of the things that might go wrong.
> or maintaining as much team cohesion and not "stirring the water" too much.
On an individual level, yes, that's the choice I had.
But on an organizational level, it's possible to do much better! In a healthy organization, tech leads listen to feedback and evaluate it with an open mind, and are willing to acknowledge that they're wrong. If they don't do that, then a healthy organization removes them from their position. In my case, this particular tech lead had a long history of being toxic, but the manager refused to fix the problem; this was a case of organizational dysfunction.
I don't know the details of the OP's situation, but I think it's possible they're running into something similar: Their coworkers aren't listening to valid points, and management isn't holding them accountable for being open-minded. If the org considers this behavior normal, I'd consider that a form of org dysfunction.
ADRs / RFCs are great. Compromise is a necessity for anything where there is no right or wrong answer, only unknoowns with more or less certainty and more or less strongly held opinions. Getting everybody's opinion and insight into a question, documenting it, searching for the best way forward, and then reaching and documenting a compromise, that to me is good engineering. I fully support building things in a way that I didn't suggest, that's what the team agreed on and gets the project going.
That's not what my point was about, however. I am not going to state "python is better than C++" just because someone wants me to say it, or back down from something I know is a fact, like "writing a file to disk is a complicated process." And I'm ready to quit over that.
> I am not going to state "python is better than C++" just because someone wants me to say it...
You shouldn't, quite the opposite - you should be able to express your concerns freely or at least make them known in whatever form of a "paper trail" is available. Better yet, if you are able to provide examples of what might go wrong with a particular technical choice and how to address it.
> ...or back down from something I know is a fact, like "writing a file to disk is a complicated process."
This is where things get a bit more complicated, though.
If you disagree with an approach that the team or certain members might pick, to the point where it blocks progress and they're not intent on budging their own views either, then clearly work cannot continue.
In those situations, there are just a few ways how things might go:
- neither you, nor them concede, work cannot continue until an external intervention
- one of you concedes, work continues, good decisions are made and there are no problems down the road
- one of you concedes, work continues, bad decisions are made and there are problems down the road
So the only option for work to get done, is for one of the people to give in. Since sometimes you cannot always control difficult people yourself (with the resources available to you), it feels to me that giving in to sub-optimal choices is the only option in those cases, short of quitting.
> And I'm ready to quit over that.
This is also a valid choice, though it also probably reflects how hot the job market is in your country, how important having a job is at the present moment, as well as your tolerance or emotional involvement in the project.
Some might jump around various companies until they may or may not find the environment that they're looking for, others might have to temporarily tolerate some bad engineering until another project comes along, others end up feeling miserable when the culture is all bad. I guess it varies quite a bit.
On the topic of filesystems: for me, hardware storage systems, file systems, operating systems, user library, filesystem caching, file formats, persistence guarantees, recovery, that stuff is really complicated. I just can't say that it's simple, because to me it never will be. Maybe it's simple for the other person, but I don't understand why "giving in" helps any of us in this case. I just won't say "writing a file is simple", even if you threaten to fire me. That's fine by me, I might change my mind if my survival depends on it, but it really is not what I'm here for.
We can go ahead writing your file-based persistence layer, and I"m fine supporting and maintaining it too. But I won't say that "it's simple".
Hah, that's a fair point. Whenever someone tries to figure out how to store files, I'm usually inclined to just point them in the direction of S3 to attempt to at least minimize some of the eventual issues of dealing with files.
You know, even MongoDB GridFS or binary blobs in RDBMSes could be less problematic options, rather than dealing with inodes, maximum file path lengths, file name constraints, storing metadata, maximum files in a directory and eventually having to build a system for having a tree of nested folders to work around those (a bit like what Ruby on Rails ActiveStorage does with uploaded files out of the box, for example).
Once you involve the cloud, things get exponentially more complicated. Your `fwrite(foobar)` has ramifications that no human can legitimately understand.
That's what I meant with . I am happy to write `fwrite(foobar)` and get the project going, but it's not simple, and there might be very valid reasons to not do just `fwrite(foobar)`. If you don't want me to even mention these, then I'm out.
Otherwise, I will fully engage. I'm really a pragmatist when it comes to getting stuff done. Anything getting shipped is better than nothing getting shipped, and I will maintain it for as long as it needs to.
> Sometimes insisting on arguing everything out forever every time you think you are right is what is in fact accidentally being a bully and making the workplace toxic.
What one person considers arguing is not always considered arguing from another's perspective. (I don't want to label the sides here because I think definition varies neurodivergent or not)
From the examples given it sounds like the author views the conversation as a beginning middle and end before they can make a judgement, but the person asking them the question is only expecting the end part so theres a misunderstanding.
Generalising here body language is different in autistic people, tone of voice, social cues and manner of speaking, depending on how well that person can mask might affect how their attempt to understand the problem is perceived.
In work environment, "trying things your way" is seldom harmless to success of the product or one's personal ethics, career, reputation, work life balance... Who will fix things if they go wrong and how much effort is such a fix going to require? How is my performance going to be evaluated if I accept a bad call? If the answers are clear and acceptable to me, I have no problem being flexible. Making things clear often involves talking to our common manager, although I might also decide that I am willing to put in the extra effort to fix things if needed if the other person is not being obnoxious.
There are thousands of things engineers bikeshed about that have no objective answer but still end up being a major source of discussion. So I would say the odds are good, given that in a bikesheddable argument both sides are correct.
I've never understood why people go along with things they disagree about. It seems people often beat a good argument with the threat of retribution if we dont play along. Doesnt sound like a recipe for well thought out actions or incentives.
Because sometimes people aren't going to agree. Now what? somebody's going to have to go along, aren't they? The person who is the most bull-headed about not giving in isn't actually more likely to turn out to be right.
And because I know I might be wrong even though I don't think I am, I've been mistaken about that before, that's literally what being wrong is. Sometimes when I'm wrong I am not going to realize it for days/weeks/months. So why fight it to the death? Only when the consequences seem especially vital, not every damn time!
I am still not advocating pretending to think something you don't. You do not have to pretend you agree with the other person or lie about what you think. But I am advocating some humility. (I definitely do not always exhibit it myself, for anyone reading this who knows me; I do consider it one of my faults; I am writing here as a reminder for myself too).
I actually think it's important to set up a culture where everyone doesn't have to agree -- we all acknowledge we will sometimes embark on a course of affairs that everyone doesn't agree with, and you don't need to pretend you agree. People will disagree, and sometimes we still need to move forward. I actually fully agree that a culture where people have to pretend to agree in order to move forward is dishonest and harmful. And that's generally the real-world outcome of expecting nobody ever to "go along" with something they disagree with.
The interesting thing about your argument is that the most bull headed person is the least likely to participate in the suggested manner. The attitude seems it will only exacerbate the number of times the Bull headed win for their bull headedness and the number of times the submissive people submit.
If there were only those two people involved that's possible. But in a situation with onlookers the bull-headed 'winner' will gain a reputation for being aggressive and unlikeable, while the the 'loser' will seem reasonable and professional. If our 'winner' persists with this behaviour they'll end up ostracised at best and more likely ousted from their position because no matter how correct they are, that sort of behaviour is always a net negative overall.
> But in a situation with onlookers the bull-headed 'winner' will gain a reputation for being aggressive and unlikeable, while the the 'loser' will seem reasonable and professional.
I like this angle, I'll try to observe if it's actually happening in my context :)
It depends, if the world contains only the two people, sure. But there are other people: teammates, managers, executives. Being able to say "look I'm happy to compromise when I think its not important, but in this case it is important" is compelling, and having a pattern of actual willingness to compromise goes a long way towards convincing third parties that you're not being obstinate for no reason.
Let's say you're deciding on a washing machine. You're arguing about washing machine A ($500) vs B ($600), and you think B will last twice as long as A. Your partner would prefer to save $100 now even if the machine breaks later on, and doesn't want to back down either.
The cost of choosing washing machine A is that it breaks at some distant time. The cost of arguing about washing machines is wasting an hour every week driving to a laundromat and paying $10 a wash, plus the hard-to-quantify strain on your relationship, for an argument you might not even win. In this situation, the hidden third option of dragging out a conflict that you might not even win could end up more costly than choosing a bad option, even if you're right.
In software this happens a lot. You burn opportunity cost trying to argue for a perfect solution instead of aligning behind a flawed solution.
I fully agree that in a romantic relationship there is far more at stake than any single choice.
But I've found the professional world to work far differently. For starters people only stick around jobs an average of 18 months (whereas marriages get about 7 yrs). And there is far more at stake to having your choice selected in an argument at work -- promotions and subsequent pay increases are worth 10s-100s of thousand. Submissive people are frequently looked over for promotion and may miss >5 years of promoted working years.
perfection was never in the discussion, but good (ie high quality) is. When I see someone arguing for a bad solution (ie both high risk & total cost of ownership expensive) it's there's actually a lot on the line. This risk factor scales with the size/brand of the business. Look at the pie in the face one company wears[1] for a security breach, whereas another gets to demonstrate their security forward posture[2]. The former likely has lost millions to a ~million dollar choice[3]. Whereas the latter has increased their brand value to the same choice.
But the person who argues without end for what they think is right is often ostracized and disparaged. This is something very broken in American culture.
Cool, that seems fair. As you describe it, either washer should work. I still hate the avocado one, but I hate the laundromat even more. I can build alignment around this.
If only they were all that way.
If someone tells me their blender is the best washing machine, this may turn into a painful conversation. A long one. Possibly an embarrassing one. But I’m here for it. That’s a fucking blender, and I’m not going to call it a washing machine even if that’s the last decision I make here.
It would be great if all of these situations were as sane as picking between two valid options. Sometimes there’s a valid one, and, well, pick your expletives for the other one.
In software this happens a lot. Entire teams spinning plates because someone confused authority with experience.
Sometimes it's also better to lose a battle in order to win a war. For example, I once thought a certain feature was useless and not worth the effort to implement. I knew however that if I chose that hill to die on, it would lead to a lot of resentment -- "if only we had built that feature, we would have X". I decided to concede as this was not a big feature but, like I predicted, the feature was useless. This now put me in a better position for the future where I could draw on this as a lesson for when it truly mattered. Whenever we would be at risk of getting distracted by some much bigger useless feature, I was able to point back to that experience to bolster my dissent with more credibility in a way I might not have been able to if I didn't pick my battles.
Because sometimes I'm the one who's wrong, and if I allow myself to realize that I can learn from it. A bit of humility is necessary for healthy teamwork.
Fully agreed humility is necessary to realize when one absolutely is or likely is incorrect. My comment was WRT when people submit knowing the path is wrong due to the threats of retribution from their colleagues (which includes ostracism or negative career effects).
One thing I dont understand is why American culture is such that it's better to play nice to the group detriment than to work hard to everyone's benefit? It's like people would rather smile on a sinking ship than suffer the journey to excellence.
> I've never understood why people go along with things they disagree about.
As an Engineering manager this happens to me a lot. The first (perhaps most important reason) is that I realise that I might have things wrong and welcome the opportunity to grown and learning. Second, I want to show my appreciation to my report by supporting her/his idea. And third, I always take to opportunity to keep my ego out of the game. I might need to manage the risk and interests, but that's just part of the job.
Yeah I failed to qualify that my comment comes from my context which is an expert in a field that has painstakingly pursued excellence for more than a decade, and I frequently am out maneuvered (politically) by people who make choices they do not own the consequences of[1]
[1]: for example I've warned my employer once that an implementation was brutally inefficient and will cost both opex and velocity, but they told me "what's your solution" to which I could only reply "give me a week to design it like you gave the principal engineer and I'll give you a better solution". They laughed and said they dont have a month. The choice has cost the business >$1M in excess PaaS fees and has had multiple subsequent major projects to attempt to remediate the costs (granted the opex costs have come down significantly since multiple rounds of refinement). But the point still stands -- I roughly knew a better path to not need 6+ months of refinement, and save >$1M in opex overspend, but they wouldn't spare the time and disparaged me for not being a team player.
When you know you know better it's best not to submit. Perhaps it's worth realizing it's a bad culture though.
Because people understand that their perspective might be incomplete or wrong, and/or the consequences of failure are reversible.
People also understand that "correctness" is often subjective and not boolean in nature, so insisting their opinion is in all ways the most correct would be silly.
It is though. It's a way of saying "maybe I'm wrong, and we're going to act this out by pretending that I am". This means that whoever put pressure on you gets their way, which motivates them to do it again. That is toxic.
> This means that whoever put pressure on you gets their way, which motivates them to do it again.
While I don't think this is a ridiculous take, it is a rather uncharitable one.
I'd think the only reasonable time this should be believed is after it has shown itself to be a pattern.
> There is more to life: I am an engineer; I like solving problems. I embrace fairness and open intellectual exchange. This matters to me a whole lot more than getting promoted. Plus, "giving in" does not preserve peace—it simply appeases bullies and makes the workplace toxic.
OK, yes, but, how about: "I am still not convinced, BUT I realize neither of us are going to convince the other one right now, and I've been wrong before, let's try it your way this time."
This is not appeasing bullies and making the workplace toxic. Sometimes insisting on arguing everything out forever every time you think you are right is what is in fact accidentally being a bully and making the workplace toxic. (And I have definitely been that person; I am not to my knowledge autistic, although some people have wondered sometimes).
I think people can mean either one by "giving in", I am wondering whether the OP, in rejecting "pretending I agree when I don't" is accidentally being the person who "always insists on getting their way every time".