There are two ways of giving recommendations on technical issues:
(a) To say that something is “good” or that something is “bad”.
(b) To list Pros and Cons, or else Advantages and Limitations.
The most popular, and natural way is just to say what’s good, or often, what’s best. In my opinion Linux servers are better than Windows servers; I’m ascribing goodness to Linux servers.
But I’ve noticed that more mature Computer Scientists seem to talk about advantages and limitations. My first memory of this came in my Comp 243 “Distributed Systems” class at UNC-CH. F. Don Smith was the professor. It was 2001. We was talking about network file systems. He introduced the section on the Sprite file system saying that it was one of the most interesting. Then he talked about it, and at the end of the section I asked: “Why is it that you say this is the best?” (*)
He corrected my question: “I didn’t say that this was the best — only that it was the most interesting.”
My error took a few years to soak in. I was accustomed to thinking about goodness and badness of technical matters. But Don didn’t use those terms. In his classes, he only talked about features, limitations, and therefore advantages.
It’s human tendency to say that something we don’t like is bad. In a technical context, what we usually mean is that I don’t think that will work.
There’s something funny going on here; goodness and badness in this way exist in a total ordering. In my example above, Linux servers are closer to good than Windows servers are. If I had to add Solaris servers to the mix, I might put it somewhere between the two, but certainly closer to Linux servers.
But what if I need features that only the Solaris LVM offers? Is the “goodness” of Linux enough to outweigh my need for the Solaris LVM?
Goodness is only one dimension. In reality, technical decisions should be based on factors like features and constraints. Maybe Solaris’s LVM does something I need, but perhaps I need much more expensive hardware. The cost of the hardware is a constraint, while the LVM is a feature.
The advantages and limitations of Solaris, Linux, and Windows servers for any one application can be listed. But, ultimately, a recommendation has to be made. What server type fits the application the best?
So all the complicated evaluation of advantages and limitations has to be projected onto a single-dimensional line: fitness.
Is fitness the same as goodness?
(*) All quotations are approximated, and based on my memory. They’re not guaranteed to be word-for-word exact.