Hacker News new | past | comments | ask | show | jobs | submit login
The Art of Debating for Software Developers (thevaluable.dev)
114 points by thanato0s on Sept 8, 2020 | hide | past | favorite | 113 comments



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.


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.


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".


Even more pithily: my goal in an argument/debate is not to be right at the beginning, but to be right at the end.


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


A good argument is nothing but a discussion.


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.


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.


fair enough.


I go into arguments with the goal of generating a diff of the logic trees in the participant's brains. In the best case, you find your assumptions are the same but that your reasoning differs -- these are often tractable. In the worst case, you find that you have irreconcilable fundamental assumptions. But even in such cases, the act of unveiling your assumptions allows you to gracefully "agree to disagree."


"Diffing" on logic trees??

You are thinking of a very specific scenario of debate where knowledge is merely a set of observable/observed facts and everything in the discussion is fully described, strictly bounded and available for scrutiny.

In such a "sandbox" of logical positivism, sure, one can see a debate as an unfolding of consequences from logical primitives.

That's very far from what most actual real-world debates are like. There's typically a profound lack of facts, knowledge and experience. Deciding something like "how to proceed" with a business decision involves dabbling in a lot of uncertainty, subjectivity and emotional baggage from both sides. Subjectivity is often a dirty word amongst software developers but, outside of stackoverflow.com, it's fundamental to human experience and argument.


Exactly. Logic is universal and self-evident, so the point of any argument is to dig into which fundamental assumptions you disagree about. And once you've reached this point, the argument is over.

Though, it's possible to keep arguing after by challenging the internal consistency of the other person's assumptions. You can often win arguments by demonstrating that their set of assumptions leads to a illogical and contradictory result, or you can show how their assumptions prove something that they don't agree with.


I agree by using the socratic method you can prove anybody wrong, but I believe there is no value in it.


I would revise the goal slightly.

My aim is always to try and understand a different perspective, because this forces me to account for that in my own perspective.

My mind can be unchanged or I can 'win' the argument and still have learned something new with this approach.


Yeah, that's wrong. I've often won an argument where I knew afterwards better what I was talking about than before. Same often holds of course when I lost the argument.


That depends on why you argue. If I win an argument with an anti vaccine person they (or an onlooker) start vaccinating and that action protects my children that are still to young for vaccines.

Of course the above is a big if. I don't think I've ever done it. But that is my goal.

Most of the time though you are right, I want to find the truth which might or might not be what I think it is.


That is a wrong attitude since you chose to marshal your arguments forward without listening to the other party. Should always think whether theres a possibility that you’re wrong and that’s the best strategy for learning something new. If you think you’re abdolutely wasting your time with an antivaxer then don’t debate. If neither party is listening then it’s a pure waste of time and not a debate


> I don't think I've ever done it.

I have, once. Or at least I came close. The lady had two arguments: vaccines, like most medicine, make our immune system weaker; and "they" put poisonous stuff in vaccines. I pointed out that (i) vaccines aren't a crutch that may relieve or replace our immune system, but a kind of kick in the butt designed to strengthen our immune system, and (ii) that yes, they put poison in it, because that's how we can ensure our body reacts to it and prepares itself for the real thing.

That was enough to cause her to reconsider her conspiracy thinking. I think one key here was to acknowledge one of her arguments (the poison thing). I also did not discuss regular drugs, so I could focus on vaccines. I did not deny drugs makes our immune system weaker, even though I don't think they do in most cases.

Turned out listening can be a rhetoric weapon as well as a learning tool.


That's what I'm trying to say at the end of the article. Maybe I should have precised that at the beginning, though.


Most people are desperate to be listened to and understood, and when they feel like they're not being understood, they talk louder. Break out of the doom loop by developing active listening skills, and learning how to validate other people's opinions.

Often times once a person feels listened to, they stop worrying about "being right" and are willing to make compromises, or even drop their demands entirely.

A great way to help someone see why you think their solution is wrong is to ask questions. "What happens if the user clicks X?" "How will the database handle the increased scale?" "What will be the costs of implementing that?" etc. etc. Just pure, calm curiosity.

But yes, even if you're in a debate where the sole purpose is to win, listening is important. Look at politicians during political debates -- they listen like hawks when it's not their turn. The reason is simple: you can't effectively negate an argument you haven't even heard. We're all smart people and capable of coming up with a million counterarguments to everything, but hearing EVERYTHING someone says is the really hard part, and is worth practicing.


I think you're right :) You can't really convince someone without listening to what they say.

I personally wish I could learn to do the reflexive listening thing more. Maybe I should practice with everyday conversations so that it happens habitually during heated conversations when your attention is on something that truly matters.

I also remember reading a book about camping. It had an interesting introduction, that talked about family camping. Although it talked about equipment and other important details, one bit talked about communicating with them. It basically said you should be saying "what do you think?" throughout all the planning and preparation. I saw it as the difference between hauling your family to the woods, and having a lot of participants out camping together.


