Friday, December 17, 2004

Words: Helpful tool or spawn of Satan?

Ah, words. Can't communicate with 'em, can't communicate without 'em. Unfortunately, it's really not possible to separate words from the culture of the person using them. If the person or group you're communicating with has strong experiences that are associated with that word, communication just got a lot tougher, unless the experiences are ones that you share.

Take interfaces, for example, and the backlash over my "Java is not Python" article, wherein I praised the Java community tendency to look for a common specification to support diverse implementations. A lot of people apparently have had bad experiences with certain Java specifications, and therefore concluded that I was promoting something bad, regardless of whether we were even talking about the same things.

Indeed, sometimes people's experiences with a word can so color their interpretation that they can end up projecting all kinds of things that you not only didn't say, but that you never would have said, because they're quite the opposite of your opinion!

Of course, that might make it sound like it's the "other guy's problem", even though it's not. I'm well aware that I often leave out things that seem obvious to me, but which are not at all obvious to others. In real-time conversations, therefore, I'll ask if somebody has heard of X or Y, so that I can use that as shorthand, a reference point to talk about something. Unfortunately, this greatly increases the number of words I'm using, and therefore greatly increases the potential that I'll mention something the person has had a bad experience with. Indeed, just the very fact that I've mentioned a bunch of different things that somebody hasn't heard of, can itself become a "red flag" or "hot button", triggering negative reactions. Oops.

There was a point in my personal and professional development, therefore, where I undertook to always blanket my statements with disclaimers, qualifiers, and tedious explanations of the implications of everything I said or wrote. Unfortunately, this approach is very tedious, not just for me, but for whatever poor soul was listening to me or reading what I wrote. So, at some point, I decided to just relax about it, except for when I'm specifically aware I'm saying something that could be "taken the wrong way." Alas, this still leaves a ton of room for me being "taken the wrong way", and still not even knowing that it's happening until much later.

Today, however, I got lucky, as a couple of people on the team actually voiced the issues they were having, and in at least one of the discussions, we were able to move past them and make some real forward progress. No, I don't advocate standards in a context-insensitive fashion. No, I don't think that development should stop to rewrite an existing codebase -- in fact I agree with Joel Spolsky that this is one of the stupidest things a company can do.

Indeed, this is the very essence of my blind spot. These things seem so obviously, so blatantly stupid to me that it never occurred to me to think that somebody could possibly think that I would advocate them! I mean, if I met somebody who seemed intelligent, and the only interpretation that I could put on their words or actions was something that didn't make sense to me, my first response is to wonder what it is that I don't know about their situation, or that I have misunderstood about what they said.

And in fact, I've been doing that quite a lot the last couple of days. I've been asking folks (in effect), "Is this a brick on a pencil? Or is it really a very compact copying machine? What is it that I don't understand about why you're doing this?" What I haven't been saying as much (because I thought it was obvious) is, "Look, you're all very intelligent people, so I assume that there must be a good reason for this particular decision. But I don't understand what it is, because based on what I know about your requirements and the available options, I would not have made the same decision. I don't think that means your decision is wrong, it means there is something I don't know, and I need to find out what it is, so that we don't have needless conflict in the future over similar decisions."

And it may be (as I found out today in a couple of conversations), that the only difference is that I knew about an option that they didn't know about at the time the decision was made. And, if I didn't know about that option, I would have done exactly the same thing that they did. So, problem solved -- or at least, the problem that I had. (Alas, I don't know yet what it's going to take to solve the problems that they ended up having with me.)

The lesson -- I think -- I hope -- is that candor works, at least if everybody believes in having it. While today's discussions were much more of a challenge, the fact that people levelled with me about their concerns made it possible for me to address them, and (hopefully) get past them. Of course, that may just be saying that with enough candor on the other guy's part, you can overcome whatever fallout may have been caused by your own candor! :)

But the fundamental issue for me is still a "do unto others" thing. To me, if somebody doesn't tell me about a problem they have with me, it means they don't believe that telling me will do any good. They've concluded that I am either unwilling or unable to do something about the issue, meaning I'm either a jerk or incompetent. :) (Or perhaps that the issue is not important enough to bother me about, which I can also understand.)

So, anyway, unless I think somebody else is a jerk or incompetent, I'm not going to avoid bringing up an issue -- assuming, again, that the issue isn't so minor as not to be worth bothering with. The tricky part of all this, as with all "Golden Rule" implementations is, what if the other person has a different set of values about this policy? I mean, am I acting like a masochist who decides that the Golden Rule means he should beat people up, because that's what he'd like done to him?

And I can certainly empathize with that view. After all, getting told about a problem somebody has with me isn't exactly a painless way to spend an afternoon. Then again, neither is dental work, but it sure beats the alternative of letting a tooth -- or an issue -- fester and rot indefinitely.