Code Renaissance is about building great teams and great software. By exploring best practices, team interactions, design, testing and related skills Code Renaissance strives to help you create the team and codebase that you've always wanted.

Disagreements are WONDERFUL

Call me weird but I love when my piers, people that I respect, disagree with me on technical issues. Here's why...

Assuming we're both professionals the most common outcomes are:

  1. I find out my logic is flawed and learn from it.
  2. They find out their logic is flawed and learn from it.
  3. We discover that each of us are being logical and reasonable but that we are in dispute about facts, priorities, or assumptions (which we will hopefully be able to resolve and learn from).
  4. We find our differences are a matter of deeply held belief and not wholly constrained by logic (think religion, politics or programming language preference). We understand each others views, agree to disagree and move on.

I don't like to leave a discussion without one of these things happening. To some people this can be taken as being pushy, and I guess it is, but what I really want is for them to push back. If you can show me where I'm wrong, I'm perfectly happy to admit it and I'll quickly become a vocal champion of your side of the argument. Even if we can't agree, each discussion either strengthens or changes our views about the subject and we come out of the discussion with a better understanding of what we believe and why.

All of this hinges on the assumption that both people act like professionals. Here are a few things you can do to help:

#1 - The moment things get a little heated tell them you respect them and why.

Obviously you don't have to do this every time, but the first time you push a discussion with someone this can help a lot. If you value them as a logical, intelligent human being then let them know it. This cuts down any defensiveness that comes from feelings that you're trying to make them look bad or don't respect their opinion. And if you don't respect their opinion, if you think their an idiot? Walk away. There's no reasoning with an idiot. If you're dealing with an idiot, I say again, just... walk... away.

#2 - Quickly admit to being wrong about any point they prove you're wrong on... even if it hurts.

The more points you can let go the more they'll be willing to do the same. If you want to be dogmatic or save face then become a public speaker or write a book (and by all means quit having conversations all together) otherwise be an adult, swallow your pride and admit when you're wrong.

#3 - Restate what they've said in your own words and point out any views you agree on.

This gives them the opportunity to correct anything you've misunderstood and gets them to concede the points you agree on. The more you can agree on the less heated the discussion will be.

#4 - When you're sure you understand them and they understand you then you need to let it go.

Even if you still disagree, even if it's tearing you up inside, you need to let it go.

Letting go is my biggest problem. If we can't agree or at least fully understand each others viewpoints then that says to me that either I haven't explained my view well enough or I haven't asked the proper questions to fully understand the other persons view.

I like to see my professional world in black and white. The bit is on or it's off. Everything needs to add up. And when things don't add up? My instinct is to press until they do. And every great once in a while I press when I should let go... profuse apologies, I am working on it.

Sadly, letting it go is not the problem for most people... it's having the discussion in the first place. Some people feel you're putting them down if you
disagree with them. I disagree. I take it as a great sign of respect.

By disagreeing with me and giving me a chance to respond you're saying you value my opinion and you're inviting me to share it with you. If you listen to me then you're conceding ever so slightly the possibility that you may be wrong. And if you patiently discuss the issue with me until I understand why I'm wrong then you're saying you think I'm worth the time it takes to do so. I know it's a different perspective than most people hold, but I think it's a better one.

Much of the problem stems from companies/schools/systems that punish errors, mistakes and lack of knowledge. Paradoxically these environments generate a sea of people who work wholeheartedly to hide their errors, mistakes and lack of knowledge. Fearful environments can never produce optimal people.

It's only in an environment of mutual respect that disagreements and open discussion can flourish. My advise is that you nurture such an environment with you're piers and refuse to shy away from conflict.

No Longer Under (much) Construction

Well revisions to the blog following previous loss of formatting are completed. I put off redoing it nearly a month but I finally caved in today and got to work. To be honest it's the first time I've really liked the way the blog looks since I started it.

FYI... I've started using CSS3 for some of the formatting so the site will look best in firefox and safari, which support everything I've done. The design isn't quite as nice in other browsers (IE versions don't show round corners) but I used the YUI css reset file and I've practiced graceful degradation so it should be pretty good, whatever your browser choice.

Sadly this is my first post for 2010... belated happy new year everyone! I guess it's way past time I got back to writing as well. I've been busy learning WPF lately and using Expression Blend for the design work so I'm sure that'll be the focus of at least a few posts.

Please leave a comment and let me know what you think of the revisions.
Thanks. (P.S. I still find myself tweaking the format and fine tuning cross browser, so pardon the minor layout problem in the interum).