The subject of this journal entry is the argument of "worse is better" vs. "the right thing." An article about the subject written by Richard P. Gabriel who coined the former term can be found here.
The "right thing" philosophy of software design, also known as the MIT/Stanford style, emphasizes simplicity of interface, absolute correctness, complete consistency, and as much completeness as possible.
In contrast, the "worse is better" philosophy emphasizes simplicity of implementation, and allows the other ideals to be compromised slightly in order to achieve this.
As the article goes on, there are many arguments for and against each design philosophy. Who can say which is really better?
I'm a "right thing" sort of person. I want to be able to quickly get a mental picture of what's going on in the software at a glance. I want to be able to easily pick up where someone left off.
On the other hand, I don't like it when low-level information is hidden from me. It is easier to show low-level information in "worse is better" implementations than those in "right thing" implementations, but this doesn't mean it can't be done. For example, if packets are colliding on my local network, I like to see the little red LED light up on the switch, but I don't want scrolling logs filling up my screen. When I'm burning a CD, I like to see the bar graph indicating how much is done another indicating how full the CDR's buffer is without seeing something like "x of y blocks transferred". I believe there's always a way to show low-level information on a "right thing" implementation. It's just that sometimes it takes some extra design work to come up with the answer.
The traditional UNIX style is "worse is better." MacOS (including OSX) and BeOS are "the right thing." Windows doesn't seem to be polarized to one end or the other.
Most of the programmers on my team are a "worse is better" lot. I'm a "right thing" person myself. I'm growing increasingly intolerant of (what I perceive to be) bad code.
The whole philosophy doesn't apply only to programming. It applies to the design of everyday things. Do you prefer a stick (worse is better) or automatic transmission (right thing)? A VCR (worse is better) or a TiVo (right thing)?
What style of person are you?