I think too that practicing as much as we can is the key. It's good to develop a habit and to do it without even thinking about it. That said, it's hard when I'm going into a passionate conversation.

Meditation helps me a lot to have this millisecond of "Wait. Don't say that and listen first.".


I'm the author of the article. This is a very good comment; listening is to me the most important in any conversion, and can be the most difficult to do. I'll write about that. Thanks a lot!


Even more important that LISTENING to someone is actually COMPREHENDING what the other person is saying. Directly from the article:

"In short, try to keep your mind open. You might learn way more by really taking every idea into consideration. Notably if the colleague you argue with is an interested developer you trust."

"Don’t forget: recognizing that you’re wrong make you more humble and show the weak spots in your knowledge. As a result, it’s a good opportunity to learn."


> It involves thinking "This person I'm talking to could be at least partially right".

Or that they are wholly correct and I am wrong.

> about convincing someone I'm right.

Worth keeping in mind what one is trying to accomplish:

- do I want to convince (influence) the other person

- do I want to help find the best solution

- do I want to learn something

Regardless of mode, I think a critical skill / behavior is genuine curiosity.


Debating, the term, usually has that context. Sometimes I pivot to using dialectic since it better captures the intended meaning of finding and discovering a shared truth together.


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.)


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.


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.


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.


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.


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.


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.


You are never going to satisfy everybody, that's not a realistic goal. The more realistic goal is to choose battles that are winnable and with good RoI.


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.


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.


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.


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.


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.


  > 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.


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.


  > ... 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.


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.)


You have natural talent which becomes exponentially better with training. But a guy who struggles to even find words will be trounced by you 9 times out of 10. Regardless of who is right.

Interestingly those type of people will rarely venture on message boards, because this requires a lot of reading and writing and they would rather spend their time on other pursuits(maybe more visual?). Its interesting to imagine the section of viewpoints that dont even get represented at this level.


I doubt that has much to do with verbal IQ, though. When I was a kid I also had trouble finding words, so I made a lifelong habit of learning them. As a result it made me an excellent writer and reader, but still didn't improve my speaking.

If you're feeling verbally blocked it's probably more likely that your problem is some form of social anxiety. (That was mine.) If you become much more talkative when drunk, for instance, then the problem is inhibition.

You can meet plenty of garrulous people who can talk circles around you, but it doesn't mean they're necessarily bright.


I think that is partly because most debates are unfortunately laden with time pressure and performance pressure. Underneath all that distraction is an actual argument, that given the premises and valid reasoning, should stand the test of time. And if they don't have those, they won't. It's amazing how many arguments by "good debaters" start to fall apart and dissolve once given a second look.


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


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.


The prize for winning is several software developers.


I thought it meant putting the case to management that you need a bigger team


It would not be an art but a cult....


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.


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.


>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.


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?


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


Essentially you changed your weakly held strong opinion about strong opinions held weakly.

I like it!


I always interpret the "strong" part to mean "take ideas to their conclusion" or "don't do anything half-assed". I guess that's the beauty of these aphorisms: their validity is in the eye of the beholder.

I would argue it's possible to be serious about your convictions (i.e. take them to their conclusions), humble and open to being proven wrong.


Why do you think people look like fools when they change their mind based on evidence?

We never have all the information, so we create opinions based on the available information we have. You can do this without being arrogant.

To me, changing your mind when presented with new evidence shows humility.


I agree, I don't think anyone who changes their mind looks like a fool. But if you were humble before, you look great, and if you were (apparently) unreasonably confident, then you look good. The unfounded confidence adds little.


100% agree. Every time I've been unreasonably confident about something it has come back to bite me in the ass.


You're misinterpreting the adage.

I was doing martial arts in school, and my sensei had me demonstrate some forms. Being new, I was very hesitant.

He was annoyed at this and explained that when I kept hesitating, I didn't complete a motion fully. He couldn't see what I was trying to do because I wouldn't commit to it. Thus he couldn't show me what I was doing wrong and teach me the correct way to do it.

"Strong opinions weakly held" is trying to address the problem of not committing to a position. It can manifest as not fully expressing your ideas, or adding unnecessarily qualifiers to them, or not following them to their conclusions.

The consequences can be you don't fully advocate your position, or someone with a different idea isn't able to identify the weaknesses in your argument.

> If you have a strong opinion, you look like a fool if you change your mind when evidence is shown to you.

If you present your views as mush, you can also sound like a fool. If you're citing a standard and say, "the standard says this, but I'm not really sure I read it correctly," you don't sound humble, you sound like you can't read.

If, otoh, you simply cite the standard, then your colleague is clear on where you're coming from. So now he can object that implementations don't follow it; the discussion can advance.

