
The Art of Debating for Software Developers - thanato0s
https://thevaluable.dev/guide-debate-software-developer-skill/
======
OliverJones
Observation: rigorous debate, the kind of debate that generates advances in
understanding and better software, involves LISTENING to the one I'm debating.
It involves thinking "This person I'm talking to could be at least partially
right".

The article linked here is actually about the art of rhetoric: about
convincing someone I'm right. And, as it happens, it's mostly about marshaling
my arguments about why I'm right and biding my time. Those are good. But in a
good debate, both I and the person I'm debating marshal our arguments.

The old slogan is true: we have two ears and only one mouth. Listen more, talk
less.

~~~
shalmanese
I've always believed that you should adopt the attitude that winning an
argument is a waste of time. If you win an argument, you don't know any more
than you knew before the argument. You should always go into an argument with
the goal to lose because losing means you're marginally smarter now than you
were before.

~~~
wccrawford
My goal in an argument is not to _win_ or _lose_.

My goal is to come out with a plan that works best. That almost always
involves taking criticism and advice into consideration, and sometimes
involves not doing things my way. Sometimes I'm even completely wrong. But
sometimes I'm completely right. There's no way to _know_ before having the
"argument".

~~~
RandoHolmes
That's not an argument though, that's a discussion.

~~~
nicoburns
A good argument is nothing but a discussion.

~~~
RandoHolmes
I just mean that having a technical discussion is not an argument. There will
be disagreements, but that doesn't make it an argument unless someone involved
is taking things too far.

~~~
nicoburns
There is another sense of the word argument where it simply means a well
reasoned defence of something. This is the sense in which it is used within
Philosophy and Mathematics.

~~~
RandoHolmes
fair enough.

------
lmilcin
If your goal is to convince people and agree with your position, feel free to
read the article but understand this is getting you nowhere close to your
goal.

Convincing people of anything at a company starts way before by building
rapport with people and other techniques. It is largely proven than with most
people it is your current standing, perceived intent and subtle speech/visual
cues that are more important than the actual content.

Want make it more likely people agree with you? Try to be helpful, ensure
people consistently think they are better off agreeing with you. Ensure people
are safe investing in cooperation with you (so no talking behind their backs,
ensure if somebody achieved something you will attribute it to them even if
they are not present). Ensure you _listen_ to people and they don't get
impression you are welcoming their point of view. Let people know when you
make mistakes (I like to use this as learning opportunities). Congratulate
people on their achievements even small, but never do this if you are going to
sound banal.

Do this and you might be able to convince people of about everything and even
if you make some mistakes they will let it slide.

(If it felt like "How to win friends and influence people" then it wasn't an
accident. Developers are like any other people and same timeless tips apply.)

~~~
thanato0s
I thought that too, till I bumped into the "I'm right and you're wrong because
my ego is huge" kind of person. Even worse: when they are higher in the
hierarchy, they use their power to impose whatever they want. No tests, using
jQuery 'cause it's the best, microservises are good even if it's a distributed
ball of mud (named after Stark Trek starships), and so on.

I agree with you in theory, but in practice, sometimes, with some people, this
strategy will tend to infinity on a time scale.

~~~
asdfman123
Here's how you deal with someone who is "always right" and has more clout than
you:

1) Try to be friendly, try to create a mentor/mentee relationship with them,
and get on their good side. If that works, maybe they will be _slightly_
receptive to what you say. Regardless of the outcome, though:

2) Ultimately just do what they say.

I know that's anathema to many people in the field -- and it was a damn hard
lesson for me to learn -- but you have to understand when you're picking a
fight, and who stands to lose. (Hint: you're picking a fight by disagreeing
with an Ego Monster, and if you have less clout than them, you're going to
lose.)

By losing, maybe you'll get less favorable work and less recognition. Or maybe
they will eventually "manage you out" of the organization. But you will not
get what you want in any sense of the word.

