This is something I’ve been wondering about for a long time. Programming is an activity that makes you face your own fallibility all the time. You write some code, compile it or run it, and then 80% of the time, it doesn’t work exactly the way you imagined. There’s an error message, or it just behaves incorrectly. Then you need to iterate on it and fix the issues until you get the desired result, and even then it’s subtly wrong, and causes an outage at 3am on Sunday.

I thought this experience would teach programmers to be the humblest people in the world.

I can’t believe how wrong I was. Programmers can be the most arrogant dickheads you will ever meet. Why is that?

    • zalack@kbin.social
      link
      fedilink
      arrow-up
      8
      ·
      edit-2
      1 year ago

      I’ve seen variations of this opinion a lot in tech, but you don’t have to sacrifice frank feedback to be a little more polite. Like sure “this code is dumb” is better than “you are dumb”, but not as good as “this could be more efficient if we did y instead”

      The latter is more helpful and less confrontational. The best devs I’ve worked with have been excited about code, and that came through in review. When they saw something that was wrong their feedback came across as excited to share rather than affronted by ignorance.

      The thing devs don’t like to admit is that a ton of stuff we argue about is more taste than science. There’s no right answer to the classic performance vs readability thing, or where exactly the line is for effort vs payoff. Couching feedback around things like that a opinion often makes people way more receptive to it. “Hey I’d prefer if we did it this way” often goes a long way, IMO.

    • JackbyDev@programming.dev
      link
      fedilink
      English
      arrow-up
      5
      ·
      1 year ago

      I totally disagree with a lot of this and encourage you to rethink how you communicate with peers.

      Human emotions don’t belong in software development. Code doesn’t care about your feelings so neither do senior devs.

      There is a major difference in the following statements:

      > This code is dumb

      > You are dumb

      The former has nothing to do with you, even if you wrote the code. The code would still be dumb if someone else, even me, wrote it. Too many people take criticism of code as personal attacks – human emotions do not belong in software development, facts and logic do.

      Calling something someone made dumb is mean. Believe me, I totally get where you’re coming from and wish I could separate the emotional aspect from it but it’s just not possible. Humans are emotional beings. We make decisions based on emotions and use logic to explain them. You can’t just say something that someone made is dumb and expect it to not hurt their feelings because it “would still be dumb if someone else, even [you], wrote it.”

      It is possible to critique code respectfully without losing anything. I realize you’re likely simplifying for the sake of discussion, but consider these examples, which would you rather be told?

      • This is an amateur mistake, don’t do this. It is done properly here.
      • It is easy to make this mistake, I have made a similar mistake before, here is how to solve it correctly.

      These both convey the same message (the code is wrong and how to solve it) but one is polite. The first one is in the gray area and I choose it for that reason. It may very well be true that it is a mistake that amateurs make but saying someone made and “amateur mistake” can be degrading.

      People view rude words about their works as rude works about themselves and any appeal to logic will not change that. Just say what you would say but be more polite about it.

    • 𝕊𝕚𝕤𝕪𝕡𝕙𝕖𝕒𝕟@programming.devOP
      link
      fedilink
      English
      arrow-up
      4
      ·
      edit-2
      1 year ago

      I actually welcome constructive criticism, and the brand of arrogance I’m so frustrated with is when people dismiss ideas or arguments without offering valid counterarguments. Or maybe when they take the worst possible interpretation of what someone says (see example above) and argue against that. Maybe my original post wasn’t clear enough.

      While it’s true that separating emotions from the work itself and learning to accept justified criticism is important, even crucial, this fact doesn’t give free license to the people giving the criticism to be rude. Your comment seems to imply that what I perceive as arrogance is often justified when “senior devs” are defending their solutions based on their experience. But arrogance != conviction or confidence. Confidence paired with humility allows for open-mindedness, and creates a better environment for everyone involved. It encourages sharing and discussing ideas.

      You also state that human emotions don’t belong in software development, then proceed to write a long rant that reeks of condescension, dismissiveness, annoyance, frustration and a feeling of superiority. Your comment is by no means neutral and analytical, it just displays emotions you feel are justified, while those felt by others are not. It’s hard not to conclude that you are exactly the type of person my original post is about.

        • Jose J. Fernández@programming.dev
          link
          fedilink
          English
          arrow-up
          2
          ·
          edit-2
          1 year ago

          I think what you are saying is technically correct, but it fails to acknowledge the importance of human emotions. Emotions are involved in everything humans do, and since software is written by humans for now, the act of developing software also involves emotions.

          This does not mean that it should be a emotion-driven discipline or that emotional arguments should be weighted more than other kind of arguments. It just means that everyone will deal with human emotions while developing software, both their own and others’. We can of course manage our own emotions as we wish, but then the question is how do we act on regard of others’.

          My main thought here is that disregarding how others feel about your actions rarely helps anyone. When collaborating with others, we usually aim for getting the most out of that collaboration. That is only achievable if the other person feels safe and welcome. Maybe writing some harsh comments in a code review is not the best way to do that.

          Next thing that needs consideration is that we are all different, and what for one is a small gesture, for other might be offensive. You don’t know everyone else’s personal history, background or experiences, so you don’t know what can negatively affect them. This needs to be acknowledged, particularly when working in heterogeneous groups (ie, people from other cultures). You can ignore this fact, but it will negatively affect the collaboration.

          As with everything else, people can become better at communication and collaborating with others, and still be able to defend your points without being aggresive.

          Why don’t they, then? My first guess would be that this is seen as irrelevant. This is how I do things, how we do things in this industry, learn to deal with it. I don’t think that is a good approach. It does not harm your engineering skills nor the product of your work to be kind to others. On the opposite, it makes their lifes easier. I don’t see a reason why we shouldn’t strive to do that.