As developers, we consider ourselves to be logical thinkers. And to an extent, we are able to think logically, to find and implement technical solutions.
But is our decisionmaking driven by cool reason? Yes, we say — by cool reason.
What about when we communicate our evaluation of a Microsoft tool to co-workers? Cool reason?
The fact is, many of the decisions we make as developers are made based on emotional arguments couched in technical terminology. Reading a post by Jerry Weinberg several months back brought on an Aha! moment that changed my thinking about us developers.
From Mr. Weinberg’s post titled Reasons, then:
Recently, I found myself recalling that summer day, half-a-century ago, when a client asked me to find out why their Software Engineering Process Group was having so much trouble getting people to adopt new software tools. It couldn’t be the tools themselves, they reasoned, because quite a few people had adopted them and liked them. So, I set out to interview both adopters and rejecters, to discover the reasons some were using the tools and some were not. Here are some of the answers I obtained:
Darlene: I installed it because the boss told me to use it.
Porter: The boss told me to use it, so I didn’t use it.
Ursula: I installed it because the boss forced me to use it.
Marcy: The boss forced me to use it, so I installed it, but I don’t use it. He wouldn’t know the difference.
Quentin: I used it because it was like what I used before, so I knew I wouldn’t have any trouble adapting to it.
Chuck: Why should I use it? It’s nothing new; it’s just like what I used before.
Carl: Hey, I used it right away, because it was new and different.
Cynthia: I’m not going to use anything that’s new and different. Too many things aren’t tested, and something’s sure to go wrong.
Mary: Of course I used it. Everyone else was using it.
Roy: Everyone else was using it – what a bore! You won’t catch me following the crowd.
Frances: Why should I use it? Nobody else was.
Edgar: Hey, I got to be the first one to use it!
Mort: I couldn’t use it. It didn’t do all the things I needed.
Alan: The thing I liked best about this tool was that it didn’t try to be a Swiss army knife and do everything anyone could possibly want.
Gerri: It was the perfect tool, because it had every feature I could possibly want.
Chico: Every time I hit a key by accident, it would invoke some obscure feature that I didn’t want in there in the first place. Finally, I trashed the whole thing.
Orion: I’m so busy, I needed a new tool to save me some time.
Belle: I’m so busy, I don’t have time to install and learn a new tool.
May: I’m not that heavily loaded. Why would I need a time-saving tool?
Paul: Well, I wasn’t so busy with other things, so I had time to install and learn a new tool.
Earl: It was freeware, so it was a bargain.
Justine: It was shareware, so it couldn’t have been any good.
Jacob: This tool costs $3,000. It must be good, so I’m using it.
Neelie: I’m saving the company $3,000 by not using it.
Willis: I won’t use it because I don’t like the way Microsoft makes software.
Samuel: I knew it would be good because Microsoft makes it.
Well, there were more, many more, but that’s enough of the infinite reasons to make my point. By this time, you may have noticed that I have arranged these reasons in pairs. Why? So you could see the pattern that I saw:
Every single reason to use the tool was matched by the same reason for not using it – and vice versa!
In other words, these reasons may look like logic, but they’re not logic – they’re just reasons. In logic, the reasoning comes first, then comes the decision. But in real life, it’s usually the other way around – first we make the decision, then we make up whatever reasons we need to “justify” the decision and make it look like logic…
Going back to the Microsoft example again, when the Microsoft tool blows up, do we have cursings at the ready? If so, would we have had similar cursings at the ready if it had been our favorite open source tool that blew up? If not, why not? Are we of a mind to be understanding toward our open source tool and impatient with our Microsoft tool? (The question has the same implications if we reverse the inclinations — positing a tendency for patience toward the Microsoft tool and impatience toward the open source tool.)
What I have described is not a logical argument about a tool. It is an emotional argument about a company. Perhaps there is an argument to be made against the company (“Where possible I do not support Microsoft because of its history of corrupt business practices regarding smaller innovators in the market” would be an example of a moral argument.) Cloaking such a moral argument as a technical argument against a particular tool, however, is not honest. As developers, we don’t even realize we’re doing this, but we need to realize it. It’s part of being a professional.
Read Weinberg’s whole article.