Swallow your pride, go along with it, and maybe look for a workplace that's
more accepting of new ideas. There is no winning.

~~~
AnimalMuppet
Or the risky approach: Find someone with more clout than them that can
actually listen and think. Go to them. Show them what the Ego Monster is
doing, and have them get rid of the Ego Monster.

But as I said, it's very risky. You could lose your job. If the Ego Monster
has a lot of clout, you might suffer permanent career damage. Think well
before taking this approach. But it's the only one that offers any hope for
your current workplace.

~~~
asdfman123
Perhaps, but as you said, do it with great care.

So many people, many of them younger, do not seem to realize there isn't an
objective arbiter of what is right and wrong -- there's only politics -- and
you aren't going to be rewarded for being right. And most people of higher
level don't really give enough of a damn about your petty code problems (oh
no, he likes inhertiance and I read something that asserts composition is
better) to stick their neck out for you.

~~~
AnimalMuppet
Don't do it for a petty code problem. Suck it up and deal with it if he likes
a different approach than you do.

I meant it only for something big enough that it's threatening or damaging to
the organization as a whole. That is, it's not just causing problems for
_you_. It may not be right or wrong, but it's definitely better or worse, and
not just for you. People above the Ego Monster care if the Ego Monster makes
it harder for the team to deliver.

And why would it make it harder for the team to deliver? Because the Ego
Monster doesn't listen, and isn't omniscient. That leads to the Ego Monster
making dumb decisions - decisions that don't actually work in the real world.

~~~
asdfman123
That's the key difference. People will care if it actually impacts the org.

But so many juniors are convinced they need to fight seniors and management
based on things they read a medium article about. I try to tell them to stop
on the internet all the time. I wonder if they ever actually listen.

------
throw0934509845
Productive workplace discussion is not "the art of debating". Just listen
respectfully and ask others to do the same. If you need to convince someone of
something you should be able to ask them simple questions that lead them to
your opinion. If you can't do that, you might not have the better idea. This
approach will convince them and let them feel that it was their idea.

Debate is structured and, importantly, proctored to adhere to a rigorous set
of standards for which the participants have prepared. It is helpful on an
individual level but often not a good way to inform decisions.

~~~
thanato0s
I agree in theory, but I saw as well strong opinions held without real
arguments, throwing "we always did that this way", or because the person is
higher in the hierarchy so he's right. I think, in these cases, it can be
useful to try at least to bring more solid arguments in the conversation.

~~~
Chris2048
Add to that list of strong opinions without real arguments: "It's
standard/industry practise" or "because it's Agile", without a breakdown of
merits as to _why_ that is.

------
schalab
The allure of free speech and debate is that the best ideas win.

But what I have often found is that the best debater wins.

And some debaters are so good they can win both sides of a debate.

This wouldnt be that much of a problem if you assume verbal iq is an
independent variable uniformly distributed through the population. But I have
often found verbal iq is highly co-related with other biological traits and
markers. This creates a biased situation where debates often lead to erroneous
conclusions and bad results.

~~~
asdfman123
I'm not sure how much verbal IQ has to do with it. Everything in life is a
matter of practice and study. For instance, there's difference in musical
ability between people, but the guy who practices guitar every day is going to
be better than the guy who doesn't, 100 times out of 100.

I actually have a considerably higher test verbal IQ than mathematical and
have perfect verbal section test scores to show it. However, I used to really
suck at debates because I was naïve and unpracticed.

I went through a few years of spending too much time on reddit, though, and
now I can wallop most average people. The most important thing BY FAR is to
immediately establish definitions and frame the debate. You force your
opponent to operate in the tiny amount of air space that you've given them,
and constrain them to talk about things that you've chosen so you probably
know more about them.

~~~
crispyambulance

      > You force your opponent to operate in the tiny amount of air space that you've given them, and constrain them to talk about things that you've chosen so you probably know more about them.
    