I think the problem you're getting at is someone staking their reputation unnecessarily on their views. You're right: that's a mistake. I've been in an argument over a fairly subjective design decision where one guy got frustrated and said, "look, my 20 years working with databases says we do it this way."

To avoid that, the key is to be specific; "we tried that on project X and it worked / didn't work, and this is very similar." Now it's not your reputation at stake, you're simply giving a factual account of your experience.

And sometimes the matter really is subjective or the data isn't great. If that's the case, you want to be clear about that uncertainty, "we just don't know because our data is crap." Then it becomes clear the team needs to put more resources into getting better information.


On the other hand, if you're too strong about how you phrase your case, some people will take you at face value and assume "he seems pretty sure about this, he's probably right". A little hedging in how you phrase things gives other people an easier-to-take opening to raise counterpoints without feeling like they're getting into an actual argument.


I once worked with a guy who had strong opinions during code review and changed them often (usually after reading blog). I hated working with him.

With people who have strong opinions and stick to them you can at least learn their opinions and adapt or fight once. If they change every week, you have to fight or adapt constantly. Last week you need to use x syntax wherever possible, this week you must not use it. And big deal about difference each time.


> I once worked with a guy who had strong opinions during code review and changed them often (usually after reading blog). I hated working with him.

> With people who have strong opinions and stick to them you can at least learn their opinions and adapt or fight once. If they change every week, you have to fight or adapt constantly. Last week you need to use x syntax wherever possible, this week you must not use it. And big deal about difference each time.

If they are constantly changing their opinions back and forth based on whatever blog they read most recently, those aren't strong opinions weakly held. They're just weak opinions, strongly advocated (or strongly enforced, depending on your co-worker's authority).

Also, if they are privileging opinionated blog posts over the arguments of their colleagues, the solution is simple: start a blog.


Another reason for people trying too look overly confident is when they are overly exposed over a certain topic.

For example, if you have very narrow job titles and roles in a team ("he is our DevOps, she is our architect"...) everyone will have to defend their role, often trying to sound infallible.

If instead you make the whole team responsible for all team tasks, everyone will be more open to leveraging everyone else's suggestions.


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

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

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.


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.


> 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.


I hold the opposite view. Humans rarely make decisions based on valid deductive reasoning. Many argumentative methods that are technically fallacies are tremendously useful in practice (argument from authority is a good example) because we need to make a decision without the ability to actually develop a formal argument from the ground up. Rejecting heuristics will make decision making slow to a crawl.


Perhaps it's worth pointing out that the ability to name the individual fallacies, as is typical in introductory material on fallacies, is not a useful skill. Understanding the truth tables, the concepts of necessity and sufficiency, and perhaps a couple of other related concepts, are what actually matters when it comes to understanding the truth or falsehood of basic arguments.

The truth of this is probably apparent to anyone who has ever worked through a typical Philosophy 101 midterm. On the exam you apply your mind to spotting the problem or problems with an argument first, and then compare that problem to an index of goofy latin names for fallacies that you've perhaps memorized. Knowing the names of fallacies is only important to the people who care about the names of fallacies (a category that, strangely, does not include the philosophy professors administering these exams).


This is a very good point. I might write about that, I think it's fascinating. Thanks!


Do you have non-video links?


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.


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.


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.


> 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.


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;


There is a talk by an actor (IIRC) who worked as a football (soccer) referee, to learn not to take things personally: https://www.youtube.com/watch?v=LnJwH_PZXnM


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.


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


> 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


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.


That's what Slack is for.


So that's what I've been doing wrong.


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.


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.


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/


> 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.


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.


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


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.


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.


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.


> 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.


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).


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.


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.


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


Disagree efficiently over debating. Most software choices are reversible


"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.


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.


> 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.


Jokes and Poe-level parody don't work on HN.

(POSIX 'make' insists on tabs, I wonder what you'd make of that)


If you insist on "POSIX" anything, I ain't on your team, so we're good.


The rare Windows-only developer?


You generally don't have to care about maintaining "POSIX compatibility" even on non-Windows platforms, but if you are in the position where you have to, I don't want your job. Similarly, if your codebase is using tabs, I don't want your job.


I agree 100% with you, but transposing the words "spaces" and "tabs" in your text.


If you're unable to configure your editor and code formatter to work around this issue so that code is converted to your preferred format when you open a file and back to the company style when you commit it then the chance of you writing any useful code is exactly zero.


Converting from tabs to spaces is easy. But if you try to convert from spaces to tabs you may get a mixture because there is no requirement with spaces that the indentation is a multiple of anything. Code written using tabs is usually aligned differently.


But isn't that just a matter of using a formatter to ensure correct style in addition to tabs? If you are using tabs for indentation, your style guide probably does not, or at least should not, depend on how wide they are on the user's screen.


There can be no sweet catharsis without conflict about stuff that matters.


I rarely know what stupid format I’m using. Just let the editor do it’s magic! Granted I avoid indentation oriented languages that don’t start with H




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: