Choices Rule (pt I)
Posted by Dan Byström on September 20, 2004
I will pick up the thread from where my previous blog ended, but not by continuing with more C++ or .NET. Last time, I tackled a problem in a somewhat disturbing way – by solving it according to familiar rules instead of a new and probably more interesting way. Not at all the usual me, I hope.
I’m not sure if you’re familiar with the concept of Choice-based vs. Rule-based people. It was a complete mindblower when I first read it some 15 years ago. It was pinned on our notice board at work so I kept going through it in my mind whenever I saw it. While the article text may take some time to settle, it will then, among other things, explain the strange fact that some people have absolutely no interest in knowing why (you know the "we have always done it in this way!" reply). You may also have wondered why your users don’t always jump up and down in excitement over your latest radical improvements of your software. I’ll refrain from extending this list of examples and from telling you about real life happenings although it’s tempting. Discover this on your own. The gentleman hosting this article has, by the way, done his own thinking. Someone taking the time to explain to people the beauty of Fibonacci numbers in nature may be worth reading.
Looking at my quotation of Jimmy Nilsson in my previous blog, you can immediately tell that he’s a choice-based person. In fact, all decent programmers MUST be, right?
I’ve been thinking long and hard about this topic and I’ve now begun to question that people can be divided into just being rule-based or choice-based. I’m convinced there is a whole spectrum in between. Not only that; I also think that the same person can behave differently depending on a given situation: being rule-based in some circumstances as well as choice-based in others. I’ll outline my reasoning in a later blog where I will argue that this spectrum can be written as a function of three variables ("personal abilities") for a given situation.
|In this world, there are two kinds of people:
Those who divide people into two categories and those who don’t.
It was once said to me that if a scientist and an engineer both walk a path and encounter a large boulder blocking their way, then the engineer will try to find a way around the boulder while the scientist will try to find a way through the boulder.
While not a striking analogy, it is still easy to understand. While my sympathies go to the scientist, I must confess myself to the engineering group. I have discovered that I actually work best under constraints – trying to find ways to bend them to my own advantage. That’s what most programmers are up to each day, I guess. We try to find ways around limitations like too little memory, too little screen estate, algorithms that won’t run fast enough and most of all, limitations in the tools and languages we use. The better we can bend these rules, the better programs we may write. That’s an engineer’s point of view. The scientist on the other hand is busy removing the constraints altogether.
Is it rule-based or choice-based to play by the given rules, when you come up with ingenious new solutions to trick your way around those constraints/rules?
(to be continued…)