That's a good way to repel people from ever engaging with you and instead find
ways to work around you. Moreover, you can't actually "constrain" the
discussion unless it's deliberately structured that way (like what lawyers do
in a court).

You've got to respect and address any alternative framing that your "opponent"
is operating under, they're not going to comply with an arbitrary framing of
an argument that you provide, just because.

~~~
asdfman123
I find it's pretty easy to frame the debate, generally, though. When they
bring up off-topic points, you say "There's plenty of room to discuss those
issues you brought up, but I'm still interested in your thoughts on my
original question."

Now, you become an annoying ass when you try to turn every discussion into a
debate, and try to win every time. Don't do that. Sometimes it's better to let
other people win or just feel heard. But if you want to win, that's how you do
it.

~~~
crispyambulance

      > ... you say "There's plenty of room to discuss those issues you brought up, but I'm still interested in your thoughts on my original question."
    

But you just said your M.O. is to deliberately force the opponent to operate
in a "tiny airspace" that you define. So, there's _not really_ "plenty of
room" to discuss those issues they brought up.

That pisses people off, it's seen as an aggressive move and can easily
backfire.

Framing the debate is perhaps the most difficult task towards "winning" a
debate.

~~~
asdfman123
I think you might be misinterpreting what I'm actually describing. I agree --
you should not try to debate people in casual conversation with the goal of
winning. Even if they're logically incorrect in a few places, their underlying
values are still valid, so you need to work with them to find a solution that
works for everyone.

Trying to "win" can definitely backfire, so you should do it sparingly. In
truth, the only place I really debate people is on the internet, most visibly
with my pro-Trump relatives on Facebook :).

However, the person I was responding to was talking about "how to win
debates," and that's how you do it. Yes, if you want to win, you do need to be
hard nosed and aggressive (I prefer gently guiding them down the garden path
until they realize it's too late to turn back). _Whether or not you should do_
it is a different point entirely, and to be frank, I completely agree with you
there.

(Meta note: do you see how I'm actually making a belated attempt to frame the
debate right here, and it's not necessarily as aggressive as I describe?
Really sometimes it's just needed to establish clarity.)

------
throwawayffffas
I initially read the title as The Art of Debating Software Developers. Which I
would also find very interesting.

~~~
WJW
Do they make the art while debating? It seems the debating would distract from
the painting (or poetry, or music, etc)

Maybe it's art _about_ debating software developers? You could probably write
a good short story about it.

~~~
brudgers
The prize for winning is several software developers.

------
dullgiulio
Tangentially, the adage "strong opinions, weakly held" is nonsense. If you
have a strong opinion, you look like a fool if you change your mind when
evidence is shown to you.

It is much better to just stay humble. Show your insecurities and lack of
knowledge openly and early, you'll be surprised to see how people reactions
change from hostile/confrontational to outright helpful.

~~~
skrebbel
I've always been a fan of "strong opinions held weakly" and the rebuttals I
read to it so far were, to me, weird straw man articles about assholes at work
and not being one.

But your comment totally convinced me, thanks. There's no need for strong
opinions, even when weakly held. It adds nothing.

Amazing how a few sentences can do more than entire blog posts sometimes.

~~~
carlmr
>Amazing how a few sentences can do more than entire blog posts sometimes.

A long form article is more likely to try to make many points at the same
time, some strong, some weak, some wrong ones.

Comments are usually short, making only one point. Furthermore they're sorted
and filtered by popularity. This means that strong, pithy statements are
displayed much more prominently.

Likewise this article could use some editing.

~~~
thanato0s
What do you mean by "this article could use some editing"? It should have less
ideas, fixing the spelling and grammar mistakes, or something else?

~~~
carlmr
Spelling and grammar mistakes are one thing. Mainly though the article lacked
focus.

------
brabel
I am disappointed this article does not mention any of the philosophical
theory about debates (arguments), namely the logical fallacies that are so
common in all sorts of conversations/debates (straw man, ad hominem, black-
and-white, authority, no-true-scotsman, fallacy-fallacy, moving goal posts,
Texas-sharpshooters) as well as the types of arguments (deductive, inductive,
abductive, analogy, reductio ad absurdum).

Politicians, for example, are masters in using fallacies to make arguments
that less educated people find persuasive.

Here's a good video about argument types:

[https://www.youtube.com/watch?v=NKEhdsnKKHs](https://www.youtube.com/watch?v=NKEhdsnKKHs)

And this one (and follow ups) about logical fallacies:

[https://www.youtube.com/watch?v=8qb-h0sXkH4](https://www.youtube.com/watch?v=8qb-h0sXkH4)

Knowing these I think is more important than using the more vague advice this
blog post mentions.

~~~
tgv
In a complex discussion, these devices are rarely useful. And the fallacies
are only meant to invalidate your opponent's arguments, and sometimes
incorrectly: e.g. a debate on the merits of refactoring ultimately has no
logical resolution, only reasonable expectations based on experience and
authority.

On contrast, the article is more about maintaining relations and work culture
than deciding a debate, which is indeed vague, but at least as valuable.

~~~
brabel
> And the fallacies are only meant to invalidate your opponent's arguments

Not only your opponent's but your own also! That's very important... knowing
the fallacies you're less likely to use them, which I think many people do out
of their ignorance of the topic.

------
throwawayffffas
While I found a lot of what's written in the article worthwhile, the advice of
using argument from authority as a debating strategy is just bad.

~~~
arunix
But they aren't really advocating argument from authority e.g.

> Be careful though: not everything from evangelists will apply to your
> specific problem. Don’t invoke the Single Responsibility Principle spell
> without any argument why it’s useful and valid. Opinion leaders should
> provide you these concrete arguments; if they don’t, their names alone
> shouldn’t influence your decisions.

------
candiddevmike
Why debate when you have the ear of the engineering manager/product manager/VP
and can back channel everything without consensus among your peers? Or on the
flip side, make someone's life a living hell by having a nitpick debate in a
PR but act like everything is fine with the PR during meetings.

Software development has an ego problem, and I wish there were more resources
out there to address it.

~~~
yodsanklai
> Why debate when you have the ear of the engineering manager/product
> manager/VP and can back channel everything without consensus among your
> peers

I think this is a good point. Not everybody wants to debate and reach
consensus if they can find other means.

Also, some people don't like debating because it makes them uncomfortable for
some reason. Debating should be done in good faith with the goal of reaching
the best outcome, but some people take it personally and see it as an attack
against themselves and their values.

------
ainar-g
The article mentions not taking things personally, but doesn't go into detail
on _how_ are you supposed to do that. Developers, myself included, are often
very passionate about their favourite tools and practices, so when the
environment changes from the one that encouraged them to the one that
discourages them (for example, when switching teams or when new management
arrives), it may become a ticking bomb of anger and frustration for some.

On an unrelated note, the page uses:

    
    
      hyphens: auto;
    

Which is good, I love hyphenation! But text that is hyphenated but not
justified is less legible, in my opinion. Hyphenation works best when you know
where to expect it. I would add:

    
    
      text-align: justify;

~~~
thanato0s
I'm the author of the article. I'm struggling with that myself. I don't have
any solution tailored to everybody, because I think everybody is different on
that. I'm the type of developer speaking loudly when I try to defend my idea,
and I improved a lot over the years, but others won't have any difficulties to
argue in a calm fashion, and there is a whole spectrum between.

The only things which helped me was meditation and trying, again and again, to
breath and trying calm done when I see myself too passionate. But again, I
think it's really personal.

Thanks for your comment on the formatting! I'll try to justify the text see
how it goes.

~~~
ainar-g
Thanks for the response! I almost think that during debates people should be
required to breathe deeply after every couple of phrases, heh.

------
whack
> _As a general rule, when you’re proven right, don’t claim loudly through
> your open office: “I told you so, you miserable pig! I was right! Therefore,
> I curse you and all your family on three generations!”_

Well, that was unexpected

~~~
andi999
of course you just dont do that. Your boss might not be in the same office, so
one should also put it in writing with boss in cc.

------
mrkwse
I think it's important to be wrong and have the humility and confidence to be
wrong. Throughout school and, in particular, university I would often try and
avoid discussion with teachers/lecturers/seminar groups etc. for fear of being
wrong and for whatever judgement would follow that. Part of that was
anxiety/impostor syndrome, but also condescending lecturers and teachers.

When I got to my first job, I was hugely fortunate to have colleagues that
wouldn't judge anyone for their views/opinions, whether right or wrong
(technically, obviously they were expected to be respectful). As such I found
myself learning and growing so to such a greater extent, and quicker, in those
first couple of years of employment.

It's something that goes both ways, if you're respectful and positive of
colleagues who may be wrong, you'll help them to learn and develop, which in
turn will contribute to a better team overall, more collaborative and more
competent. I think it's especially important to try and include the quiet
ones, again they may be wrong, but as long as you impress that it's fine to be
wrong and work with them to improve their knowledge and understanding, that
bit of extra effort will go so far.

------
m0zg
By far the most important technique for effectively engaging in such a debate
is the Socratic method (AKA "precision questioning" at Microsoft - if you work
there and you haven't taken this class, you should, if it's still being
offered). Basically you just carefully ask questions which, little by little,
bring the things to the point where both sides could accept the resolution.
Note that this works both ways, and the other side could (and IMO should) do
the same to you, and _you_ could very well discover that your assumptions were
wrong. That way instead of engaging in a battle of egos (which almost never
works), you get to engage in removing unjustified assumptions and finding the
mutually acceptable solution. This does require some skill, and more so if the
other side also knows these techniques, but I'd argue that this is the most
respectful and effective way to argue at work, and the only one I know which
nearly always produces good outcomes.

This does assume the argument is being conducted in good faith though. If it's
not, you'll only irritate the opponent as their logic gaps and lack of good
faith will become blindingly clear.

------
kieckerjan
Like many commenters here I am disappointed by the lack of emphasis in this
article of listening to the other side. Which is strange because at the end it
concedes that it is not about winning the argument but gaining insight,
valuable ideas, a sensible course.

One of the smartest ways I know to approach a discussion with insight in mind,
is called steelmanning. It is the opposite of strawmanning. In strawmanning
you attack altered, weakened versions of the other side's argument. In
steelmanning you attack its best, most convincing version. You even seek to
corroborate the argument and verify it with your opponent before attacking it.
The benefit is that you genuinely have to understand the other's arguments
before arguing against them.

The following blogpost explains it very well.
[https://themerelyreal.wordpress.com/2012/12/07/steelmanning/](https://themerelyreal.wordpress.com/2012/12/07/steelmanning/)

------
watwut
> If you need to follow a golden rule when debating, take this one: don’t take
> it personally. In other words: don’t feel attacked directly, as a person.

There are situations where you are attacked personally and need to respond.
Whether the attack is direct or through sleazy implications. This is not some
kind of rare occurrence, people who try to use debate to either show/gain
dominance, get equal or just try to win by sleazy tactics exists. Pretending
this does not exists does not make you win the debate, it makes the sleaze
personal attack stick and makes you look bad (less capable or weak).

And I know, because when I was younger I listened to advice like this and that
is exactly what happened.

Nowdays, I call it kindergarten rules of behavior. They sound good and are
sort of what adults say to kids. Except that they assume that you are put in
an idealized situation. They miss crucial "how to recognize and react when the
sleazy tactic was used" and instead pretend it is not happening.

~~~
notmyname9173
Calling out bad-faith arguments just seems to make things worse (at least in
the current US political/social climate). I usually just ghost people who
engage in ad hominem attacks, lies, and deception in their arguments because I
have no idea what else to do.

------
joshribakoff
I strongly disagree about quoting thought leaders as an appeal to authority.
It’s ok to quote thought leaders but focus on the tradeoffs. Most thought
leaders embellish things for more clicks, or speak in generalizations that are
easily misapplied. Telling your coworkers to do something because Martin
Fowler “said so” is not a good argument

~~~
thanato0s
I agree, I hesitated to put it in the article. I decided to do so at the end,
but I've added that too:

> Be careful though: not everything from evangelists will apply to your
> specific problem. Don’t invoke the Single Responsibility Principle spell
> without any argument why it’s useful and valid. Opinion leaders should
> provide you these concrete arguments; if they don’t, their names alone
> shouldn’t influence your decisions.

------
baybal2
People like to listen to charismatic people, and being one some times involves
being pushy, emotional, able to dispense punishment, and throwing insults when
needed.

The author sounds to me exactly like the guy who likes to run talkshops, for
the sake of talkshops.

Your ideas work, if you can push them through, largely regardless of their
merit.

------
tabtab
One thing I find is that academic-oriented debaters often view the criteria
for the value of a tool/language/system/etc. very different than those used to
thinking in terms of business (profit, resources, deadlines, etc.).

For example, assuming easy access to elite staff (dev & users) and having lots
of time for perfecting a domain model is often unrealistic in business.
Getting the "right" answer seems more important to them than resource
constraints a typical business faces. They are perfectionists in their models
and tools but not perfectionists in resource management because they either
don't have enough practice there, or are rusty.

One has to agree on resource metrics up front, otherwise the debate won't get
anywhere.

------
Chris2048
> It’s not your ideas against somebody else’s anymore, it’s influencer’s
> proven-to-be-right-ideas against ideas with less weight

Or in other words, argument from authority/popularity over ideas / merit. This
is the opposite of good debate, even more so with the dubious distinction of a
tech "influencer" being an authority.

By all means, borrow arguments if they are good, but please do not promote
them because of who said them.

------
lazyant
The biggest mindset change is to consider a debate a problem-solving exercise
where both parties are in the same team, instead of a competition with the
person you are arguing with. (Same goes for arguing with significant other and
to some extend, to any negotiation).

------
flower1143
The most important thing is knowing your statistics based on sources. When
your opponent makes a vague claim about some increase/decrease, you ask what
the precise numbers are. If they don't know, you point out that they don't
know.

------
7402
I've observed that the ability to win a debate is often orthogonal to the
ability to write good software. Both as an individual contributor and as a
manager I've tried to avoid the use of debating as a decision-making tool.

------
vendiddy
I like to repeat the other point of view in my own words before I offer my
own. This has two effects:

1\. It ensures I actually understand the other person

2\. The other side is more likely to listen

------
awsanswers
Disagree efficiently over debating. Most software choices are reversible

------
gridlockd
_" Spaces instead of tabs in a codebase won’t bring any value to a company."_

This is wrong. If your company is still using tabs, it is already at a
competitive disadvantage. If you force me to use tabs, I will be unhappy about
that, because it greatly affects the mechanical part of my work. I will
perform worse at my job and probably create debates about this very issue, all
the time. I _insist_ on spaces. I am the majority of programmers, because the
ergonomic benefits of spaces are obvious.

If, for some odd reason, you have team members that insist _on tabs_ \- a
position that I have never encountered in the wild - then make _them_ change,
not me.

~~~
phkahler
The most important thing about spaces vs tabs is to have consistency. If some
people use tabs and some use spaces the code becomes unreadable. However,
should you find yourself dropped into a codebase that uses tabs you might be
wise to adopt that standard rather than argue about it. Tabs still lead to
issues, but not as bad as mixed use.

~~~
gridlockd
> However, should you find yourself dropped into a codebase that uses tabs you
> might be wise to adopt that standard rather than argue about it.

The wise thing would be to _find another job_ , because this codebase and the
company that maintains it is a sinking ship.

