Your browser doesn't seem to support CSS, which this page uses for all styling. Don't be surprised if it looks kinda boring.

[Jump to nav]

Cast

Let's put some players on the board. The concepts underlying Unix™ and those underlying Windows are diametric opposites, so they're natural foils in this discussion. I'm not going to go into details, except where necessary to illustrate a point. I'm not trying (in this rant, anyway) to convince you that Unix Is Better. I'm certainly not going to get into the constant religious wars between various flavors of Unix. I'm using Unix, not as an operating system, but as an approach to operating systems.

The essential differences

The differences between the Unix Philosophy and the Windows Philosophy are vast, of course. But a lot of them can be boiled down into a question of smarts, and that's what we're going to address here. Unix and Windows store the smarts in different places. Unix stores the smarts in the user; Windows stores the smarts in the OS. It seems a rather small and simple difference in and of itself, but the closer you look, the bigger it gets until it becomes an enormous rift.

From that seemingly simply dichotomy, huge parts of the philosophy of both naturally follow. Sooner or later, you realize that rather than being a small difference of positioning opinion, that simple distinction is in fact one of, if not the, core difference between the approaches to OS design.

Learning curves

Enter the concept of the “Learning Curve”. Most people have at least a basic grasp of the concept, but for those who don't, here's a quick summary.

The learning curve of (something) is a measurement of the rate at which you learn, or are required to learn, about it. A "steep" learning curve generally refers to something that requires a lot of initial learning. A "shallow" learning curve is exactly the opposite; a very gentle learning means, rather than a requirement for flash-cramming.

Armed with those definitions, it's fairly simple to then go ahead and say that Unix has an inherently steep learning curve, and Windows has a very shallow one. This isn't a new observation to much of anybody, but codifying it like this gives us a frame of reference.

To elaborate...

Windows

Our Microsoft brethren have taken the approach of making the shallowest possible learning curve. To take a cue from the fast food industry, Windows is the "under-3" toy of the OS world. The ultimate goal is to flat-out destroy any barrier to entry by removing any requirement for initial knowledge or learning of how and why, and of making the system simplistic enough that it can be used without any understanding of how it works.

Unix

The Unix crowd has taken the opposite approach. Unix has a steep learning curve; it doesn't shield the user from complexity; rather, it revels in the complexity. It recognizes that a general-purpose computer is a fiendishly complicated device capable of doing an unbelievable assortment of things. It recognizes that the computer is a tool of the user, and so takes a tool-building philosophy. Make a lot of tools, and make each tool specific, and let the user select the tool they think appropriate, and let the user combine the tools however they want. It's not aimed at making things easy; it's aimed at making things possible.

Are we there yet?

By now, these battle lines should sound familiar. At the risk of sounding partisan (which I am), I will stick my neck out and make the bold statement that the Unix crowd understands the Windows crowd far better than the Windows crowd understands the Unix crowd. And I don't think that's any big stretch; look at the base philosophies. The Unix philosophy is based around thorough understanding; the Windows philosophy is based around thorough simplicity. Both sides look down on the other, of course; both believe the other is inferior. But the Unix side strives to deepen, while the Windows side strives to shallowen (I'm well aware that 'shallowen' isn't a word. It should be.)

OK, so where is 'there', anyway?

Now, let's look at the effects of this difference in learning curves. There are two main effects; one of them psychological, on the user, one of them technological, on the system.

  1. Windows Causes Stupidity?
  2. Learning Curves
  3. Learning Curves :: User Effects
  4. Learning Curves :: System Effects
  5. Why It Matters